turnero_consentimientos nunca guardó quién lo generó; el pie del documento mostraba el nombre de quien tuviera sesión abierta al verlo, no de quien realmente lo atendió (por eso siempre aparecía el mismo usuario). Se agrega la columna creado_por, se llena en los 6 puntos donde se crea un registro (recepción, envío por WhatsApp, anexar formulario extra, autocreación por examen/lugar), y ver_formulario_enviado.php ahora prioriza ese dato real sobre el usuario de la sesión actual. Los documentos ya firmados antes de este cambio siguen sin ese dato y usan el fallback anterior. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
43 lines
1.7 KiB
PHP
43 lines
1.7 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, creado_por)
|
|
VALUES (?, ?, UUID(), 'enviado', '{}', ?)"
|
|
);
|
|
$ins->execute([$turnoId, $formularioId, adminId()]);
|
|
$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.');
|