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

// Verificar si el usuario está logueado
if (!isset($_SESSION['user']['codempleado'])) {
    http_response_code(401);
    echo json_encode(['error' => 'No autorizado']);
    exit();
}

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

$empleadoId = $_SESSION['user']['codempleado'];
$accesoPermitido = false;
$mensaje = '';

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) {
        // Obtener el día actual (1=Lunes, 2=Martes, ..., 7=Domingo)
        $diaActual = date('N'); // 1 (lunes) a 7 (domingo)
        
        // Obtener la hora actual
        $horaActual = date('H:i:s');
        
        // 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);

        if ($horarioActual) {
            // Verificar si está dentro del horario
            $horaInicio = $horarioActual['horainicio'];
            $horaFin = $horarioActual['horafinal'];
            
            // Debug: Log para verificar los valores
            error_log("DEBUG VERIFICAR - Hora actual: " . $horaActual);
            error_log("DEBUG VERIFICAR - Hora inicio: " . $horaInicio);
            error_log("DEBUG VERIFICAR - Hora fin: " . $horaFin);
            
            // Convertir a timestamp para comparación más precisa
            $timestampActual = strtotime($horaActual);
            $timestampInicio = strtotime($horaInicio);
            $timestampFin = strtotime($horaFin);
            
            error_log("DEBUG VERIFICAR - Timestamp actual: " . $timestampActual);
            error_log("DEBUG VERIFICAR - Timestamp inicio: " . $timestampInicio);
            error_log("DEBUG VERIFICAR - Timestamp fin: " . $timestampFin);
            
            if ($timestampActual >= $timestampInicio && $timestampActual <= $timestampFin) {
                $accesoPermitido = true;
                $mensaje = "Está dentro de su horario laboral";
                error_log("DEBUG VERIFICAR - DENTRO DEL HORARIO");
            } elseif ($timestampActual < $timestampInicio) {
                $accesoPermitido = false;
                $mensaje = "Su horario comienza a las " . date('H:i', strtotime($horaInicio));
                error_log("DEBUG VERIFICAR - ANTES DEL HORARIO");
            } else {
                $accesoPermitido = false;
                $mensaje = "Su horario terminó a las " . date('H:i', strtotime($horaFin));
                error_log("DEBUG VERIFICAR - DESPUÉS DEL HORARIO");
            }
        } else {
            $accesoPermitido = false;
            $mensaje = "No tiene horario programado para hoy";
            error_log("DEBUG VERIFICAR - SIN HORARIO");
        }
    } else {
        $accesoPermitido = false;
        $mensaje = "Empleado no encontrado";
    }
} catch(PDOException $e) {
    $accesoPermitido = false;
    $mensaje = "Error al verificar el horario: " . $e->getMessage();
}

// Devolver respuesta en formato JSON
header('Content-Type: application/json');
echo json_encode([
    'acceso_permitido' => $accesoPermitido,
    'mensaje' => $mensaje,
    'hora_actual' => date('H:i:s'),
    'dia_actual' => date('l, d/m/Y'),
    'empleado' => $empleadoInfo ? $empleadoInfo['nombres'] . ' ' . $empleadoInfo['apellidoPaterno'] : null,
    'tipo_horario' => $empleadoInfo ? $empleadoInfo['tipohorario'] : null
]);
?>
