Files
whatsapp/modules/turnero/api/llamar_desde_espera.php
Lizandro GuarnizoandClaude Sonnet 4.6 8472c916b0 fix(turnero): llamar_desde_espera actualiza lugar y dispara display
Al llamar un paciente de toma progresiva desde la espera, ahora se
actualiza lugar_destino_id al puesto que llama, se pone llamado_lugar_at
para que el display anuncie al paciente, y se notifica por SSE. El JS
abre la ficha y muestra el toast igual que un llamar normal.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-28 11:49:37 -05:00

40 lines
1.2 KiB
PHP

<?php
/**
* POST llamar_desde_espera.php
* {turno_id, lugar_id} → regresa el paciente a cola, actualiza lugar y dispara display.
*/
require_once __DIR__ . '/_helpers.php';
requireTurnero();
requireMethod('POST');
$input = inputJson();
$turnoId = (int)($input['turno_id'] ?? 0);
$lugarId = (int)($input['lugar_id'] ?? 0);
if (!$turnoId) jsonError('turno_id requerido');
if (!$lugarId) jsonError('lugar_id requerido');
$pdo = db();
$pdo->prepare(
'UPDATE turnero_turnos
SET muestra_espera_at = NULL,
lugar_destino_id = ?,
llamado_lugar_at = NOW(),
atendido_lugar_por = ?
WHERE id = ? AND muestra_espera_at IS NOT NULL'
)->execute([$lugarId, adminId(), $turnoId]);
$stmt = $pdo->prepare(
'SELECT t.*, p.codigo AS prioridad_codigo, p.nombre AS prioridad_nombre, p.color AS prioridad_color,
COALESCE(ts.solo_muestras, 0) AS solo_muestras
FROM turnero_turnos t
JOIN turnero_prioridades p ON p.id = t.prioridad_id
LEFT JOIN turnero_solicitudes ts ON ts.turno_id = t.id
WHERE t.id = ?'
);
$stmt->execute([$turnoId]);
$turno = $stmt->fetch(PDO::FETCH_ASSOC);
if ($turno) notificarSSE((int)$turno['sesion_id']);
jsonOk(['turno' => $turno], 'Paciente llamado');