false, 'message' => 'Metodo non consentito.']); exit; } $pdo = DBHandlerSelect::getInstance()->getConnection(); $id = (int)($_POST['id'] ?? 0); $name = trim($_POST['name'] ?? ''); $description = trim($_POST['description'] ?? ''); $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; if ($name === '') { echo json_encode(['success' => false, 'message' => 'Il nome della mansione è obbligatorio.']); exit; } try { if ($id > 0) { $check = $pdo->prepare("SELECT COUNT(*) FROM job_roles 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\'altra mansione con questo nome.']); exit; } $stmt = $pdo->prepare(" UPDATE job_roles SET name = :name, description = :description, sort_order = :sort_order, is_active = :is_active, updated_at = NOW() WHERE id = :id "); $stmt->execute([ 'name' => $name, 'description' => $description !== '' ? $description : null, 'sort_order' => $sort_order, 'is_active' => $is_active, 'id' => $id, ]); echo json_encode(['success' => true, 'id' => $id]); exit; } $check = $pdo->prepare("SELECT COUNT(*) FROM job_roles WHERE name = :name"); $check->execute(['name' => $name]); if ((int)$check->fetchColumn() > 0) { echo json_encode(['success' => false, 'message' => 'Esiste già una mansione con questo nome.']); exit; } $stmt = $pdo->prepare(" INSERT INTO job_roles (name, description, sort_order, is_active, created_at, updated_at) VALUES (:name, :description, :sort_order, :is_active, NOW(), NOW()) "); $stmt->execute([ 'name' => $name, 'description' => $description !== '' ? $description : null, 'sort_order' => $sort_order, 'is_active' => $is_active, ]); echo json_encode(['success' => true, 'id' => (int)$pdo->lastInsertId()]); } catch (Exception $e) { echo json_encode(['success' => false, 'message' => $e->getMessage()]); }