diff --git a/lib/models/timer.dart b/lib/models/timer.dart new file mode 100644 index 0000000..c9dc055 --- /dev/null +++ b/lib/models/timer.dart @@ -0,0 +1,33 @@ +import 'package:meta/meta.dart'; +import 'package:time_progress_calculator/persistence/timer_entity.dart'; + +@immutable +class Timer { + final DateTime startTime; + final DateTime endTime; + + Timer(this.startTime, this.endTime); + + Timer copyWith({DateTime startTime, DateTime endTime}) { + return Timer(startTime ?? this.startTime, endTime ?? this.endTime); + } + + @override + int get hashCode => startTime.hashCode ^ endTime.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is Timer && + runtimeType == other.runtimeType && + startTime == other.startTime && + endTime == other.endTime; + + TimerEntity toEntity() { + return TimerEntity(startTime, endTime); + } + + static Timer fromEntity(TimerEntity entity) { + return Timer(entity.startTime, entity.endTime); + } +} diff --git a/lib/persistence/timer_entity.dart b/lib/persistence/timer_entity.dart new file mode 100644 index 0000000..08e384f --- /dev/null +++ b/lib/persistence/timer_entity.dart @@ -0,0 +1,32 @@ +class TimerEntity { + final DateTime startTime; + final DateTime endTime; + + TimerEntity(this.startTime, this.endTime); + + @override + int get hashCode => startTime.hashCode ^ endTime.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is TimerEntity && + runtimeType == other.runtimeType && + startTime == other.startTime && + endTime == other.endTime; + + Map toJson() { + return { + "startTime": startTime.millisecondsSinceEpoch, + "endTime": startTime.millisecondsSinceEpoch + }; + } + + static TimerEntity fromJson(Map json) { + DateTime startTime = + DateTime.fromMillisecondsSinceEpoch(json["startTime"] as int); + DateTime endTime = + DateTime.fromMillisecondsSinceEpoch(json["endTime"] as int); + return TimerEntity(startTime, endTime); + } +}