getConnection(); function e($value): string { return htmlspecialchars((string) $value, ENT_QUOTES, 'UTF-8'); } $serverCurrentDateTime = date('Y-m-d H:i:s'); $sql = " SELECT u.id AS id_utente, u.first_name AS nome_utente, u.last_name AS cognome_utente, u.email AS email_utente, COALESCE(ol.lezioni_acquistate, 0) AS lezioni_acquistate, COUNT(CASE WHEN bc.bookingstart <= NOW() AND bc.lostlesson = 'N' THEN 1 END) AS lezioni_praticate, COUNT(CASE WHEN bc.bookingstart > NOW() AND bc.lostlesson = 'N' THEN 1 END) AS lezioni_programmate, COUNT(CASE WHEN bc.lostlesson = 'Y' THEN 1 END) AS lezioni_perse FROM school_user su JOIN auth_users u ON u.id = su.user_id LEFT JOIN ( SELECT iduser, SUM(quantityclass) AS lezioni_acquistate FROM orderbook WHERE idschool = :idschool1 GROUP BY iduser ) ol ON ol.iduser = u.id LEFT JOIN bookingclass bc ON bc.iduser = u.id AND bc.idschool = :idschool2 AND bc.status <> 'cancelled' WHERE su.idschool = :idschool3 AND su.active = 'Y' AND su.school_role = 'student' GROUP BY u.id, u.first_name, u.last_name, u.email, ol.lezioni_acquistate ORDER BY u.last_name, u.first_name"; $st = $pdo->prepare($sql); $st->execute([':idschool1' => $idschool, ':idschool2' => $idschool, ':idschool3' => $idschool]); $users = $st->fetchAll(); foreach ($users as &$u) { $u['lezioni_da_programmare'] = max( 0, (int) $u['lezioni_acquistate'] - (int) $u['lezioni_praticate'] - (int) $u['lezioni_programmate'] - (int) $u['lezioni_perse'] ); } unset($u); ?>