30 lines
891 B
Dart
30 lines
891 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;
|
|
}
|
|
}
|