Files
whatsapp/modules/turnero/api/get_display_recepcion.php
2026-04-21 21:36:24 -05:00

79 lines
2.3 KiB
PHP

<?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'),
]);