actualizar((int)$datos['id'], ['is_active' => 0], $admin); jsonOk(['id' => (int)$datos['id']], 'Formulario eliminado'); } // Clonar if (!empty($datos['id']) && !empty($datos['clonar'])) { $original = $form->obtener((int)$datos['id']); if (!$original) jsonError('Formulario no encontrado', 404); $nuevoId = $form->crear([ 'nombre' => 'Copia de ' . $original['nombre'], 'descripcion' => $original['descripcion'] ?? null, 'categoria' => $original['categoria'] ?? 'otro', 'esquema' => $original['esquema'] ?? '[]', 'permite_firma' => $original['permite_firma'] ?? 0, 'requiere_firma' => $original['requiere_firma'] ?? 0, ], $admin); jsonOk(['id' => $nuevoId], 'Formulario clonado'); } // Editar if (!empty($datos['id'])) { $id = (int)$datos['id']; unset($datos['id']); // Verificar que el formulario existe $existe = $form->obtener($id); if (!$existe) { jsonError("Formulario #$id no encontrado en la base de datos", 404); } $form->actualizar($id, $datos, $admin); jsonOk(['id' => $id], 'Formulario actualizado'); } // Crear if (empty($datos['nombre'])) jsonError('El nombre es obligatorio'); if (empty($datos['esquema'])) jsonError('El esquema es obligatorio'); $id = $form->crear($datos, $admin); jsonOk(['id' => $id], 'Formulario creado correctamente'); } catch (InvalidArgumentException $e) { jsonError($e->getMessage()); } catch (Exception $e) { jsonError($e->getMessage(), 500); }