<?php
session_start();
include_once 'config/database.php';

// Configurar zona horaria de Lima, Perú
date_default_timezone_set('America/Lima');

$database = new Database();
$conn = $database->getConnection();

echo "<h2>DEBUG MIDDLEWARE DETALLADO</h2>";
echo "<p><strong>Hora actual:</strong> " . date('H:i:s') . "</p>";
echo "<p><strong>Página actual:</strong> " . basename($_SERVER['PHP_SELF']) . "</p>";

if (!isset($_SESSION['user']['codempleado'])) {
    echo "<p style='color: red;'>Usuario no logueado</p>";
    exit();
}

$empleadoId = $_SESSION['user']['codempleado'];
echo "<p><strong>ID Empleado:</strong> " . $empleadoId . "</p>";

try {
    // Obtener información del empleado
    $stmt = $conn->prepare("
        SELECT e.*, th.tipohorario 
        FROM templeado e 
        LEFT JOIN tipohorario th ON e.codtipohorario = th.codtipohorario 
        WHERE e.codempleado = ?
    ");
    $stmt->execute([$empleadoId]);
    $empleadoInfo = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($empleadoInfo) {
        echo "<h3>Información del Empleado</h3>";
        echo "<p><strong>Nombre:</strong> " . $empleadoInfo['nombres'] . " " . $empleadoInfo['apellidoPaterno'] . "</p>";
        echo "<p><strong>Tipo de horario:</strong> " . $empleadoInfo['tipohorario'] . "</p>";
        echo "<p><strong>Código tipo horario:</strong> " . $empleadoInfo['codtipohorario'] . "</p>";
        
        $diaActual = date('N');
        $horaActual = date('H:i:s');
        
        echo "<h3>Consulta de Horarios</h3>";
        echo "<p><strong>Día actual:</strong> " . $diaActual . "</p>";
        
        // Verificar si el empleado tiene horario para hoy
        $stmt = $conn->prepare("
            SELECT h.*, d.diasemana, d.coddiasemana
            FROM thorario h
            LEFT JOIN tdiasemana d ON h.coddiasemana = d.coddiasemana
            WHERE h.codtipohorario = ? AND d.coddiasemana = ?
        ");
        $stmt->execute([$empleadoInfo['codtipohorario'], $diaActual]);
        $horarioActual = $stmt->fetch(PDO::FETCH_ASSOC);
        
        echo "<p><strong>Horario encontrado:</strong> " . ($horarioActual ? "SÍ" : "NO") . "</p>";
        
        if ($horarioActual) {
            echo "<h3>Detalles del Horario</h3>";
            echo "<pre>" . print_r($horarioActual, true) . "</pre>";
            
            $horaInicio = $horarioActual['horainicio'];
            $horaFin = $horarioActual['horafinal'];
            
            echo "<h3>Comparación Detallada</h3>";
            echo "<p><strong>Hora actual:</strong> " . $horaActual . "</p>";
            echo "<p><strong>Hora inicio:</strong> " . $horaInicio . "</p>";
            echo "<p><strong>Hora fin:</strong> " . $horaFin . "</p>";
            
            // Comparación con timestamps
            $timestampActual = strtotime($horaActual);
            $timestampInicio = strtotime($horaInicio);
            $timestampFin = strtotime($horaFin);
            
            echo "<h4>Timestamps</h4>";
            echo "<p><strong>Timestamp actual:</strong> " . $timestampActual . " (" . date('H:i:s', $timestampActual) . ")</p>";
            echo "<p><strong>Timestamp inicio:</strong> " . $timestampInicio . " (" . date('H:i:s', $timestampInicio) . ")</p>";
            echo "<p><strong>Timestamp fin:</strong> " . $timestampFin . " (" . date('H:i:s', $timestampFin) . ")</p>";
            
            echo "<h4>Comparaciones</h4>";
            echo "<p>Timestamp actual >= Timestamp inicio: " . ($timestampActual >= $timestampInicio ? "SÍ" : "NO") . "</p>";
            echo "<p>Timestamp actual <= Timestamp fin: " . ($timestampActual <= $timestampFin ? "SÍ" : "NO") . "</p>";
            
            $dentroHorario = ($timestampActual >= $timestampInicio && $timestampActual <= $timestampFin);
            echo "<p><strong>Dentro del horario:</strong> " . ($dentroHorario ? "SÍ" : "NO") . "</p>";
            
            if (!$dentroHorario) {
                $diferenciaInicio = $timestampInicio - $timestampActual;
                $diferenciaFin = $timestampActual - $timestampFin;
                
                echo "<h4>Diferencias</h4>";
                echo "<p><strong>Diferencia con inicio:</strong> " . $diferenciaInicio . " segundos (" . round($diferenciaInicio/60) . " minutos)</p>";
                echo "<p><strong>Diferencia con fin:</strong> " . $diferenciaFin . " segundos (" . round($diferenciaFin/60) . " minutos)</p>";
                
                if ($diferenciaInicio <= 1800 || $diferenciaFin <= 1800) {
                    echo "<p style='color: green;'><strong>Dentro de la tolerancia de 30 minutos</strong></p>";
                } else {
                    echo "<p style='color: red;'><strong>Fuera de la tolerancia de 30 minutos</strong></p>";
                }
            }
            
        } else {
            echo "<h3>No se encontró horario para hoy</h3>";
        }
        
    } else {
        echo "<p style='color: red;'>Empleado no encontrado</p>";
    }
    
} catch(PDOException $e) {
    echo "<p style='color: red;'>Error: " . $e->getMessage() . "</p>";
}
?>
