<?php
// Configurar cabecera y zona horaria
header('Content-Type: application/json');
date_default_timezone_set('America/Mexico_City');

$bd = $_GET['bd'] ?? null;

if (!$bd ) {
    http_response_code(400);
    echo json_encode(["error" => "Parámetro 'bd' es requerido"]);
    exit;
}

// Conexión a base de datos
$conn = new mysqli("directoriofitness.com.mx", "direct18", "L4LL4v3M@3str@", "$bd");
$conn->set_charset("utf8");

if ($conn->connect_error) {
    http_response_code(500);
    echo json_encode(["error" => "Error de conexión: " . $conn->connect_error]);
    exit;
}

// Escapar parámetro por seguridad
$idSucursal = $conn->real_escape_string($idSucursal);

// Consulta para traer todas las sucursales y su aforo
$query = "
    SELECT 
    s.idSucursal,
    s.NombreSucursal,
    s.Direccion,
    IFNULL(
        CASE 
            WHEN x.total_salidas = 0 THEN e3h.total_entradas_3h
            ELSE e.total_entradas
        END,
    0) AS total_entradas,
    IFNULL(x.total_salidas, 0) AS total_salidas,
    (
        IFNULL(
            CASE 
                WHEN x.total_salidas = 0 THEN e3h.total_entradas_3h
                ELSE e.total_entradas
            END,
        0) - IFNULL(x.total_salidas, 0)
    ) AS aforo_actual,
    IFNULL(ac.limite_clientes, 0) AS limite_clientes,
    ac.hora_inicio,
    ac.hora_fin,
    ROUND(
        CASE 
            WHEN IFNULL(ac.limite_clientes, 0) = 0 THEN 0
            ELSE (
                (
                    (
                        IFNULL(
                            CASE 
                                WHEN x.total_salidas = 0 THEN e3h.total_entradas_3h
                                ELSE e.total_entradas
                            END,
                        0) - IFNULL(x.total_salidas, 0)
                    ) / ac.limite_clientes
                ) * 100
            )
        END, 2
    ) AS porcentaje_aforo
FROM sucursal s
LEFT JOIN (
    SELECT idSucursal, COUNT(*) AS total_entradas 
    FROM asistenciaservicio2 
    WHERE DATE(FechaHora) = CURDATE()
    GROUP BY idSucursal
) e ON e.idSucursal = s.idSucursal
LEFT JOIN (
    SELECT idSucursal, COUNT(*) AS total_entradas_3h
    FROM asistenciaservicio2 
    WHERE FechaHora >= (NOW() - INTERVAL 3 HOUR)
    GROUP BY idSucursal
) e3h ON e3h.idSucursal = s.idSucursal
LEFT JOIN (
    SELECT idSucursal, COUNT(*) AS total_salidas 
    FROM asistenciaservicio2_salidas 
    WHERE DATE(FechaHora) = CURDATE()
    GROUP BY idSucursal
) x ON x.idSucursal = s.idSucursal
LEFT JOIN aforo_clientes ac 
    ON ac.id_sucursal = s.idSucursal
    AND NOW() BETWEEN ac.hora_inicio AND ac.hora_fin
";

// Ejecutar consulta
$resultado = $conn->query($query);

if (!$resultado) {
    http_response_code(500);
    echo json_encode(["error" => "Error en la consulta: " . $conn->error]);
    $conn->close();
    exit;
}

// Formar arreglo de resultados
$sucursales = [];
while ($row = $resultado->fetch_assoc()) {
    $sucursales[] = $row;
}

$conn->close();

// Retornar JSON
echo json_encode($sucursales);
?>
