89 Validación de Fecha y Hora de Reserva de Citas Medicas de Sistema con LARAVEL(PHP-MySql)FullStack

Duración: 10 min
Módulo: 🗓️ Reserva de Citas y FullCalendar Lección 4 de 14

Descripción

🛡️ ⏱️ Lección 89: Validación de Fecha y Hora de Reserva de Citas

Esta lección aborda la implementación de validaciones en el lado del cliente (frontend) utilizando JavaScript para evitar que los usuarios registren citas con fechas y horas no válidas o "basura", un problema identificado en el capítulo anterior.

1. 📅 Validación de Fechas Pasadas (JavaScript)

Se implementa una validación para asegurar que los usuarios solo puedan reservar citas para la fecha actual o futuras.

  • Identificación del Campo: Se añade el ID fecha_reserva al input de fecha [01:05].
  • Lógica de Validación: Se utiliza un script de JavaScript que compara la fecha seleccionada con la fecha actual del sistema. Si la fecha seleccionada es anterior (< new Date()), se lanza una alerta y se limpia el campo [01:21]:
    • Si se intenta seleccionar una fecha pasada, aparece el mensaje: "No se puede reservar en una fecha pasada" [02:21].
  • Valor por Defecto: Para mejorar la experiencia, se configura el campo para que muestre la fecha actual por defecto al abrir el modal [03:09].

2. ⏰ Validación de Horario Mínimo y Máximo (JavaScript)

Se valida que la hora de reserva esté dentro de los límites de atención establecidos por la clínica (de 8:00 AM a 8:00 PM).

  • Identificación del Campo: Se añade el ID hora_reserva al input de hora [04:52].
  • Lógica de Redondeo: El script de JavaScript redondea automáticamente los minutos a cero (ej. 12:09 se convierte en 12:00) para manejar intervalos de reserva exactos de una hora [05:35].
  • Validación de Rango: El código verifica que la hora seleccionada esté entre las 08:00 y las 20:00 horas. Si se intenta seleccionar una hora fuera de este rango (ej. 3:00 AM), se muestra un mensaje: "Por favor seleccione una hora que esté entre las 8 hasta las 8 de la noche" [06:40].

3. ⚠️ Tarea Pendiente: Prevención de Duplicidad

Aunque las validaciones de frontend funcionan, el sistema aún presenta una vulnerabilidad crítica que debe resolverse en el backend (controlador):

  • El Problema: El sistema permite registrar dos o más citas con el mismo doctor, en la misma fecha y a la misma hora [09:22].
  • Solución Futura: La validación para evitar la duplicidad de citas debe realizarse en el EventController (función store), donde se debe consultar la base de datos para confirmar que el slot de tiempo elegido ya no esté reservado antes de guardar [10:00].