36 lines
1.3 KiB
Dart
36 lines
1.3 KiB
Dart
import 'package:reverse_nn/enums/schedule.dart';
|
|
|
|
class Scheduler {
|
|
static Schedule getSchedule(DateTime date) {
|
|
switch(date.weekday) {
|
|
case DateTime.friday: return Schedule.friday;
|
|
case DateTime.saturday: return Schedule.saturday;
|
|
case DateTime.sunday: return Schedule.sunday;
|
|
|
|
default: return Schedule.daily;
|
|
}
|
|
}
|
|
|
|
static List<ScheduleElement> getScheduleList() {
|
|
List<ScheduleElement> result = List<ScheduleElement>.empty(growable: true);
|
|
|
|
DateTime now = DateTime.now();
|
|
DateTime startSchedule = now.hour < 4 ? now.subtract(const Duration(days: 1)) : now;
|
|
|
|
bool currentReached = false;
|
|
for (ScheduleElement element in [...Scheduler.getSchedule(startSchedule).elements, ...Scheduler.getSchedule(startSchedule.add(const Duration(days: 1))).elements]) {
|
|
if(!currentReached) {
|
|
DateTime s = DateTime(now.year, now.month, now.day, element.startHours, element.startMinutes, 0);
|
|
if(now.compareTo(startSchedule) != 0 && element.startHours >= 4) { s = s.subtract(const Duration(days: 1)); }
|
|
DateTime e = s.add(Duration(minutes: element.duration)).subtract(const Duration(microseconds: 1));
|
|
|
|
if(now.isAfter(s) && now.isBefore(e)) { currentReached = true; }
|
|
else { continue; }
|
|
}
|
|
|
|
result.add(element);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
} |