format('Y-m-01'); $endOfMonth = (clone $monthDate)->modify('+1 month')->format('Y-m-d'); // ============================== // DATI UTENTE // ============================== $userId = $user->id; $schoolId = $user->school_id ?? null; if (!$schoolId) { http_response_code(400); echo json_encode(['error' => 'No school selected']); exit; } // ============================== // QUERY (IDENTICA ALLA WEB) // ============================== $stmt = $db->prepare(" SELECT sb.id AS booking_id, sb.status, cs.session_date, cs.start_time, cs.end_time, cs.room_name, c.name AS class_name, ct.level, o.available_entries, o.available_recoveries FROM session_bookings sb JOIN class_sessions cs ON sb.session_id = cs.id JOIN class_types ct ON cs.class_type_id = ct.id JOIN classes c ON ct.class_id = c.id JOIN orders o ON sb.order_id = o.id WHERE sb.user_id = ? AND cs.school_id = ? AND cs.session_date >= ? AND cs.session_date < ? ORDER BY cs.session_date ASC, cs.start_time ASC "); $stmt->execute([ $userId, $schoolId, $startOfMonth, $endOfMonth ]); $lessons = $stmt->fetchAll(PDO::FETCH_ASSOC); // ============================== // OUTPUT // ============================== echo json_encode([ 'month' => $month, 'count' => count($lessons), 'lessons' => $lessons ]);