summaryrefslogtreecommitdiff
path: root/lib/services
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrik@amftech.nl>2022-08-16 11:19:49 +0200
committerAldrik Ramaekers <aldrik@amftech.nl>2022-08-16 11:19:49 +0200
commit00bf8823311c067f5b0e9a785a5048e6bd8ad122 (patch)
treeba2d727345038b7da2ea628e5e865572033df8e7 /lib/services
ok
Diffstat (limited to 'lib/services')
-rw-r--r--lib/services/ishift_provider_service.dart10
-rw-r--r--lib/services/mock_program_provider_service.dart90
2 files changed, 100 insertions, 0 deletions
diff --git a/lib/services/ishift_provider_service.dart b/lib/services/ishift_provider_service.dart
new file mode 100644
index 0000000..2022536
--- /dev/null
+++ b/lib/services/ishift_provider_service.dart
@@ -0,0 +1,10 @@
+import 'dart:async';
+
+import 'package:training_planner/shift.dart';
+
+abstract class IProgramProviderService {
+ Future<List<Shift>> getPastShifts();
+ Future<List<Shift>> getShiftsForWeek(DateTime firstDayOfWeek);
+ Future<void> updateShift(Shift shift);
+ Future<void> addShift(Shift shift);
+}
diff --git a/lib/services/mock_program_provider_service.dart b/lib/services/mock_program_provider_service.dart
new file mode 100644
index 0000000..5a1f9f4
--- /dev/null
+++ b/lib/services/mock_program_provider_service.dart
@@ -0,0 +1,90 @@
+import 'package:training_planner/services/ishift_provider_service.dart';
+import 'package:training_planner/shift.dart';
+import 'package:uuid/uuid.dart';
+import 'package:in_date_utils/in_date_utils.dart' as DateUtilities;
+
+class MockShiftProviderService extends IProgramProviderService {
+ List<Shift> savedShifts = [];
+
+ MockShiftProviderService() {
+ List<Shift> shifts = [];
+
+ shifts.add(Shift(
+ end: DateTime(2022, 8, 8, 20, 30),
+ start: DateTime(2022, 8, 8, 16, 30),
+ type: ShiftType.Avondrit));
+
+ shifts.add(Shift(
+ end: DateTime(2022, 8, 6, 20, 30),
+ start: DateTime(2022, 8, 6, 16, 30),
+ type: ShiftType.Avondrit));
+
+ shifts.add(Shift(
+ end: DateTime(2022, 8, 5, 20, 30),
+ start: DateTime(2022, 8, 5, 16, 30),
+ type: ShiftType.Avondrit));
+
+ shifts.add(
+ Shift(start: DateTime(2022, 8, 4, 16, 30), type: ShiftType.Avondrit));
+
+ shifts.add(Shift(
+ end: DateTime(2022, 8, 1, 17, 30),
+ start: DateTime(2022, 8, 1, 9, 30),
+ type: ShiftType.Dagrit));
+
+ shifts.add(
+ Shift(start: DateTime(2022, 8, 22, 9, 30), type: ShiftType.Dagrit));
+
+ shifts.add(Shift(
+ start: DateTime.now().subtract(Duration(hours: 2)),
+ type: ShiftType.Dagrit));
+
+ savedShifts = shifts;
+ }
+
+ @override
+ Future<void> updateShift(Shift shift) async {
+ for (var item in savedShifts) {
+ if (DateUtilities.DateUtils.isSameDay(shift.start, item.start)) {
+ item.isActive = shift.isActive;
+ item.start = item.start;
+ item.end = item.end;
+ item.type = item.type;
+ break;
+ }
+ }
+ }
+
+ @override
+ Future<void> addShift(Shift shift) async {
+ for (var item in savedShifts) {
+ if (DateUtilities.DateUtils.isSameDay(shift.start, item.start)) {
+ return;
+ }
+ }
+ savedShifts.add(shift);
+ }
+
+ @override
+ Future<List<Shift>> getPastShifts() async {
+ List<Shift> shifts = savedShifts;
+ shifts.sort((a, b) => a.start.compareTo(b.start));
+
+ return shifts;
+ }
+
+ @override
+ Future<List<Shift>> getShiftsForWeek(DateTime firstDayOfWeek) async {
+ var items = await getPastShifts();
+ List<Shift> result = [];
+
+ for (var item in items) {
+ if (DateUtilities.DateUtils.firstDayOfWeek(item.start) ==
+ firstDayOfWeek) {
+ result.add(item);
+ }
+ }
+
+ return result;
+ }
+}