Files
reverse_nn/lib/utils/scheduler.dart
2024-12-16 00:38:18 +03:00

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;
}
}