36 lines
1.5 KiB
Dart
36 lines
1.5 KiB
Dart
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
import '../../../../../api/mhsl/customTimetableEvent/get/getCustomTimetableEventResponse.dart';
|
|
import '../../../../../api/webuntis/queries/getHolidays/getHolidaysResponse.dart';
|
|
import '../../../../../api/webuntis/queries/getRooms/getRoomsResponse.dart';
|
|
import '../../../../../api/webuntis/queries/getSubjects/getSubjectsResponse.dart';
|
|
import '../../../../../api/webuntis/queries/getTimegridUnits/getTimegridUnitsResponse.dart';
|
|
import '../../../../../api/webuntis/queries/getTimetable/getTimetableResponse.dart';
|
|
|
|
part 'timetable_state.freezed.dart';
|
|
part 'timetable_state.g.dart';
|
|
|
|
@freezed
|
|
abstract class TimetableState with _$TimetableState {
|
|
const TimetableState._();
|
|
|
|
const factory TimetableState({
|
|
@Default(<String, GetTimetableResponse>{}) Map<String, GetTimetableResponse> weekCache,
|
|
GetRoomsResponse? rooms,
|
|
GetSubjectsResponse? subjects,
|
|
GetHolidaysResponse? schoolHolidays,
|
|
GetTimegridUnitsResponse? timegrid,
|
|
GetCustomTimetableEventResponse? customEvents,
|
|
required DateTime startDate,
|
|
required DateTime endDate,
|
|
@Default(0) int dataVersion,
|
|
}) = _TimetableState;
|
|
|
|
factory TimetableState.fromJson(Map<String, Object?> json) => _$TimetableStateFromJson(json);
|
|
|
|
Iterable<GetTimetableResponseObject> getAllKnownLessons() =>
|
|
weekCache.values.expand((response) => response.result);
|
|
|
|
bool get hasReferenceData => rooms != null && subjects != null && schoolHolidays != null && customEvents != null;
|
|
}
|