added guardian login with views for their assigned childs
This commit is contained in:
@@ -4,6 +4,8 @@ import '../../../../../api/marianumconnect/queries/timetable_custom_events/timet
|
||||
import '../../../../../api/marianumconnect/queries/timetable_custom_events/timetable_custom_events_cache.dart';
|
||||
import '../../../../../api/marianumconnect/queries/timetable_custom_events/timetable_custom_events_remove.dart';
|
||||
import '../../../../../api/marianumconnect/queries/timetable_custom_events/timetable_custom_events_update.dart';
|
||||
import '../../../../../api/marianumconnect/queries/timetable_get_child_week/timetable_get_child_week.dart';
|
||||
import '../../../../../api/marianumconnect/queries/timetable_get_element_week/timetable_get_element_week.dart';
|
||||
import '../../../../../api/marianumconnect/queries/timetable_get_holidays/timetable_get_holidays.dart';
|
||||
import '../../../../../api/marianumconnect/queries/timetable_get_holidays/timetable_get_holidays_response.dart';
|
||||
import '../../../../../api/marianumconnect/queries/timetable_get_rooms/timetable_get_rooms.dart';
|
||||
@@ -21,19 +23,43 @@ import '../../../../../api/marianumconnect/queries/timetable_subject_colors/time
|
||||
import '../../../../../api/mhsl/custom_timetable_event/custom_timetable_event.dart';
|
||||
import '../../../../../api/mhsl/custom_timetable_event/get/get_custom_timetable_event_response.dart';
|
||||
import '../../../../../api/request_cache.dart';
|
||||
import '../subject/timetable_subject.dart';
|
||||
|
||||
/// Pulls the timetable from the Marianum-Connect mobile API. Each endpoint is
|
||||
/// its own HTTP call; this provider exposes the lazy futures so the bloc can
|
||||
/// chain them without seeing the dio layer.
|
||||
/// chain them without seeing the dio layer. Only the week depends on the
|
||||
/// [TimetableSubject]; the reference data is school-wide.
|
||||
class TimetableDataProvider {
|
||||
/// The endpoint serving [subject]'s week. Shared with the widget background
|
||||
/// isolate, which has no bloc.
|
||||
static Future<TimetableGetWeekResponse> fetchWeek(
|
||||
TimetableSubject subject, {
|
||||
required DateTime from,
|
||||
required DateTime until,
|
||||
}) => switch (subject) {
|
||||
OwnTimetable() => TimetableGetWeek().run(from: from, until: until),
|
||||
ElementTimetable(:final element) => TimetableGetElementWeek().run(
|
||||
type: element.type,
|
||||
id: element.id,
|
||||
from: from,
|
||||
until: until,
|
||||
),
|
||||
ChildTimetable(:final childId) => TimetableGetChildWeek().run(
|
||||
childId: childId,
|
||||
from: from,
|
||||
until: until,
|
||||
),
|
||||
NoTimetable() => throw StateError('No timetable subject'),
|
||||
};
|
||||
|
||||
Future<TimetableGetWeekResponse> getWeek(
|
||||
TimetableSubject subject,
|
||||
DateTime startDate,
|
||||
DateTime endDate, {
|
||||
void Function(Object)? onError,
|
||||
bool renew = false,
|
||||
}) async {
|
||||
try {
|
||||
return await TimetableGetWeek().run(from: startDate, until: endDate);
|
||||
return await fetchWeek(subject, from: startDate, until: endDate);
|
||||
} catch (e) {
|
||||
onError?.call(e);
|
||||
rethrow;
|
||||
|
||||
Reference in New Issue
Block a user