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

67 lines
4.1 KiB
Dart

import 'package:reverse_nn/enums/direction.dart';
import 'package:sprintf/sprintf.dart';
enum Schedule {
daily(elements: [
ScheduleElement(startHours: 4, startMinutes: 0, duration: 415, direction: Direction.inCity),
ScheduleElement(startHours: 10, startMinutes: 55, duration: 5, direction: Direction.change),
ScheduleElement(startHours: 11, startMinutes: 0, duration: 115, direction: Direction.outCity),
ScheduleElement(startHours: 12, startMinutes: 55, duration: 5, direction: Direction.change),
ScheduleElement(startHours: 13, startMinutes: 0, duration: 145, direction: Direction.inCity),
ScheduleElement(startHours: 15, startMinutes: 25, duration: 5, direction: Direction.change),
ScheduleElement(startHours: 15, startMinutes: 30, duration: 205, direction: Direction.outCity),
ScheduleElement(startHours: 18, startMinutes: 55, duration: 5, direction: Direction.change),
ScheduleElement(startHours: 19, startMinutes: 0, duration: 55, direction: Direction.inCity),
ScheduleElement(startHours: 19, startMinutes: 55, duration: 5, direction: Direction.change),
ScheduleElement(startHours: 20, startMinutes: 0, duration: 475, direction: Direction.outCity),
ScheduleElement(startHours: 3, startMinutes: 55, duration: 5, direction: Direction.change),
]),
friday(elements: [
ScheduleElement(startHours: 4, startMinutes: 0, duration: 415, direction: Direction.inCity),
ScheduleElement(startHours: 10, startMinutes: 55, duration: 5, direction: Direction.change),
ScheduleElement(startHours: 11, startMinutes: 0, duration: 115, direction: Direction.outCity),
ScheduleElement(startHours: 12, startMinutes: 55, duration: 5, direction: Direction.change),
ScheduleElement(startHours: 13, startMinutes: 0, duration: 55, direction: Direction.inCity),
ScheduleElement(startHours: 13, startMinutes: 55, duration: 5, direction: Direction.change),
ScheduleElement(startHours: 14, startMinutes: 0, duration: 840, direction: Direction.outCity),
]),
saturday(elements: [
ScheduleElement(startHours: 4, startMinutes: 0, duration: 655, direction: Direction.outCity),
ScheduleElement(startHours: 14, startMinutes: 55, duration: 5, direction: Direction.change),
ScheduleElement(startHours: 15, startMinutes: 0, duration: 175, direction: Direction.inCity),
ScheduleElement(startHours: 17, startMinutes: 55, duration: 5, direction: Direction.change),
ScheduleElement(startHours: 18, startMinutes: 0, duration: 115, direction: Direction.outCity),
ScheduleElement(startHours: 19, startMinutes: 55, duration: 5, direction: Direction.change),
ScheduleElement(startHours: 20, startMinutes: 0, duration: 115, direction: Direction.inCity),
ScheduleElement(startHours: 21, startMinutes: 55, duration: 5, direction: Direction.change),
ScheduleElement(startHours: 22, startMinutes: 0, duration: 355, direction: Direction.outCity),
ScheduleElement(startHours: 3, startMinutes: 55, duration: 5, direction: Direction.change),
]),
sunday(elements: [
ScheduleElement(startHours: 4, startMinutes: 0, duration: 235, direction: Direction.inCity),
ScheduleElement(startHours: 7, startMinutes: 55, duration: 5, direction: Direction.change),
ScheduleElement(startHours: 8, startMinutes: 0, duration: 175, direction: Direction.outCity),
ScheduleElement(startHours: 10, startMinutes: 55, duration: 5, direction: Direction.change),
ScheduleElement(startHours: 11, startMinutes: 0, duration: 1020, direction: Direction.inCity),
]);
const Schedule({required this.elements});
final List<ScheduleElement> elements;
}
class ScheduleElement {
final int startHours;
final int startMinutes;
final int duration;
final Direction direction;
const ScheduleElement({required this.startHours, required this.startMinutes, required this.duration, required this.direction});
String getStartedTimeString() { return sprintf('%02i:%02i', [startHours, startMinutes]); }
String getEndedTimeString() {
DateTime e = DateTime(2024, 8, 1, startHours, startMinutes).add(Duration(minutes: duration)).subtract(const Duration(microseconds: 1));
return sprintf('%02i:%02i', [e.hour, e.minute]);
}
}