getConnection(); // Optional filter: show only deadlines of a given subject (used by "Storico" link from subjects CRUD) $filterSubjectId = isset($_GET['subject_id']) && is_numeric($_GET['subject_id']) ? (int)$_GET['subject_id'] : null; $filterSubjectName = null; if ($filterSubjectId) { $s = $pdo->prepare("SELECT name FROM scad_subjects WHERE id = ?"); $s->execute([$filterSubjectId]); $filterSubjectName = $s->fetchColumn() ?: null; if (!$filterSubjectName) { $filterSubjectId = null; } } // Optional filter: limit to deadlines assigned to the current user (directly OR via department) $filterMy = !empty($_GET['filter_my']); $filterMyEmployee = null; if ($filterMy) { $st = $pdo->prepare("SELECT id, department FROM employees WHERE auth_user_id = ? LIMIT 1"); $st->execute([(int)$iduserlogin]); $filterMyEmployee = $st->fetch(PDO::FETCH_ASSOC) ?: null; if (!$filterMyEmployee) { $filterMy = false; } } $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, (SELECT COUNT(*) FROM scad_deadline_attachments att WHERE att.deadline_id = d.id) as attachment_count 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 = []; if ($filterSubjectId) { $where[] = "d.subject_id = ?"; $params[] = $filterSubjectId; } if ($filterMy && $filterMyEmployee) { $where[] = "(d.id IN (SELECT deadline_id FROM scad_deadline_employee WHERE employee_id = ?)" . " OR (? <> '' AND FIND_IN_SET(?, REPLACE(d.departments, ', ', ',')) > 0))"; $params[] = (int)$filterMyEmployee['id']; $params[] = (string)($filterMyEmployee['department'] ?? ''); $params[] = (string)($filterMyEmployee['department'] ?? ''); } 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); $employees = $pdo->query("SELECT id, first_name, last_name, department FROM employees WHERE status = 'active' ORDER BY first_name")->fetchAll(PDO::FETCH_ASSOC); $departments = $pdo->query("SELECT DISTINCT department FROM employees WHERE department IS NOT NULL AND department != '' ORDER BY department")->fetchAll(PDO::FETCH_COLUMN); $subjects = $pdo->query("SELECT id, name, color FROM scad_subjects ORDER BY name")->fetchAll(PDO::FETCH_ASSOC); $today = date('Y-m-d'); ?> Scadenzario - Lista Scadenze
Storico per argomento: (tutte le scadenze — aperte e chiuse)
Rimuovi filtro
Le mie scadenze (assegnate a me o al reparto )
Tutte le scadenze
Lista Scadenze

Nessuna scadenza registrata.
Clicca "Nuova Scadenza" per aggiungere la prima.

data-subject-color="" style="--subject-color: " data-department="" data-employees="" data-due-date="" data-check-date="">
0): ?>
data-subject-color="" style="--subject-color: " data-department="" data-employees="" data-due-date="" data-check-date="">
Argomento Dettaglio Legge/Art. Scadenza Verifica Responsabili Stato Azioni
0): ?>