mirror of
https://github.com/Iconica-Development/flutter_availability.git
synced 2025-05-20 13:43:43 +02:00
37 lines
1.3 KiB
Dart
37 lines
1.3 KiB
Dart
import "package:flutter_availability/src/util/utils.dart";
|
|
import "package:flutter_availability_data_interface/flutter_availability_data_interface.dart";
|
|
|
|
/// Determines if the availability is deviated from the template that it is
|
|
/// based on
|
|
bool isTemplateDeviated(
|
|
AvailabilityModel availability,
|
|
AvailabilityTemplateModel template,
|
|
) {
|
|
var dayOfWeek = availability.startDate.weekday;
|
|
DateTime? templateStartDate;
|
|
DateTime? templateEndDate;
|
|
|
|
// TODO(Joey): Add a method to a templateModel: getEndTimeForDayOfWeek()
|
|
// as well as for start time. Allow polymorphism to resolve this if statement
|
|
if (template.templateType == AvailabilityTemplateType.week) {
|
|
templateStartDate = (template.templateData as WeekTemplateData)
|
|
.data[WeekDay.values[dayOfWeek - 1]]
|
|
?.startTime;
|
|
templateEndDate = (template.templateData as WeekTemplateData)
|
|
.data[WeekDay.values[dayOfWeek - 1]]
|
|
?.endTime;
|
|
} else {
|
|
templateStartDate = (template.templateData as DayTemplateData).startTime;
|
|
templateEndDate = (template.templateData as DayTemplateData).endTime;
|
|
}
|
|
|
|
if (templateStartDate == null || templateEndDate == null) {
|
|
return true;
|
|
}
|
|
|
|
var templateIsDeviated =
|
|
!isAtSameTime(availability.startDate, templateStartDate) ||
|
|
!isAtSameTime(availability.endDate, templateEndDate);
|
|
return templateIsDeviated;
|
|
}
|