diff --git a/firka/lib/helpers/api/model/test.dart b/firka/lib/helpers/api/model/test.dart index 199a2e45..b28f588e 100644 --- a/firka/lib/helpers/api/model/test.dart +++ b/firka/lib/helpers/api/model/test.dart @@ -30,8 +30,8 @@ class Test { factory Test.fromJson(Map json) { return Test( uid: json['Uid'], - date: DateTime.parse(json['Datum']), - reportDate: DateTime.parse(json['BejelentesDatuma']), + date: DateTime.parse(json['Datum']).toLocal(), + reportDate: DateTime.parse(json['BejelentesDatuma']).toLocal(), teacherName: json['RogzitoTanarNeve'], lessonNumber: json['OrarendiOraOraszama'], subject: Subject.fromJson(json['Tantargy']), diff --git a/firka/lib/ui/phone/pages/home/home_timetable_mo.dart b/firka/lib/ui/phone/pages/home/home_timetable_mo.dart index f0f2f4fa..f49d03b0 100644 --- a/firka/lib/ui/phone/pages/home/home_timetable_mo.dart +++ b/firka/lib/ui/phone/pages/home/home_timetable_mo.dart @@ -9,6 +9,7 @@ import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:majesticons_flutter/majesticons_flutter.dart'; import 'package:transparent_pointer/transparent_pointer.dart'; +import '../../../../helpers/api/model/test.dart'; import '../../../../helpers/update_notifier.dart'; import '../../../../main.dart'; import '../../../widget/firka_icon.dart'; @@ -29,10 +30,11 @@ class HomeTimetableMonthlyScreen extends StatefulWidget { _HomeTimetableMonthlyScreen(); } -enum ActiveFilter { lessonNo, homework, omissions } +enum ActiveFilter { lessonNo, tests, omissions } class _HomeTimetableMonthlyScreen extends State { List? lessons; + List? tests; List? dates; DateTime? now; int active = 0; @@ -53,6 +55,7 @@ class _HomeTimetableMonthlyScreen extends State { var lessonsResp = await widget.data.client .getTimeTable(monthStart, monthEnd, forceCache: forceCache); + var testsResp = await widget.data.client.getTests(forceCache: forceCache); List dates = List.empty(growable: true); for (var i = 0; i < days; i++) { @@ -64,6 +67,7 @@ class _HomeTimetableMonthlyScreen extends State { ?.where((lesson) => lesson.type.name != TimetableConsts.event) .toList(); } + tests = testsResp.response; if (mounted) { setState(() { @@ -107,7 +111,7 @@ class _HomeTimetableMonthlyScreen extends State { @override Widget build(BuildContext context) { - if (lessons != null && dates != null) { + if (lessons != null && tests != null && dates != null) { List ttDays = []; final meow = dates![20]; @@ -169,9 +173,13 @@ class _HomeTimetableMonthlyScreen extends State { ); } break; - case ActiveFilter.homework: - if (lessonsToday.firstWhereOrNull( - (lesson) => lesson.homeworkUid != null) != + case ActiveFilter.tests: + if (lessonsToday.firstWhereOrNull((lesson) => tests!.any((test) => + test.lessonNumber == lesson.lessonNumber && + lesson.start.isAfter(test.date.getMidnight()) && + lesson.end.isBefore(test.date + .getMidnight() + .add(Duration(hours: 23, minutes: 59))))) != null) { body = Center( child: FirkaIconWidget( @@ -419,14 +427,18 @@ class _HomeTimetableMonthlyScreen extends State { Majesticon.editPen4Solid, color: appStyle.colors.accent, size: 16), lessons! - .where((lesson) => - lesson.start.isAfter(currentMonthStart) && - lesson.end.isBefore(currentMonthEnd) && - lesson.homeworkUid != null) + .where((lesson) => tests!.any((test) => + test.lessonNumber == lesson.lessonNumber && + lesson.start + .isAfter(test.date.getMidnight()) && + lesson.end.isBefore(test.date + .getMidnight() + .add( + Duration(hours: 23, minutes: 59))))) .length, - activeFilter == ActiveFilter.homework, () { + activeFilter == ActiveFilter.tests, () { setState(() { - activeFilter = ActiveFilter.homework; + activeFilter = ActiveFilter.tests; }); }), _StatusToast(