44 lines
1.4 KiB
Dart
44 lines
1.4 KiB
Dart
import '../../../requestCache.dart';
|
|
import '../authenticate/authenticate.dart';
|
|
import 'getTimetable.dart';
|
|
import 'getTimetableParams.dart';
|
|
import 'getTimetableResponse.dart';
|
|
|
|
class GetTimetableCache extends SimpleCache<GetTimetableResponse> {
|
|
GetTimetableCache({
|
|
required void Function(GetTimetableResponse) onUpdate,
|
|
super.onError,
|
|
required int startdate,
|
|
required int enddate,
|
|
super.renew,
|
|
}) : super(
|
|
cacheTime: RequestCache.cacheMinute,
|
|
loader: () => _load(startdate, enddate),
|
|
fromJson: GetTimetableResponse.fromJson,
|
|
onUpdate: onUpdate,
|
|
) {
|
|
start('wu-timetable-$startdate-$enddate');
|
|
}
|
|
|
|
static Future<GetTimetableResponse> _load(int startdate, int enddate) async {
|
|
final session = await Authenticate.getSession();
|
|
return GetTimetable(
|
|
GetTimetableParams(
|
|
options: GetTimetableParamsOptions(
|
|
element: GetTimetableParamsOptionsElement(
|
|
id: session.personId,
|
|
type: session.personType,
|
|
keyType: GetTimetableParamsOptionsElementKeyType.id,
|
|
),
|
|
startDate: startdate,
|
|
endDate: enddate,
|
|
teacherFields: GetTimetableParamsOptionsFields.all,
|
|
subjectFields: GetTimetableParamsOptionsFields.all,
|
|
roomFields: GetTimetableParamsOptionsFields.all,
|
|
klasseFields: GetTimetableParamsOptionsFields.all,
|
|
),
|
|
),
|
|
).run();
|
|
}
|
|
}
|