getConnection(); function jsonResponse(array $data): void { header('Content-Type: application/json; charset=utf-8'); echo json_encode($data); exit; } function normalizeNullableInt($value): ?int { return (isset($value) && $value !== '') ? (int)$value : null; } function normalizeBoolValue($value): int { return ((string)$value === '0') ? 0 : 1; } function cleanString(?string $value): string { return trim((string)$value); } /* ========================================== AJAX HANDLERS ========================================== */ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['ajax'] == '1') { $action = $_POST['action'] ?? ''; try { if ($action === 'add') { $functionName = cleanString($_POST['function_name'] ?? ''); $personFullName = cleanString($_POST['person_full_name'] ?? ''); $phone = cleanString($_POST['phone'] ?? ''); $email = cleanString($_POST['email'] ?? ''); $notes = cleanString($_POST['notes'] ?? ''); $sortOrder = normalizeNullableInt($_POST['sort_order'] ?? '0') ?? 0; $isActive = normalizeBoolValue($_POST['is_active'] ?? '1'); if ($functionName === '') { jsonResponse(['success' => false, 'message' => 'Il nome funzione è obbligatorio.']); } if ($email !== '' && !filter_var($email, FILTER_VALIDATE_EMAIL)) { jsonResponse(['success' => false, 'message' => 'Email non valida.']); } $stmt = $pdo->prepare("\n INSERT INTO company_functions\n (function_name, person_full_name, phone, email, notes, sort_order, is_active, created_at, updated_at)\n VALUES\n (:function_name, :person_full_name, :phone, :email, :notes, :sort_order, :is_active, NOW(), NOW())\n "); $stmt->execute([ 'function_name' => $functionName, 'person_full_name' => $personFullName !== '' ? $personFullName : '', 'phone' => $phone !== '' ? $phone : null, 'email' => $email !== '' ? $email : null, 'notes' => $notes !== '' ? $notes : null, 'sort_order' => $sortOrder, 'is_active' => $isActive, ]); jsonResponse(['success' => true, 'message' => 'Funzione salvata correttamente.']); } if ($action === 'edit') { $id = (int)($_POST['id'] ?? 0); $functionName = cleanString($_POST['function_name'] ?? ''); $personFullName = cleanString($_POST['person_full_name'] ?? ''); $phone = cleanString($_POST['phone'] ?? ''); $email = cleanString($_POST['email'] ?? ''); $notes = cleanString($_POST['notes'] ?? ''); $sortOrder = normalizeNullableInt($_POST['sort_order'] ?? '0') ?? 0; $isActive = normalizeBoolValue($_POST['is_active'] ?? '1'); if ($id <= 0) { jsonResponse(['success' => false, 'message' => 'ID funzione non valido.']); } if ($functionName === '') { jsonResponse(['success' => false, 'message' => 'Il nome funzione è obbligatorio.']); } if ($email !== '' && !filter_var($email, FILTER_VALIDATE_EMAIL)) { jsonResponse(['success' => false, 'message' => 'Email non valida.']); } $stmt = $pdo->prepare("\n UPDATE company_functions\n SET function_name = :function_name,\n person_full_name = :person_full_name,\n phone = :phone,\n email = :email,\n notes = :notes,\n sort_order = :sort_order,\n is_active = :is_active,\n updated_at = NOW()\n WHERE id = :id\n "); $stmt->execute([ 'function_name' => $functionName, 'person_full_name' => $personFullName !== '' ? $personFullName : '', 'phone' => $phone !== '' ? $phone : null, 'email' => $email !== '' ? $email : null, 'notes' => $notes !== '' ? $notes : null, 'sort_order' => $sortOrder, 'is_active' => $isActive, 'id' => $id, ]); jsonResponse(['success' => true, 'message' => 'Funzione aggiornata correttamente.']); } if ($action === 'delete') { $id = (int)($_POST['id'] ?? 0); if ($id <= 0) { jsonResponse(['success' => false, 'message' => 'ID funzione non valido.']); } $stmt = $pdo->prepare("DELETE FROM company_functions WHERE id = :id"); $stmt->execute(['id' => $id]); jsonResponse(['success' => true, 'message' => 'Funzione cancellata correttamente.']); } jsonResponse(['success' => false, 'message' => 'Azione non riconosciuta.']); } catch (Exception $e) { jsonResponse(['success' => false, 'message' => $e->getMessage()]); } } /* ========================================== PAGE DATA ========================================== */ $stmtFunctions = $pdo->query("\n SELECT id, function_name, person_full_name, phone, email, notes, sort_order, is_active, created_at, updated_at\n FROM company_functions\n ORDER BY is_active DESC, sort_order ASC, function_name ASC, person_full_name ASC\n"); $functions = $stmtFunctions->fetchAll(PDO::FETCH_ASSOC); ?> Funzioni Aziendali - <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?>
Funzioni Aziendali
Elenco Funzioni
Gestione di RSPP, medico del lavoro, RLS e altre funzioni aziendali.
Funzione Nominativo Contatti Note Ordine Stato Azioni
Da definire
📞 ✉️ Nessun contatto
Attiva Non attiva