courseMeetingsForDate function
- CourseTableData courseTable, {
- required DateTime date,
- required DateTime now,
- CourseScheduleDateRange? dateRange,
Returns the scheduled meetings on date in chronological order.
When dateRange is provided, dates outside the selected semester return no
meetings because the timetable rows repeat by weekday.
Implementation
List<CourseScheduleMeeting> courseMeetingsForDate(
CourseTableData courseTable, {
required DateTime date,
required DateTime now,
CourseScheduleDateRange? dateRange,
}) {
if (!_isInDateRange(date, dateRange)) return const [];
final day = _dayOfWeek(date);
final meetings =
[
for (final entry in courseTable.scheduled.entries)
if (entry.key.day == day)
_meetingFor(
date: date,
startPeriod: entry.key.period,
course: entry.value,
now: now,
),
]..sort((first, second) {
final startComparison = first.start.compareTo(second.start);
if (startComparison != 0) return startComparison;
return first.course.id.compareTo(second.course.id);
});
return meetings;
}