Files
whatsapp/api/lab/add_exam_option.php
T
Lizandro GuarnizoandClaude Sonnet 4.6 be55a087aa 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>
2026-07-10 11:05:45 -05:00

43 lines
1.4 KiB
PHP

<?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.");