90 Validación de Cita Medica en la Base de Datos de Sistema con LARAVEL(PHP-MySql) FullStack Parte 1
Duración: 14 minDescripción
📅❌ Lección 90: Validación de Citas Médicas contra Horarios del Doctor (Parte 1)
Esta lección aborda la implementación de la primera capa de validación en el lado del servidor (controlador) para evitar que los usuarios reserven citas con un doctor en días u horas en los que el médico no está disponible según sus horarios registrados.
1. 🛑 El Problema de la No Disponibilidad
A pesar de las validaciones de frontend (fechas pasadas y horario general), el sistema seguía permitiendo registrar citas en días u horas en los que el doctor seleccionado no está programado para atender (ej. un doctor que solo trabaja los lunes y miércoles, pero se reserva una cita para el martes) [00:33].
2. 🛡️ Implementación de la Validación en el EventController
Se añade una consulta estricta dentro de la función store del EventController para verificar la disponibilidad del doctor antes de guardar la cita [01:44].
A. Preparación de Datos
- Validación de Requeridos: Se utiliza Request::validate para asegurar que los campos fecha_reserva y hora_reserva no estén vacíos [02:12].
- Recuperación de Variables: Se obtienen el objeto completo del doctor seleccionado y se separan la fecha y la hora de reserva en variables independientes para facilitar la consulta [02:50].
B. Consulta de Disponibilidad en la Tabla horarios
La lógica principal realiza una consulta al modelo Horario para verificar si existe un registro que cumpla con todas las siguientes condiciones [03:49]:
- Doctor ID: El doctor_id del horario debe coincidir con el doctor seleccionado por el usuario [04:21].
- Día de la Semana: El campo dia del horario (ej. 'Lunes') debe coincidir con el día de la semana extraído de la fecha de reserva proporcionada por el usuario [05:01].
- Hora de Inicio (Rango): La hora_inicio del horario debe ser menor o igual a la hora de reserva del usuario [06:25].
- Hora Fin (Rango): La hora_fin del horario debe ser mayor o igual a la hora de reserva del usuario [07:34].
C. Manejo de Errores
- Si la consulta a Horario no encuentra un registro que cumpla con todas las condiciones (es decir, el doctor no está disponible en ese slot), el sistema lanza una excepción de validación [08:14].
- El mensaje de error retornado al usuario es: "El doctor no está disponible en ese horario" [09:24].
3. ➡️ Próximo Paso
A pesar de esta validación exitosa, queda pendiente la validación más crítica: evitar la duplicidad de citas. En el siguiente capítulo, se implementará la lógica para asegurar que, aunque el doctor esté disponible, ese slot de tiempo no haya sido ya reservado por otro paciente en la tabla events [14:19].
Lecciones
Apoya este proyecto
Si te gusta nuestro contenido, ¡apóyanos con una donación!
Donar por Airtm Donar por Binance¡Gracias por tu apoyo! ❤️