nextCourseMeetingPosition function
- CourseTableData courseTable, {
- required DateTime now,
- CourseScheduleDateRange? dateRange,
Finds the one scheduled course that occurs next relative to now.
Today's remaining courses take priority. If none remain, the first course on the next date with a scheduled course is selected.
Implementation
NextCourseMeetingPosition? nextCourseMeetingPosition(
CourseTableData courseTable, {
required DateTime now,
CourseScheduleDateRange? dateRange,
}) {
final today = _dateOnly(now);
final todayMeetings = courseMeetingsForDate(
courseTable,
date: today,
now: now,
dateRange: dateRange,
);
if (nextCourseIndex(todayMeetings, now: now) case final index?) {
return (date: today, index: index);
}
if (adjacentCourseDate(
courseTable,
date: today,
direction: .next,
dateRange: dateRange,
)
case final date?) {
return (date: date, index: 0);
}
return null;
}