<?php
/**
 * GET /modules/turnero/api/get_display_recepcion.php?desk_id=X
 * Devuelve el turno activo en_recepcion para un escritorio específico.
 * Acceso público (pantalla TV).
 */

require_once __DIR__ . '/_helpers.php';
requireMethod('GET');

$deskId = (int)($_GET['desk_id'] ?? 0);
if (!$deskId) jsonError('desk_id requerido.', 400);

$pdo = db();

// Verificar que el escritorio existe y es de tipo recepcion
$stmtDesk = $pdo->prepare(
    "SELECT id, nombre FROM turnero_lugares WHERE id = ? AND tipo = 'recepcion' AND activo = 1"
);
$stmtDesk->execute([$deskId]);
$desk = $stmtDesk->fetch(PDO::FETCH_ASSOC);

if (!$desk) jsonError('Escritorio no encontrado.', 404);

$_ses = sesionHoy();
$sesionCerrada = (!$_ses || $_ses['fin_at'] !== null);
if ($sesionCerrada) {
    jsonOk([
        'sesion_cerrada' => true,
        'desk_id'    => (int)$desk['id'],
        'desk_nombre'=> $desk['nombre'],
        'turno'      => null,
        'stats'      => ['en_espera' => 0, 'en_atencion' => 0, 'finalizados' => 0],
        'timestamp'  => date('c'),
    ]);
    exit;
}
$sesionId = (int)$_ses['id'];

// Turno activo en este escritorio (el más reciente llamado_recepcion_at)
$stmtT = $pdo->prepare(
    "SELECT t.id,
            t.codigo,
            t.numero,
            t.estado,
            t.paciente_nombre,
            t.llamado_recepcion_at AS llamado_at,
            p.codigo AS prioridad_codigo,
            p.nombre AS prioridad_nombre,
            p.color  AS prioridad_color
       FROM turnero_turnos t
       JOIN turnero_prioridades p ON p.id = t.prioridad_id
      WHERE t.sesion_id = ?
        AND t.estado = 'en_recepcion'
        AND t.recepcion_desk_id = ?
      ORDER BY t.llamado_recepcion_at DESC
      LIMIT 1"
);
$stmtT->execute([$sesionId, $deskId]);
$turno = $stmtT->fetch(PDO::FETCH_ASSOC) ?: null;

// Stats básicos para el footer
$stmtStats = $pdo->prepare(
    "SELECT SUM(estado = 'espera') AS en_espera,
            SUM(estado IN ('en_recepcion','en_espera_lugar','en_servicio')) AS en_atencion,
            SUM(estado = 'finalizado') AS finalizados
       FROM turnero_turnos WHERE sesion_id = ?"
);
$stmtStats->execute([$sesionId]);
$stats = $stmtStats->fetch(PDO::FETCH_ASSOC);

jsonOk([
    'desk_id'    => (int)$desk['id'],
    'desk_nombre'=> $desk['nombre'],
    'turno'      => $turno,
    'stats'      => $stats,
    'timestamp'  => date('c'),
]);
