49 REPORTE entre 2 FECHAS en el curso de LARAVEL 10 Sistema de control de asistencia

Duración: 23 min
Módulo: Reportes Profesionales, Roles y Despliegue Final 🛡️ Lección 2 de 9

Descripción

🗓️ Lección 49: Reporte de Asistencia entre Dos Fechas

1. 🖥️ Diseño de la Interfaz de Filtrado

Se modificó la vista de reportes (asistencia/reportes.blade.php) para incluir un formulario que capture las fechas de inicio y fin para el filtro.

  • Estructura: Se ajustó el layout de la página para crear un área de formulario junto al botón de reporte global, utilizando un diseño de columnas de Bootstrap [01:25].
  • Campos del Formulario: Se crearon dos campos de tipo date:
    • Fecha de Inicio (name="fi") [02:40]
    • Fecha Final (name="ff") [04:46]
  • Botón de Envío: Se añadió un botón "Generar Reporte" dentro de un formulario que utiliza el método GET para enviar las fechas a la ruta de procesamiento [05:36].

2. 🔗 Definición de Rutas y Controlador

Se configuró el backend para recibir y procesar las fechas enviadas por el formulario:

  • Nueva Ruta: Se definió la ruta /asistencias/pdf_fechas en web.php para manejar la solicitud de reporte por fechas, asociada a la función pdf_fechas del controlador [08:23].
  • Nueva Función: Se creó el método pdf_fechas en AsistenciaController [09:12].

3. 🔎 Lógica de Consulta por Rango de Fechas

La función pdf_fechas implementó la lógica principal para filtrar los datos:

  1. Recepción de Datos: Se utilizó el objeto Request para obtener las variables fi (Fecha de Inicio) y ff (Fecha Final) enviadas desde el formulario a través del método GET [14:07].
  2. Consulta a la Base de Datos: Se construyó una consulta compleja utilizando el constructor de consultas de Laravel:
    • Se utiliza el modelo Asistencia.
    • Se aplicó la cláusula where para asegurar que la columna fecha sea mayor o igual a la Fecha de Inicio (fi) [16:47].
    • Se encadenó otra cláusula where para que la columna fecha sea menor o igual a la Fecha Final (ff) [18:38].
  3. Resultado en PDF: Se usó la librería DOMPDF para cargar la vista (asistencia.pdf_fechas) y pasarle el conjunto de datos filtrados ($asistencias), generando el archivo PDF [21:28].