import 'dart:convert';

import 'package:marianum_mobile/api/requestCache.dart';

import '../authenticate/authenticate.dart';
import 'getTimetable.dart';
import 'getTimetableParams.dart';
import 'getTimetableResponse.dart';

class GetTimetableCache extends RequestCache<GetTimetableResponse> {
  int day;

  GetTimetableCache({required onUpdate, required this.day}) : super(RequestCache.cacheMinute, onUpdate) {
    start("MarianumMobile", "wu-timetable-$day");
  }

  @override
  GetTimetableResponse onLocalData(String json) {
    return GetTimetableResponse.fromJson(jsonDecode(json));
  }

  @override
  Future<GetTimetableResponse> onLoad() async {
    return GetTimetable(
        GetTimetableParams(
            options: GetTimetableParamsOptions(
                element: GetTimetableParamsOptionsElement(
                    id: (await Authenticate.getSession()).personId,
                type: 5,
                keyType: GetTimetableParamsOptionsElementKeyType.id,
            ),
            startDate: day,
            endDate: day,
            teacherFields: GetTimetableParamsOptionsFields.all,
            subjectFields: GetTimetableParamsOptionsFields.all,
            roomFields: GetTimetableParamsOptionsFields.all,
            klasseFields: GetTimetableParamsOptionsFields.all,
        )
    )
    ).run();
  }
}