88 Guardar Cita Medica en la Base de Datos de Sistema con LARAVEL(PHP-MySql) FullStack
Duración: 15 minDescripción
💾✨ Lección 88: Almacenamiento de Citas Médicas en la Base de Datos
Esta lección se centra en la implementación del controlador y la lógica necesaria para recibir los datos del formulario modal y registrarlos como un evento de reserva en la tabla events de la base de datos de Laravel, preparando el sistema para la validación de disponibilidad.
1. ⚙️ Configuración del Formulario y Rutas
Se prepara la vista y la estructura de rutas para enviar los datos de la cita al backend.
- Envoltura del Modal: Se envuelve todo el contenido del modal de registro de citas dentro de una etiqueta <form> [01:36].
- Método y Token: Se define el método de envío como POST y se incluye el token de seguridad de Laravel (@csrf) [02:00].
- Nombres de Campos: Se asignan los atributos name a los campos del formulario (doctor_id, fecha_reserva, hora_reserva) para que los datos sean accesibles en el controlador [04:45].
- Ruta de Registro: Se crea una nueva ruta de tipo POST llamada admin/eventos/create que apunta a la función store del EventController [02:43].
- Tipo de Botón: El botón "Registrar" del modal se define como type="submit" para activar el envío del formulario [04:05].
2. 📝 Lógica del Controlador EventController@store
Se implementa la lógica en el controlador para recibir y guardar la nueva reserva.
- Captura de Doctor: Utilizando el doctor_id recibido, se consulta el modelo Doctor para obtener toda la información del doctor (nombre, especialidad, etc.) [07:14].
- Instanciación y Asignación de Valores: Se crea una nueva instancia del modelo Event para almacenar los datos:
- Título (title): Se concatena la hora de reserva (hora_reserva) con la especialidad del doctor (ej. "08:00 Pediatría"). Este será el texto visible en el calendario [08:30].
- Inicio (start): Combina la fecha y la hora de reserva (fecha_reserva + hora_reserva).
- Fin (end): Temporalmente se usa la misma fecha de inicio.
- Color (color): Se asigna un código hexadecimal por defecto (#ff6666) para representar las citas reservadas [09:47].
- ID de Usuario (user_id): Se obtiene el ID del usuario actualmente autenticado utilizando la facade Auth [10:09].
- ID de Doctor (doctor_id): Se toma directamente del request del formulario [10:55].
- ID de Consultorio (consultorio_id): Se deja pendiente, ya que se deduce de la relación del doctor [11:05].
- Guardado y Redirección: El evento se guarda con éxito ($event->save()) [11:29], y el usuario es redirigido a la ruta admin.index con un mensaje de éxito [11:40].
3. ⚠️ El Problema de la Validación (Próximo Tema)
Se identifica el problema principal del sistema tal como está: el registro actual no incluye ninguna validación, lo que permite el registro de datos no válidos ("información basura") [13:54].
- El sistema permite reservar citas en fechas pasadas.
- El sistema permite reservar citas fuera del horario de atención del doctor (ej. 3:00 AM).
- El sistema permite reservar citas en el mismo slot de tiempo que ya está ocupado por otra cita, generando duplicidad.
El próximo capítulo se centrará en la implementación de la lógica de validación estricta para evitar estos errores [15:15].
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! ❤️