Tomas: añadir tipo de examen inline sin página separada
- Botón "Añadir tipo de examen…" debajo del selector _c8j2g16 - Al escribir y guardar, añade la opción vía API y la selecciona al instante - api/lab/add_exam_option.php: guarda la nueva opción en el esquema del formulario - Migración actualizada: solo elimina condiciones de separadores (no toca el selector) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
4e6da5d7eb
commit
be55a087aa
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* POST /api/lab/add_exam_option.php
|
||||
* Añade una opción al campo selector de tipo de examen (_c8j2g16) del formulario id=15.
|
||||
* Body JSON: { exam_name: string }
|
||||
*/
|
||||
require_once __DIR__ . '/_helpers.php';
|
||||
requireMethod('POST');
|
||||
requireAdmin();
|
||||
|
||||
$body = inputJson();
|
||||
$examName = trim($body['exam_name'] ?? '');
|
||||
|
||||
if (!$examName) jsonError('exam_name requerido.');
|
||||
if (strlen($examName) > 80) jsonError('Nombre demasiado largo (máx 80 chars).');
|
||||
if (!preg_match('/\S/', $examName)) jsonError('Nombre inválido.');
|
||||
|
||||
$db = Database::getInstance();
|
||||
$row = $db->fetch("SELECT esquema FROM lab_formularios WHERE id = 15 LIMIT 1");
|
||||
if (!$row) jsonError('Formulario no encontrado.', 404);
|
||||
|
||||
$esquema = json_decode($row['esquema'], true);
|
||||
if (!is_array($esquema)) jsonError('Esquema inválido.', 500);
|
||||
|
||||
$updated = false;
|
||||
foreach ($esquema as &$campo) {
|
||||
if (($campo['id'] ?? '') !== '_c8j2g16') continue;
|
||||
$opts = $campo['options'] ?? [];
|
||||
if (in_array($examName, $opts, true)) jsonError("El tipo \"$examName\" ya existe.");
|
||||
$opts[] = $examName;
|
||||
$campo['options'] = $opts;
|
||||
$updated = true;
|
||||
break;
|
||||
}
|
||||
unset($campo);
|
||||
|
||||
if (!$updated) jsonError('Campo selector de examen no encontrado en el formulario.', 500);
|
||||
|
||||
$db->getConnection()->prepare("UPDATE lab_formularios SET esquema = ? WHERE id = 15")
|
||||
->execute([json_encode($esquema, JSON_UNESCAPED_UNICODE)]);
|
||||
|
||||
jsonOk(['exam_name' => $examName], "Tipo \"$examName\" añadido.");
|
||||
Reference in New Issue
Block a user