79 lines
2.3 KiB
PHP
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'),
|
|
]);
|