62 Validación de horarios para la Atención de Doctores en el sistema con LARAVEL(PHP-MySql)FullStack

Duración: 10 min
Módulo: ⏰ Horarios y Lógica de Disponibilidad Lección 3 de 11

Descripción

🛑🛡️ Lección 62: Validación para Evitar Choque de Horarios (Laravel Backend)

Esta lección se enfoca en la implementación de una validación crucial en el backend para asegurar que dos doctores nunca puedan ocupar el mismo consultorio en el mismo día y hora, eliminando la duplicidad de datos en el sistema.

📝 1. El Problema de la Duplicidad

El video comienza mostrando un ejemplo donde el sistema permite registrar horarios superpuestos [05:05].

  • ⚠️ Escenario de Riesgo: El Dr. Nicole tiene un horario registrado el lunes de 8:00 a 13:00. Si el Dr. Florencio intenta registrarse el mismo lunes de 8:00 a 10:00 en el mismo consultorio, el sistema lo acepta, lo que lleva a un conflicto de horarios [05:15].
  • 🎯 El Objetivo: La validación debe evitar que cualquier nuevo registro se superponga con horarios ya existentes en el mismo día y consultorio, arrojando un mensaje de error claro [05:36].

🛠️ 2. Implementación de la Lógica de Validación

La solución se implementa en el controlador (admin/HorariosController) del método store, reemplazando la validación básica por una lógica más compleja que consulta la base de datos [06:10].

  • 🔗 Conexión a Base de Datos: Se mantiene la validación de los campos básicos (consultorio, dia, hora_inicio, hora_fin), pero se añaden consultas para verificar si ya existe un horario con el mismo consultorio y día [06:36].
  • 🔎 Consulta de Superposición: La validación avanzada busca registros donde se cumpla la superposición de intervalos de tiempo. Se verifica que el nuevo horario propuesto no se encuentre dentro de un horario ya registrado ni lo abarque [06:43].

🛑 3. Mensaje de Error y Resultado Final

Si la lógica de superposición detecta un conflicto, el sistema detiene el registro y muestra un mensaje al usuario.

  • 🚫 Respuesta del Sistema: Si se detecta una superposición, se devuelve un mensaje de error específico: "Ya existe un horario que se superpone con el horario ingresado" [06:50].
  • ✅ Pruebas Exitosas: Al intentar registrar un horario que ya está ocupado (por ejemplo, el martes a las 17:00), el sistema bloquea el registro con éxito, demostrando que la lógica de intervalo está funcionando correctamente en base al consultorio y el día [08:43].

💡 Próximo Paso: En el siguiente capítulo, se buscará mostrar el calendario de horarios disponibles en el mismo formulario de registro para que el usuario sepa qué horarios están libres antes de intentar registrar [09:26].