Files
whatsapp/modules/turnero/api/rellamar.php
T
2026-06-16 07:02:04 -05:00

52 lines
1.6 KiB
PHP

<?php
/**
* POST /modules/turnero/api/rellamar.php
* Re-llama un turno que ya está en_recepcion: actualiza llamado_recepcion_at = NOW()
* para que la pantalla TV detecte el cambio y vuelva a anunciar/animar.
*
* Body JSON:
* turno_id int requerido
*/
require_once __DIR__ . '/_helpers.php';
requireMethod('POST');
requireTurnero();
$datos = inputJson();
$turnoId = (int)($datos['turno_id'] ?? 0);
$deskId = isset($datos['desk_id']) ? (int)$datos['desk_id'] : null;
if (!$turnoId) jsonError('turno_id es obligatorio.', 400);
$pdo = db();
$stmt = $pdo->prepare(
"UPDATE turnero_turnos
SET llamado_recepcion_at = NOW(),
recepcion_desk_id = COALESCE(?, recepcion_desk_id)
WHERE id = ? AND estado = 'en_recepcion'"
);
$stmt->execute([$deskId, $turnoId]);
if ($stmt->rowCount() === 0) {
jsonError('El turno no está en estado en_recepcion o no existe.', 404);
}
// Notificar SSE para que las pantallas se actualicen inmediatamente
$stmtS = $pdo->prepare('UPDATE turnero_sesiones SET sse_ping_at = NOW() WHERE id = (SELECT sesion_id FROM turnero_turnos WHERE id = ?)');
$stmtS->execute([$turnoId]);
// Devolver el turno actualizado para que recepcion.php abra la ficha
$stmtT = $pdo->prepare(
"SELECT t.*,
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.id = ?"
);
$stmtT->execute([$turnoId]);
$turno = $stmtT->fetch(PDO::FETCH_ASSOC);
jsonOk(['turno' => $turno]);