getConnection(); function e($value): string { return htmlspecialchars((string) $value, ENT_QUOTES, 'UTF-8'); } $serverCurrentDateTime = date('Y-m-d H:i:s'); $sql = " SELECT auth_users.id AS id_utente, auth_users.first_name AS nome_utente, auth_users.last_name AS cognome_utente, auth_users.email AS email_utente, COALESCE(orderbook_lessons.lezioni_acquistate, 0) AS lezioni_acquistate, MAX(CASE WHEN active_orders.iduser IS NOT NULL THEN 1 ELSE 0 END) AS ha_ordine_attivo, MAX(cert.ultima_scadenza) AS ultima_scadenza_cert, MAX(CASE WHEN cert.ultima_scadenza IS NULL OR cert.ultima_scadenza < CURDATE() THEN 1 ELSE 0 END) AS certificato_scaduto, COUNT(CASE WHEN bookingclass.bookingstart <= CURDATE() AND bookingclass.lostlesson = 'N' THEN 1 END) AS lezioni_praticate, COUNT(CASE WHEN bookingclass.bookingstart > CURDATE() THEN 1 END) AS lezioni_programmate, COUNT(CASE WHEN bookingclass.lostlesson = 'Y' THEN 1 END) AS lezioni_perse, COALESCE(orderbook_lessons.lezioni_acquistate, 0) - COUNT(CASE WHEN bookingclass.bookingstart > CURDATE() THEN 1 END) - COUNT(CASE WHEN bookingclass.bookingstart <= CURDATE() AND bookingclass.lostlesson = 'N' THEN 1 END) - COUNT(CASE WHEN bookingclass.lostlesson = 'Y' THEN 1 END) AS lezioni_da_programmare FROM auth_users LEFT JOIN ( SELECT iduser, SUM(quantityclass) AS lezioni_acquistate FROM orderbook GROUP BY iduser ) AS orderbook_lessons ON auth_users.id = orderbook_lessons.iduser LEFT JOIN ( SELECT DISTINCT iduser FROM orderbook WHERE expireon >= CURDATE() ) AS active_orders ON auth_users.id = active_orders.iduser LEFT JOIN ( SELECT iduser, MAX(expirydatedocument) AS ultima_scadenza FROM certificateuserprofile GROUP BY iduser ) AS cert ON auth_users.id = cert.iduser LEFT JOIN bookingclass ON auth_users.id = bookingclass.iduser GROUP BY auth_users.id, auth_users.last_name ORDER BY auth_users.last_name"; $users = $pdo->query($sql)->fetchAll(); $activeUsersCount = count(array_filter($users, fn($u) => (int) $u['ha_ordine_attivo'] === 1)); $expiredCertCount = count(array_filter($users, fn($u) => (int) $u['ha_ordine_attivo'] === 1 && (int) $u['certificato_scaduto'] === 1)); ?>