Files
whatsapp/modules/turnero/api/resetear_toma.php
Lizandro GuarnizoandClaude Sonnet 4.6 25bdf9aed2 fix: resetear toma limpia siguiente_toma_at y toma_inicio_at
Al olvidar una toma los tiempos del ciclo anterior quedaban en la DB,
haciendo que al re-firmar la toma reseteada las demás aparecieran
inmediatamente (sin countdown) y el profesional tuviera que firmar 3
veces en vez de 1.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-30 16:04:51 -05:00

44 lines
1.3 KiB
PHP

<?php
/**
* POST /modules/turnero/api/resetear_toma.php
* Borra campos específicos de datos_respuestas (firma + hora de una toma).
* Body JSON: { token: string, campos: string[] }
*/
require_once __DIR__ . '/_helpers.php';
requireMethod('POST');
requireTurnero();
$body = inputJson();
$token = trim($body['token'] ?? '');
$campos = $body['campos'] ?? [];
if (!$token) jsonError('token requerido.');
if (!is_array($campos) || empty($campos)) jsonError('campos requerido.');
$pdo = db();
$stmt = $pdo->prepare(
"SELECT tc.id, tc.datos_respuestas, tc.estado, t.sesion_id
FROM turnero_consentimientos tc
JOIN turnero_turnos t ON t.id = tc.turno_id
WHERE tc.token = ? LIMIT 1"
);
$stmt->execute([$token]);
$tc = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$tc) jsonError('Consentimiento no encontrado.', 404);
if ($tc['estado'] !== 'en_progreso') jsonError('Solo se pueden olvidar tomas en estado en_progreso.');
$dr = json_decode($tc['datos_respuestas'] ?? '{}', true) ?? [];
foreach ($campos as $campo) {
unset($dr[$campo]);
}
$pdo->prepare(
"UPDATE turnero_consentimientos
SET datos_respuestas = ?,
siguiente_toma_at = NULL,
toma_inicio_at = NULL
WHERE token = ?"
)->execute([json_encode($dr, JSON_UNESCAPED_UNICODE), $token]);
notificarSSE((int)$tc['sesion_id']);
jsonOk([], 'Toma olvidada.');