
<?php
header('Content-Type: application/json');

$id_quincena = isset($_GET['id_quincena']) ? intval($_GET['id_quincena']) : 0;
if (!$id_quincena) {
    echo json_encode(["success" => false, "error" => "Falta id_quincena"]);
    exit;
}

// --- CACHE SIMPLE ---
$cache_dir = sys_get_temp_dir() . '/sistema_horarios_cache';
if (!is_dir($cache_dir)) {
    mkdir($cache_dir, 0777, true);
}
$cache_file = $cache_dir . "/estado_horario_pdvs_{$id_quincena}.json";
$cache_ttl = 120; // segundos
if (file_exists($cache_file) && (time() - filemtime($cache_file) < $cache_ttl)) {
    // Si el cache está vigente, devolverlo
    readfile($cache_file);
    exit;
}

// Si no hay cache, calcular y guardar
require_once __DIR__ . '/../config/database.php';
$db = new Database();
$conn = $db->connect();

require_once __DIR__ . '/../models/Empleados.php';
$empleadosModel = new EmpleadosModel($conn);
$departamentos = [];
$sqlDeptos = "SELECT DISTINCT `DEPARTAMENTO INTERNO` FROM Plantilla WHERE `Estatus` = 'ACTIVO'";
$stmtDeptos = $conn->prepare($sqlDeptos);
$stmtDeptos->execute();
while ($row = $stmtDeptos->fetch(PDO::FETCH_ASSOC)) {
    $departamento = trim($row['DEPARTAMENTO INTERNO']);
    if ($departamento !== '') {
        $departamentos[$departamento] = [];
        // Obtener colaboradores activos por departamento
        $colaboradores = $empleadosModel->getActivosByDepartamentoInterno($departamento);
        foreach ($colaboradores as $col) {
            $departamentos[$departamento][] = $col['curp'];
        }
    }
}

$estados = [];
foreach ($departamentos as $depto => $curps) {
    if (count($curps) === 0) {
        $estados[$depto] = "rojo";
        continue;
    }
    $placeholders = implode(',', array_fill(0, count($curps), '?'));
    $sql = "SELECT CURP FROM HorariosAsignados WHERE id_quincena = ? AND CURP IN ($placeholders)";
    $params = array_merge([$id_quincena], $curps);
    $stmt = $conn->prepare($sql);
    $stmt->execute($params);
    $curpsConHorario = [];
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $curpsConHorario[] = $row['CURP'];
    }
    $total = count($curps);
    $conHorario = count($curpsConHorario);
    if ($conHorario === 0) {
        $estados[$depto] = "rojo";
    } elseif ($conHorario === $total) {
        $estados[$depto] = "verde";
    } elseif ($conHorario > 0) {
        $estados[$depto] = "amarillo";
    } else {
        $estados[$depto] = "rojo";
    }
}

$json = json_encode($estados);
file_put_contents($cache_file, $json);
echo $json;
