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

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

Descripción

💻🗓️ Lección 61: Asignación Automática de Horarios de Doctores (Backend con Laravel)

Esta lección cubre la implementación del código backend (PHP/Laravel) para enlazar la base de datos con el calendario de atención. El objetivo principal es mostrar automáticamente los horarios de los doctores, haciendo el sistema eficiente al evitar múltiples consultas innecesarias.

⚙️ 1. Preparación y Estructura del Código

El proceso comienza eliminando el código manual del frontend para generar el calendario de forma dinámica, lo cual es la clave para la automatización [02:01].

  • Variables Fundamentales: Se definen dos arrays principales en PHP para la lógica del calendario [02:28]:
    • $horas: Contiene los rangos de tiempo de atención (e.g., '08:00 - 09:00', '09:00 - 10:00').
    • $dias_semana: Contiene los días de la semana (Lunes a Domingo) para las columnas.

⏱️ 2. Generación Dinámica de Filas y Columnas

Se utiliza un bucle para construir el calendario hora por hora y día por día, asegurando que cada celda tenga la oportunidad de mostrar un doctor asignado.

  • Bucle de Horas (Filas): Un bucle @foreach itera sobre el array $horas para crear las filas (<tr>) y mostrar el rango horario en la primera celda [06:17].
  • Preparación del Intervalo: Dentro de este bucle, se usa la función explode para separar el rango de la hora actual (08:00 - 09:00) en dos variables: $hora_inicio y $hora_fin. Esto es crucial para la consulta de intervalo posterior [10:22].
  • Bucle de Días (Columnas): Se anida otro @foreach que recorre el array $dias_semana, generando las celdas de la tabla para cada día [11:19].

📋 3. Lógica de Consulta y Asignación (El Corazón del Sistema)

El sistema consulta la base de datos (almacenada en la variable $horarios) dentro de los bucles para determinar qué doctor está asignado a la hora y día específicos.

El código utiliza una declaración if con tres condiciones para la validación de un intervalo de tiempo y día [13:22]:

  1. Validación de Día: if ($horario->dia == $dia)
    • Asegura que la asignación de la base de datos coincida con el día de la semana actual.
  2. Validación de Hora de Inicio: $hora_inicio >= $horario->hora_inicio
    • Verifica que la hora de inicio de la celda actual sea mayor o igual a la hora de inicio registrada del doctor.
  3. Validación de Hora de Fin: $hora_fin <= $horario->hora_fin
    • Verifica que la hora de fin de la celda actual sea menor o igual a la hora de fin registrada del doctor.

Si las tres condiciones se cumplen, se asigna el nombre completo del doctor a la celda [15:33].

✅ 4. Resultado y Pruebas Exitosas

La variable con el nombre del doctor se imprime en la celda correspondiente (<td>) [16:17].

  • Concatenación de Nombre: Se añade una mejora para mostrar el nombre completo del doctor, incluyendo nombres y apellidos, a partir de la información de la base de datos [18:57].
  • Demostración: El sistema valida correctamente las nuevas asignaciones, mostrando las citas registradas en los intervalos correctos del calendario [18:17].

💡 Consejo para la próxima lección: El siguiente paso será la validación del sistema para evitar el choque de horarios entre doctores [20:25].