overdue deadlines (scaduta) * - orange -> approaching deadlines (in scadenza) * Scope: deadlines assigned directly to the user OR to their department. */ $_empStmt = $pdo->prepare("SELECT id, department FROM employees WHERE auth_user_id = ? LIMIT 1"); $_empStmt->execute([(int)$iduserlogin]); $_emp = $_empStmt->fetch(PDO::FETCH_ASSOC) ?: null; $_overdue = 0; $_approaching = 0; if ($_emp) { $_empId = (int)$_emp['id']; $_deptRaw = (string)($_emp['department'] ?? ''); $_dept = trim($_deptRaw); $_sql = " SELECT SUM(CASE WHEN d.due_date < CURDATE() THEN 1 ELSE 0 END) AS overdue_cnt, SUM(CASE WHEN d.due_date >= CURDATE() AND d.due_date <= DATE_ADD(CURDATE(), INTERVAL d.notification_days DAY) THEN 1 ELSE 0 END) AS approaching_cnt FROM scad_deadlines d WHERE d.status <> 'completed' AND ( d.id IN (SELECT deadline_id FROM scad_deadline_employee WHERE employee_id = ?) OR (? <> '' AND FIND_IN_SET(?, REPLACE(d.departments, ', ', ',')) > 0) ) "; $_st = $pdo->prepare($_sql); $_st->execute([$_empId, $_dept, $_dept]); $_row = $_st->fetch(PDO::FETCH_ASSOC) ?: []; $_overdue = (int)($_row['overdue_cnt'] ?? 0); $_approaching = (int)($_row['approaching_cnt'] ?? 0); } if (!$_emp || ($_overdue === 0 && $_approaching === 0)) { return; } ?>