up
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
<?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);
|
||||
}
|
||||
Reference in New Issue
Block a user