Added api for custom timetable events

This commit is contained in:
2024-02-12 01:00:12 +01:00
parent 3eae5ba10a
commit 22db412e75
36 changed files with 849 additions and 229 deletions

View File

@ -3,7 +3,6 @@ import 'dart:async';
import 'package:flutter/material.dart';
import 'package:marianum_mobile/extensions/dateTime.dart';
import 'package:marianum_mobile/view/pages/timetable/addCustomTimetableEventDialog.dart';
import 'package:provider/provider.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart';
@ -17,6 +16,8 @@ import '../../../widget/loadingSpinner.dart';
import '../../../widget/placeholderView.dart';
import 'appointmenetComponent.dart';
import 'appointmentDetails.dart';
import 'arbitraryAppointment.dart';
import 'customTimetableEventEditDialog.dart';
import 'timeRegionComponent.dart';
import 'timetableEvents.dart';
@ -70,7 +71,7 @@ class _TimetableState extends State<Timetable> {
onPressed: () {
showDialog(
context: context,
builder: (context) => const AddCustomTimetableEventDialog(),
builder: (context) => const CustomTimetableEventEditDialog(),
barrierDismissible: false,
);
},
@ -232,7 +233,7 @@ class _TimetableState extends State<Timetable> {
DateTime startTime = _parseWebuntisTimestamp(element.date, element.startTime);
DateTime endTime = _parseWebuntisTimestamp(element.date, element.endTime);
return Appointment(
id: element,
id: ArbitraryAppointment(webuntis: element),
startTime: startTime,
endTime: endTime,
subject: subjects.result.firstWhere((subject) => subject.id == element.su[0].id).name,
@ -246,7 +247,7 @@ class _TimetableState extends State<Timetable> {
} catch(e) {
DateTime endTime = _parseWebuntisTimestamp(element.date, element.endTime);
return Appointment(
id: element,
id: ArbitraryAppointment(webuntis: element),
startTime: _parseWebuntisTimestamp(element.date, element.startTime),
endTime: endTime,
subject: "Änderung",
@ -259,6 +260,20 @@ class _TimetableState extends State<Timetable> {
}
}).toList();
appointments.addAll(data.getCustomTimetableEventResponse.events.map((customEvent) {
return Appointment(
id: ArbitraryAppointment(custom: customEvent),
startTime: customEvent.startDate,
endTime: customEvent.endDate,
location: customEvent.description,
subject: customEvent.title,
recurrenceRule: customEvent.rrule,
color: Colors.deepOrange,
startTimeZone: '',
endTimeZone: '',
);
}));
return TimetableEvents(appointments);
}
@ -288,8 +303,10 @@ class _TimetableState extends State<Timetable> {
}
bool _isCrossedOut(CalendarAppointmentDetails calendarEntry) {
GetTimetableResponseObject webuntisElement = (calendarEntry.appointments.first.id as GetTimetableResponseObject);
return webuntisElement.code == "cancelled";
ArbitraryAppointment appointment = calendarEntry.appointments.first.id as ArbitraryAppointment;
if(appointment.hasWebuntis()) {
return appointment.webuntis!.code == "cancelled";
}
return false;
}
}