<?php
session_start(); // Importante para usar $_SESSION
header('Content-Type: application/json');
require_once __DIR__ . '/../../db/conexion.php';

if (!$conn) {
    http_response_code(500);
    echo json_encode(["error" => "Error al conectar a la base de datos"]);
    exit;
}

// Verificamos que exista el ATTUID en sesión
$attuidFiltro = $_SESSION['attuid'] ?? '';

if (empty($attuidFiltro)) {
    http_response_code(401);
    echo json_encode(["error" => "No hay sesión activa o no se encontró ATTUID"]);
    exit;
}

// Si es admin (o cualquier otro valor que tengas para admin)
$isAdmin = (strtolower(trim($attuidFiltro)) === 'admin');
// Cambia 'admin' si tu valor admin es otro

if ($isAdmin) {
    // Traemos todo sin filtro
    $sql = "SELECT ID, ATTUIDEncargado, Tiendas, Sector FROM sectoresdPDVs";
    $result = mysqli_query($conn, $sql);

    if (!$result) {
        http_response_code(500);
        echo json_encode(["error" => "Error en la consulta de sectores"]);
        exit;
    }
} else {
    // Filtramos por ATTUIDEncargado
    $sql = "SELECT ID, ATTUIDEncargado, Tiendas, Sector FROM sectoresdPDVs WHERE ATTUIDEncargado = ?";
    $stmt = mysqli_prepare($conn, $sql);
    if (!$stmt) {
        http_response_code(500);
        echo json_encode(["error" => "Error en la preparación de la consulta"]);
        exit;
    }
    mysqli_stmt_bind_param($stmt, 's', $attuidFiltro);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);

    if (!$result) {
        http_response_code(500);
        echo json_encode(["error" => "Error en la consulta de sectores"]);
        exit;
    }
}

$datos = [];
$encargadosUnicos = [];
$tiendasUnicas = [];
$sectores = [];

while ($row = mysqli_fetch_assoc($result)) {
    $encargado = $row['ATTUIDEncargado'];
    $sector = $row['Sector'];
    $tiendas = array_map('trim', explode(',', $row['Tiendas']));
    if (!in_array($encargado, $encargadosUnicos)) $encargadosUnicos[] = $encargado;
    foreach ($tiendas as $tienda) {
        if ($tienda !== '') {
            $tiendasUnicas[] = $tienda;
            $sectores[$tienda] = $sector;
        }
    }
}

// Obtener nombres de encargados en un solo query
$nombresEncargados = [];
if (count($encargadosUnicos) > 0) {
    $in = str_repeat('?,', count($encargadosUnicos) - 1) . '?';
    $sqlNombres = "SELECT ATTUID, NOMBRES, `APELLIDO PATERNO`, `APELLIDO MATERNO` FROM Plantilla WHERE ATTUID IN ($in)";
    $stmt = $conn->prepare($sqlNombres);
    $stmt->bind_param(str_repeat('s', count($encargadosUnicos)), ...$encargadosUnicos);
    $stmt->execute();
    $res = $stmt->get_result();
    while ($row = $res->fetch_assoc()) {
        $nombresEncargados[$row['ATTUID']] = trim($row['NOMBRES'] . ' ' . $row['APELLIDO PATERNO'] . ' ' . $row['APELLIDO MATERNO']);
    }
    $stmt->close();
}

// Obtener horarios de todas las tiendas en un solo query
$horariosTiendas = [];
if (count($tiendasUnicas) > 0) {
    $in = str_repeat('?,', count($tiendasUnicas) - 1) . '?';
    $sqlHorarios = "SELECT Tienda, Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo, LunesC, MartesC, MiercolesC, JuevesC, ViernesC, SabadoC, DomingoC, Dia, HoraIni, HoraFin FROM PDVXRegion WHERE Tienda IN ($in)";
    $stmt = $conn->prepare($sqlHorarios);
    $stmt->bind_param(str_repeat('s', count($tiendasUnicas)), ...$tiendasUnicas);
    $stmt->execute();
    $res = $stmt->get_result();
    while ($row = $res->fetch_assoc()) {
        $horariosTiendas[$row['Tienda']] = $row;
    }
    $stmt->close();
}

// Volver a recorrer sectores para armar la respuesta final
foreach ($result as $row) {
    $encargado = $row['ATTUIDEncargado'];
    $sector = $row['Sector'];
    $tiendas = array_map('trim', explode(',', $row['Tiendas']));
    $nombreEncargado = $nombresEncargados[$encargado] ?? '';
    foreach ($tiendas as $tienda) {
        if ($tienda === '') continue;
        $h = $horariosTiendas[$tienda] ?? [];
        $datos[] = [
            "encargado" => $encargado,
            "nombreEncargado" => $nombreEncargado,
            "tienda" => $tienda,
            "sector" => $sector,
            "lunes" => $h['Lunes'] ?? null,
            "martes" => $h['Martes'] ?? null,
            "miercoles" => $h['Miercoles'] ?? null,
            "jueves" => $h['Jueves'] ?? null,
            "viernes" => $h['Viernes'] ?? null,
            "sabado" => $h['Sabado'] ?? null,
            "domingo" => $h['Domingo'] ?? null,
            "lunesC" => $h['LunesC'] ?? null,
            "martesC" => $h['MartesC'] ?? null,
            "miercolesC" => $h['MiercolesC'] ?? null,
            "juevesC" => $h['JuevesC'] ?? null,
            "viernesC" => $h['ViernesC'] ?? null,
            "sabadoC" => $h['SabadoC'] ?? null,
            "domingoC" => $h['DomingoC'] ?? null,
            "dia" => $h['Dia'] ?? null,
            "horaini" => $h['HoraIni'] ?? null,
            "horafin" => $h['HoraFin'] ?? null
        ];
    }
}

echo json_encode(["success" => true, "data" => $datos], JSON_UNESCAPED_UNICODE);
