95 Listado de Reservas de Citas Medicas en el Calendario del Sistema con LARAVEL(PHP-MySql) FullStack
Duración: 21 minDescripción
📑 👤 Lección 95: Historial de Reservas de Citas por Usuario
Esta lección se enfoca en crear una vista de historial o listado que permite al usuario autenticado visualizar todas las citas médicas que ha reservado, organizadas en una tabla para facilitar su revisión y futuras acciones.
1. 🎨 Ajuste Inicial: Formato del Calendario
Antes de crear el historial, se realiza una corrección estética en el FullCalendar para asegurar que los eventos se muestren con el formato de fecha correcto, sin duplicidad de la hora.
- Problema: Al utilizar el campo start (que contiene fecha y hora) para el start y end del evento, el calendario seguía mostrando la hora del evento en el título.
- Solución: En el AdminController (dentro del método que devuelve los eventos), se utiliza la librería Carbon y la función DB::raw() en la consulta SQL para seleccionar y formatear los campos start y end directamente como solo la fecha (YYYY-MM-DD). Esto corrige la visualización del calendario [01:45].
2. 🖱️ Creación del Botón y la Ruta
Se añade un nuevo botón en la vista principal para acceder al historial y se configura la infraestructura necesaria en Laravel.
- Botón de Acceso: Se añade un botón de tipo <a> con la clase btn btn-success y un ícono de calendario (bi-calendar) llamado "Ver las Reservas" junto al botón de reserva de citas [03:20].
- Ruta: Se crea una nueva ruta admin/ver-reservas/{id} en web.php [05:56]. El parámetro {id} es esencial para filtrar las reservas por usuario.
- Vista: Se crea la vista ver-reservas.blade.php dentro del directorio admin [05:11].
- Envío del ID: El botón se configura para enviar el ID del usuario autenticado a la ruta, utilizando Auth::user()->id [11:09].
3. 🔎 Lógica del Listado (Controlador)
Se implementa la función en el AdminController para buscar las reservas asociadas al usuario que ha iniciado sesión.
- Función verReservas(): Recibe el $id del usuario como parámetro [07:39].
Consulta Filtrada: Utiliza el modelo Event para obtener todas las citas donde el campo user_id coincida con el $id recibido [08:03]:
PHP
$eventos = Event::where('user_id', $id)->get();
- Retorno: La función retorna la vista admin.ver-reservas enviando la colección de $eventos mediante compact [10:24].
4. 📋 Presentación de Datos en la Tabla
Se construye una tabla en ver-reservas.blade.php (compatible con DataTables) para mostrar la información del evento, utilizando las relaciones del modelo.
| Campo | Origen del Dato | Descripción y Formato |
|---|---|---|
| Doctor | $evento->doctor->nombres y ->apellidos | Nombre y apellido del médico, accedido a través de la relación Doctor [15:08]. |
| Especialidad | $evento->doctor->especialidad | Especialidad del doctor [15:30]. |
| Fecha de Reserva | $evento->start | Se utiliza la librería Carbon para mostrar solo la fecha (Y-m-d) del campo start [17:03]. |
| Hora de Reserva | $evento->start | Se utiliza la librería Carbon para mostrar solo la hora (H:i) del campo start [17:30]. |
| Fecha y Hora de Registro | $evento->created_at | La fecha y hora en que se creó la reserva [20:00]. |
El listado finaliza con estas columnas de información y las acciones futuras que se podrían implementar, como la eliminación de la reserva [20:26].
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! ❤️