This commit is contained in:
Lizandro Guarnizo
2026-06-16 13:20:13 -05:00
parent 5af94e50e5
commit b11a7f5f98
3 changed files with 99 additions and 49 deletions
+34 -39
View File
@@ -49,54 +49,49 @@ if ($sesionCerrada) {
// ── Cola según área ───────────────────────────────────────────
if ($area === 'recepcion') {
$estadosCola = ["'espera'", "'en_recepcion'"];
// Recepción: todos los turnos en espera/en_recepcion
$inEstados = "'espera', 'en_recepcion'";
$filtroLugar = '';
$bindsCola = [$sesionId];
$stmt = $pdo->prepare(
"SELECT t.id, t.codigo, t.numero, t.estado, t.paciente_nombre,
t.recepcion_desk_id, t.creado_at, t.llamado_recepcion_at, t.llamado_lugar_at,
p.codigo AS prioridad_codigo, p.nombre AS prioridad_nombre,
p.color AS prioridad_color, p.orden_peso
FROM turnero_turnos t
JOIN turnero_prioridades p ON p.id = t.prioridad_id
WHERE t.sesion_id = ? AND t.estado IN ($inEstados)
ORDER BY p.orden_peso ASC, t.creado_at ASC"
);
$stmt->execute($bindsCola);
} else {
$estadosCola = ["'en_espera_lugar'", "'en_servicio'"];
// Expandir grupo de lugares
$grupoIds = lugarIdsDeGrupo($lugarId);
$inLugares = implode(',', array_map('intval', $grupoIds));
$filtroLugar = "AND t.lugar_destino_id IN ($inLugares)";
$bindsCola = [$sesionId];
// Lugar: cola compartida (grupo) solo en_espera_lugar
$grupoIds = lugarIdsDeGrupo($lugarId);
$inLugares = implode(',', array_map('intval', $grupoIds));
$stmt = $pdo->prepare(
"SELECT t.id, t.codigo, t.numero, t.estado, t.paciente_nombre,
t.recepcion_desk_id, t.creado_at, t.llamado_recepcion_at, t.llamado_lugar_at,
p.codigo AS prioridad_codigo, p.nombre AS prioridad_nombre,
p.color AS prioridad_color, p.orden_peso
FROM turnero_turnos t
JOIN turnero_prioridades p ON p.id = t.prioridad_id
WHERE t.sesion_id = ?
AND t.estado = 'en_espera_lugar'
AND t.lugar_destino_id IN ($inLugares)
ORDER BY p.orden_peso ASC, t.creado_at ASC"
);
$stmt->execute([$sesionId]);
}
$inEstados = implode(', ', $estadosCola);
$stmt = $pdo->prepare(
"SELECT t.id,
t.codigo,
t.numero,
t.estado,
t.paciente_nombre,
t.recepcion_desk_id,
t.creado_at,
t.llamado_recepcion_at,
t.llamado_lugar_at,
p.codigo AS prioridad_codigo,
p.nombre AS prioridad_nombre,
p.color AS prioridad_color,
p.orden_peso
FROM turnero_turnos t
JOIN turnero_prioridades p ON p.id = t.prioridad_id
WHERE t.sesion_id = ?
AND t.estado IN ({$inEstados})
{$filtroLugar}
ORDER BY p.orden_peso ASC, t.creado_at ASC"
);
$stmt->execute($bindsCola);
$cola = $stmt->fetchAll(PDO::FETCH_ASSOC);
// ── Turno actualmente en pantalla (último llamado) ────────────
$campoLlamado = $area === 'recepcion' ? 'llamado_recepcion_at' : 'llamado_lugar_at';
$estadoActivo = $area === 'recepcion' ? "'en_recepcion'" : "'en_servicio'";
if ($area === 'lugar') {
$filtroActivo = "AND t.lugar_destino_id IN ($inLugares)";
$bindActivo = [$sesionId];
} else {
$filtroActivo = '';
$bindActivo = [$sesionId];
}
// Activo: para lugar filtrar SOLO por esta estación (ya fue asignada al llamar)
$filtroActivo = $area === 'lugar' ? 'AND t.lugar_destino_id = ?' : '';
$bindActivo = $area === 'lugar' ? [$sesionId, $lugarId] : [$sesionId];
$stmt = $pdo->prepare(
"SELECT t.id,