<?php
/**
 * GENERADOR DE PDF
 * 
 * Este script utiliza Dompdf para crear un reporte en PDF
 * con los datos filtrados, agrupando los turnos de los domingos.
 */

// 1. CARGAR DEPENDENCIAS
require_once 'config/conexion.php';
require_once 'vendor/dompdf/autoload.inc.php';

use Dompdf\Dompdf;
use Dompdf\Options;

// 2. OBTENER DATOS DEL FILTRO
$fecha_inicio = isset($_POST['fecha_inicio']) ? $_POST['fecha_inicio'] : '';
$fecha_fin = isset($_POST['fecha_fin']) ? $_POST['fecha_fin'] : '';

if (empty($fecha_inicio) || empty($fecha_fin)) {
    die("Error: No se proporcionó un rango de fechas.");
}

// 3. PROCESAR DATOS PARA EL REPORTE
$reporte_final = [];
$fecha_inicio_sql = date('Y-m-d H:i:s', strtotime($fecha_inicio));
$fecha_fin_sql = date('Y-m-d H:i:s', strtotime($fecha_fin));

$sql_pulsaciones = "SELECT nombre_persona, fecha_hora 
                   FROM pulsaciones 
                   WHERE fecha_hora BETWEEN ? AND ? AND DAYOFWEEK(fecha_hora) = 1
                   ORDER BY fecha_hora ASC";

$stmt = $conexion->prepare($sql_pulsaciones);
$stmt->bind_param("ss", $fecha_inicio_sql, $fecha_fin_sql);
$stmt->execute();
$resultado_pulsaciones = $stmt->get_result();

while ($pulsacion = $resultado_pulsaciones->fetch_assoc()) {
    $timestamp = strtotime($pulsacion['fecha_hora']);
    $fecha = date('Y-m-d', $timestamp);
    $nombre = $pulsacion['nombre_persona'];
    
    // Clave de agrupación por fecha y nombre
    $clave = $fecha . '|' . $nombre;

    // Inicializar el array si no existe
    if (!isset($reporte_final[$clave])) {
        $reporte_final[$clave] = [
            'nombre' => $nombre,
            'fecha' => $fecha,
            'turno1' => 0,
            'turno2' => 0,
        ];
    }

    // Clasificar por turno
    $hora_numerica = (int)date('H', $timestamp);
    $minutos = (int)date('i', $timestamp);
    $tiempo_total = $hora_numerica * 60 + $minutos;

    if ($tiempo_total >= 420 && $tiempo_total <= 660) { // Turno 1: 07:00 - 11:00
        $reporte_final[$clave]['turno1']++;
    } elseif ($tiempo_total >= 661 && $tiempo_total <= 840) { // Turno 2: 11:01 - 14:00
        $reporte_final[$clave]['turno2']++;
    }
}
$stmt->close();

// 4. GENERAR EL HTML USANDO UNA PLANTILLA
ob_start();
// Pasar la nueva variable $reporte_final a la plantilla
include 'plantilla_pdf.php';
$html = ob_get_clean();

// 5. CONFIGURAR DOMPDF Y GENERAR EL PDF
$options = new Options();
$options->set('isHtml5ParserEnabled', true);
$options->set('isRemoteEnabled', true);

$dompdf = new Dompdf($options);
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();

// 6. ENVIAR EL PDF AL NAVEGADOR
$nombre_archivo = "Reporte_Turnos_Domingo_" . date("Y-m-d") . ".pdf";
$dompdf->stream($nombre_archivo, ["Attachment" => true]);

exit();
?>