Classi della scuola
| Categoria | Nome | Descrizione | Foto | Stato | Azioni | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
||||||||||||||||||||||||
|
Nessuna variazione disponibile per questa classe.
|
||||||||||||||||||||||||
Sessioni Programmata
La data di fine non può essere precedente alla data di inizio.
';
$end_date = $start_date;
}
// Recupera tutte le sessioni nell'intervallo
// === NUOVA QUERY CON CONTEGGIO E LISTA PRENOTATI ===
$stmt = $pdo->prepare("
SELECT
cs.*,
ct.level, ct.day_of_week, ct.start_time AS ct_start_time, ct.room_name, ct.teacher_id,
c.name AS class_name, c.photo AS class_photo,
ct.photo AS variation_photo,
t.first_name AS teacher_first_name, t.last_name AS teacher_last_name,
-- Contiamo gli studenti prenotati (solo booked, attended, rescheduled)
(SELECT COUNT(*)
FROM session_bookings sb
WHERE sb.session_id = cs.id
AND sb.status IN ('booked', 'attended', 'rescheduled')
) AS booked_count,
-- Capacità massima (da class_sessions o da class_types se null)
COALESCE(cs.max_capacity, ct.max_capacity, 0) AS effective_capacity,
-- Lista studenti prenotati (per il modale)
(SELECT GROUP_CONCAT(
CONCAT(au.first_name, ' ', au.last_name, '|', au.email, '|', COALESCE(au.phone, ''))
SEPARATOR ';;;'
)
FROM session_bookings sb
JOIN auth_users au ON sb.user_id = au.id
WHERE sb.session_id = cs.id
AND sb.status IN ('booked', 'attended', 'rescheduled')
) AS booked_students
FROM class_sessions cs
JOIN class_types ct ON cs.class_type_id = ct.id
JOIN classes c ON ct.class_id = c.id
LEFT JOIN teachers t ON cs.teacher_id = t.id
WHERE cs.session_date BETWEEN ? AND ?
AND c.school_id = ?
ORDER BY cs.session_date, cs.start_time
");
$stmt->execute([$start_date, $end_date, $school_id]);
$range_sessions = $stmt->fetchAll();
?>
Sessioni del
Sessioni dal
al
( totali)
| Data | Classe | Livello | Orario | Sala | Insegnante | Stato | Prenotati | Azioni |
|---|---|---|---|---|---|---|---|---|
| Nessuna sessione programmata in questo intervallo. | ||||||||
| - | Non assegnato'; ?> | 0 ? $session['effective_capacity'] : '∞'; $color = ($capacity !== '∞' && $booked >= $capacity) ? 'danger' : 'success'; ?> | ||||||