46 lines
1.5 KiB
PHP
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);
|
|
}
|