Files
Client/lib/view/pages/timetable/data/lesson_status.dart
T
2026-05-08 20:12:40 +02:00

37 lines
941 B
Dart

import '../../../../api/webuntis/queries/get_timetable/get_timetable_response.dart';
enum LessonStatus {
cancelled,
event,
irregular,
teacherChanged,
past,
ongoing,
regular,
}
class LessonStatusClassifier {
static LessonStatus classify(
GetTimetableResponseObject lesson,
DateTime startTime,
DateTime endTime,
DateTime now, {
bool isEvent = false,
}) {
if (lesson.code == 'cancelled') return LessonStatus.cancelled;
if (isEvent) return LessonStatus.event;
if (lesson.code == 'irregular' ||
(lesson.te.isNotEmpty && lesson.te.first.id == 0)) {
return LessonStatus.irregular;
}
if (lesson.te.any((t) => t.orgname != null)) {
return LessonStatus.teacherChanged;
}
if (endTime.isBefore(now)) return LessonStatus.past;
if (startTime.isBefore(now) && endTime.isAfter(now)) {
return LessonStatus.ongoing;
}
return LessonStatus.regular;
}
}