getConnection(); $sql = " SELECT d.*, s.name AS subject_name, s.color AS subject_color, GROUP_CONCAT(DISTINCT CONCAT(e.first_name, ' ', e.last_name) ORDER BY e.first_name SEPARATOR ', ') as responsabili, GROUP_CONCAT(DISTINCT e.department ORDER BY e.department SEPARATOR ', ') as reparti_persone, d.departments as reparti_assegnati FROM scad_deadlines d LEFT JOIN scad_subjects s ON s.id = d.subject_id LEFT JOIN scad_deadline_employee de ON de.deadline_id = d.id LEFT JOIN employees e ON e.id = de.employee_id "; $where = []; $params = []; $filterStatus = $_GET['status'] ?? ''; $filterDept = $_GET['department'] ?? ''; $filterEmployee = $_GET['employee'] ?? ''; if ($filterStatus === 'non-completata') { $where[] = "d.status != 'completed'"; } elseif ($filterStatus === 'completata') { $where[] = "d.status = 'completed'"; } elseif ($filterStatus === 'scaduta') { $where[] = "d.status = 'active' AND d.due_date < CURDATE()"; } elseif ($filterStatus === 'in-scadenza') { $where[] = "d.status = 'active' AND d.due_date >= CURDATE() AND d.due_date <= DATE_ADD(CURDATE(), INTERVAL d.notification_days DAY)"; } elseif ($filterStatus === 'attiva') { $where[] = "d.status = 'active' AND d.due_date > DATE_ADD(CURDATE(), INTERVAL d.notification_days DAY)"; } if ($filterEmployee) { $where[] = "EXISTS (SELECT 1 FROM scad_deadline_employee de2 JOIN employees e2 ON e2.id = de2.employee_id WHERE de2.deadline_id = d.id AND CONCAT(e2.first_name, ' ', e2.last_name) = ?)"; $params[] = $filterEmployee; } $dueFrom = $_GET['due_from'] ?? ''; $dueTo = $_GET['due_to'] ?? ''; $checkFrom = $_GET['check_from'] ?? ''; $checkTo = $_GET['check_to'] ?? ''; if ($dueFrom) { $where[] = "d.due_date >= ?"; $params[] = $dueFrom; } if ($dueTo) { $where[] = "d.due_date <= ?"; $params[] = $dueTo; } if ($checkFrom) { $where[] = "d.check_date >= ?"; $params[] = $checkFrom; } if ($checkTo) { $where[] = "d.check_date <= ?"; $params[] = $checkTo; } if (!empty($where)) { $sql .= " WHERE " . implode(' AND ', $where); } $sql .= " GROUP BY d.id ORDER BY (d.status = 'completed') ASC, d.due_date ASC"; $stmt = $pdo->prepare($sql); $stmt->execute($params); $deadlines = $stmt->fetchAll(PDO::FETCH_ASSOC); $today = date('Y-m-d'); $recurrenceLabels = ['once'=>'Una tantum','monthly'=>'Mensile','quarterly'=>'Trimestrale','semiannual'=>'Semestrale','annual'=>'Annuale','biennial'=>'Biennale','triennial'=>'Triennale','quadriennial'=>'Quadriennale','quinquennial'=>'Quinquennale','decennial'=>'Decennale','quindecennial'=>'Quindicennale']; $filterLabel = ''; if ($filterStatus) { $statusLabels = ['non-completata'=>'Non completate','attiva'=>'Attive','in-scadenza'=>'In scadenza','scaduta'=>'Scadute','completata'=>'Completate']; $filterLabel = $statusLabels[$filterStatus] ?? ''; } if ($filterDept) { $filterLabel .= ($filterLabel ? ' — ' : '') . 'Reparto: ' . $filterDept; } if ($filterEmployee) { $filterLabel .= ($filterLabel ? ' — ' : '') . 'Responsabile: ' . $filterEmployee; } if ($dueFrom || $dueTo) { $filterLabel .= ($filterLabel ? ' — ' : '') . 'Scadenza: ' . ($dueFrom ? date('d/m/Y', strtotime($dueFrom)) : '...') . ' → ' . ($dueTo ? date('d/m/Y', strtotime($dueTo)) : '...'); } if ($checkFrom || $checkTo) { $filterLabel .= ($filterLabel ? ' — ' : '') . 'Controllo: ' . ($checkFrom ? date('d/m/Y', strtotime($checkFrom)) : '...') . ' → ' . ($checkTo ? date('d/m/Y', strtotime($checkTo)) : '...'); } ?> Stampa Scadenzario >
Argomento Legge / Art. Dettaglio Periodicità Scadenza Data Documento Data Scadenza Data Ultimo Controllo Responsabilità Luogo di Archiviazione Note