generateTimeStamps static method
List<DateTime>
generateTimeStamps(
- DateTime selectedDate,
- List<
DateTimeRange< availableSlots,DateTime> > - List<
DateTimeRange< blockedSlots,DateTime> > - int meetingDuration,
- Duration bufferTime,
- TimeFormat timeFormat,
- List<
DateTimeRange< nextDayAvailableSlots,DateTime> > - List<
DateTimeRange< nextDayBlockedSlots,DateTime> >
Implementation
static List<DateTime> generateTimeStamps(
DateTime selectedDate,
List<DateTimeRange> availableSlots,
List<DateTimeRange> blockedSlots,
int meetingDuration,
Duration bufferTime,
TimeFormat timeFormat,
List<DateTimeRange> nextDayAvailableSlots,
List<DateTimeRange> nextDayBlockedSlots) {
List<DateTime> generatedTimeStamps = [];
List<DateTimeRange> mergedSlots = blockedSlots.isNotEmpty
? adjustAvailableSlots(
availableSlots, blockedSlots, bufferTime, selectedDate)
: availableSlots;
for (var slot in mergedSlots) {
DateTime from = slot.start;
DateTime to = slot.end;
while (from.isBefore(to)) {
DateTime proposedTime = from.add(Duration(minutes: meetingDuration));
if (from.day > selectedDate.day) {
break;
} else if (from.day == selectedDate.day &&
(proposedTime.isAtSameMomentAs(to) || proposedTime.isBefore(to)) &&
generatedTimeStamps.validateEntry(from)) {
generatedTimeStamps.add(from);
} else if (selectedDate.day == from.day &&
proposedTime.day > selectedDate.day &&
generatedTimeStamps.validateEntry(from)) {
if (nextDayAvailableSlots.isNotEmpty &&
!checkTimeIsOverlapping(
DateTimeRange(start: from, end: proposedTime),
nextDayAvailableSlots,
nextDayBlockedSlots,
bufferTime,
selectedDate)) {
generatedTimeStamps.add(from);
}
}
from = proposedTime;
}
}
return generatedTimeStamps;
}