false, 'message' => 'Metodo non consentito.']); exit; } $pdo = DBHandlerSelect::getInstance()->getConnection(); $id = (int)($_POST['id'] ?? 0); $name = trim($_POST['name'] ?? ''); $description = trim($_POST['description'] ?? ''); $freqRaw = $_POST['default_frequency_months'] ?? ''; $remRaw = $_POST['default_reminder_days'] ?? ''; $sort_order = isset($_POST['sort_order']) && $_POST['sort_order'] !== '' ? (int)$_POST['sort_order'] : 999; $is_active = isset($_POST['is_active']) ? ((int)$_POST['is_active'] === 1 ? 1 : 0) : 1; $is_mandatory = isset($_POST['is_mandatory']) && (int)$_POST['is_mandatory'] === 1 ? 1 : 0; $freq = ($freqRaw === '' || $freqRaw === null) ? null : max(0, (int)$freqRaw); $rem = ($remRaw === '' || $remRaw === null) ? 30 : max(0, (int)$remRaw); if ($name === '') { echo json_encode(['success' => false, 'message' => 'Il nome del corso è obbligatorio.']); exit; } try { if ($id > 0) { $check = $pdo->prepare("SELECT COUNT(*) FROM training_topics WHERE name = :name AND id <> :id"); $check->execute(['name' => $name, 'id' => $id]); if ((int)$check->fetchColumn() > 0) { echo json_encode(['success' => false, 'message' => 'Esiste già un altro corso con questo nome.']); exit; } $stmt = $pdo->prepare(" UPDATE training_topics SET name = :name, description = :description, default_frequency_months = :freq, default_reminder_days = :rem, sort_order = :sort_order, is_active = :is_active, is_mandatory = :is_mandatory, updated_at = NOW() WHERE id = :id "); $stmt->execute([ 'name' => $name, 'description' => $description !== '' ? $description : null, 'freq' => $freq, 'rem' => $rem, 'sort_order' => $sort_order, 'is_active' => $is_active, 'is_mandatory' => $is_mandatory, 'id' => $id, ]); echo json_encode(['success' => true, 'id' => $id]); exit; } $check = $pdo->prepare("SELECT COUNT(*) FROM training_topics WHERE name = :name"); $check->execute(['name' => $name]); if ((int)$check->fetchColumn() > 0) { echo json_encode(['success' => false, 'message' => 'Esiste già un corso con questo nome.']); exit; } $stmt = $pdo->prepare(" INSERT INTO training_topics (name, description, default_frequency_months, default_reminder_days, sort_order, is_active, is_mandatory, created_at, updated_at) VALUES (:name, :description, :freq, :rem, :sort_order, :is_active, :is_mandatory, NOW(), NOW()) "); $stmt->execute([ 'name' => $name, 'description' => $description !== '' ? $description : null, 'freq' => $freq, 'rem' => $rem, 'sort_order' => $sort_order, 'is_active' => $is_active, 'is_mandatory' => $is_mandatory, ]); echo json_encode(['success' => true, 'id' => (int)$pdo->lastInsertId()]); } catch (Exception $e) { echo json_encode(['success' => false, 'message' => $e->getMessage()]); }