Initial commit
This commit is contained in:
36
lib/utils/scheduler.dart
Normal file
36
lib/utils/scheduler.dart
Normal file
@@ -0,0 +1,36 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user