Files
whatsapp/modules/turnero/api/anexar_formulario.php
T
Lizandro GuarnizoandClaude Sonnet 4.6 4fee7f753a fix(turnero): anexar_formulario usa UUID() en vez de bin2hex para el token
bin2hex(random_bytes(16)) genera hex sin guiones que no pasa la validación
de ver_formulario_enviado.php — el formulario adicional daba token inválido
al intentar firmar.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-29 20:50:57 -05:00

43 lines
1.6 KiB
PHP

<?php
/**
* POST /modules/turnero/api/anexar_formulario.php
* Crea un consentimiento adicional para un turno activo.
* Body JSON: { turno_id: int, formulario_id: int }
*/
require_once __DIR__ . '/_helpers.php';
requireMethod('POST');
requireTurnero();
$body = inputJson();
$turnoId = (int)($body['turno_id'] ?? 0);
$formularioId = (int)($body['formulario_id'] ?? 0);
if (!$turnoId) jsonError('turno_id requerido.');
if (!$formularioId) jsonError('formulario_id requerido.');
$pdo = db();
// Verificar que el turno existe y está activo
$turno = $pdo->prepare("SELECT id, sesion_id, estado FROM turnero_turnos WHERE id = ? LIMIT 1");
$turno->execute([$turnoId]);
$t = $turno->fetch(PDO::FETCH_ASSOC);
if (!$t) jsonError('Turno no encontrado.', 404);
if (!in_array($t['estado'], ['en_espera_lugar', 'en_servicio'])) jsonError('El turno no está activo.');
// Verificar que el formulario existe
$form = $pdo->prepare("SELECT id, nombre FROM lab_formularios WHERE id = ? AND is_active = 1 LIMIT 1");
$form->execute([$formularioId]);
if (!$form->fetch()) jsonError('Formulario no encontrado o inactivo.', 404);
// Crear el consentimiento con token UUID (mismo formato que create_solicitud)
$ins = $pdo->prepare(
"INSERT INTO turnero_consentimientos (turno_id, formulario_id, token, estado, datos_respuestas)
VALUES (?, ?, UUID(), 'enviado', '{}')"
);
$ins->execute([$turnoId, $formularioId]);
$newId = (int)$pdo->lastInsertId();
$token = $pdo->query("SELECT token FROM turnero_consentimientos WHERE id = $newId")->fetchColumn();
notificarSSE((int)$t['sesion_id']);
jsonOk(['id' => $newId, 'token' => $token], 'Formulario agregado.');