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