initial commit
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'work_interval.dart';
|
||||
|
||||
class WorkDay {
|
||||
final DateTime date;
|
||||
final List<WorkInterval> intervals; // bis zu 5
|
||||
final String? absenceType; // Urlaub, Krank, …
|
||||
final int targetMinutes; // Soll
|
||||
|
||||
const WorkDay({
|
||||
required this.date,
|
||||
required this.intervals,
|
||||
required this.targetMinutes,
|
||||
this.absenceType,
|
||||
});
|
||||
|
||||
int get workedMinutes => intervals.fold(0, (sum, i) => sum + i.minutes);
|
||||
int get diffMinutes => workedMinutes - targetMinutes;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class WorkInterval {
|
||||
final TimeOfDay start;
|
||||
final TimeOfDay end;
|
||||
|
||||
const WorkInterval(this.start, this.end);
|
||||
|
||||
int get minutes {
|
||||
final aMin = start.hour * 60 + start.minute;
|
||||
final bMin = end.hour * 60 + end.minute;
|
||||
final d = bMin - aMin;
|
||||
if (d <= 0) return 0;
|
||||
if (d >= 24 * 60) return 24 * 60;
|
||||
return d;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user