Files
whatsapp/modules/turnero/api/set_principal_consent.php
T
2026-06-11 22:52:45 -05:00

46 lines
1.5 KiB
PHP

<?php
/**
* modules/turnero/api/set_principal_consent.php
* POST { formulario_id: int | null }
* Marca un lab_formularios como consentimiento principal de recepción.
* Pasa null para desmarcar (ningún principal).
* Solo UN formulario puede ser principal a la vez.
*/
require_once __DIR__ . '/_helpers.php';
requireMethod('POST');
requireTurnero();
$input = inputJson();
$formularioId = isset($input['formulario_id']) ? (int) $input['formulario_id'] : null;
$pdo = db();
if ($formularioId) {
// Verificar que el formulario existe y es tipo consentimiento
$stmt = $pdo->prepare(
"SELECT id FROM lab_formularios WHERE id = ? AND tipo = 'consentimiento' AND is_active = 1"
);
$stmt->execute([$formularioId]);
if (!$stmt->fetch()) {
jsonError('Formulario no encontrado o no es un consentimiento activo.', 404);
}
}
$pdo->beginTransaction();
try {
// Quitar principal de todos
$pdo->exec("UPDATE lab_formularios SET is_principal = 0 WHERE is_principal = 1");
// Marcar el nuevo principal (si aplica)
if ($formularioId) {
$stmt = $pdo->prepare("UPDATE lab_formularios SET is_principal = 1 WHERE id = ?");
$stmt->execute([$formularioId]);
}
$pdo->commit();
jsonOk([
'formulario_id' => $formularioId,
], $formularioId ? 'Consentimiento principal actualizado' : 'Consentimiento principal desmarcado');
} catch (\Throwable $e) {
$pdo->rollBack();
jsonError('Error al actualizar: ' . $e->getMessage(), 500);
}