public AvailabilityFactory(CleanerMatchResultVM cleaner, Int32 serviceGapMins, JobTypeEnum serviceType, IList <String> serviceZone) { Cleaner = cleaner ?? throw new ArgumentException("No cleaner specified.", nameof(Cleaner)); if (serviceGapMins <= 0) { throw new ArgumentException("Invalid service gap requested.", nameof(ServiceGapMinutes)); } if (serviceZone == null || serviceZone.Count == 0) { throw new ArgumentException("Invalid service suburb/zone requested.", nameof(ServiceZone)); } ServiceDay = cleaner.SelectedRosterDay; if (cleaner.SelectedServiceDate.HasValue && cleaner.SelectedServiceDate != default(DateTime)) { ServiceDateUTC = cleaner.SelectedServiceDate.Value.ToUTC(); } else if (JobType == JobTypeEnum.Fortnighly || JobType == JobTypeEnum.Weekly) { // calculate next date ServiceDateUTC = DateTimeWrapper.FindNextDateForDay((DayOfWeek)ServiceDay); } JobType = serviceType; ServiceGapMinutes = serviceGapMins; ServiceZone = serviceZone; }
/// <summary> /// Sets formatting style for day of the week based on even / odd wweeks /// </summary> /// <param name="cleaner">Cleaner.</param> private void FormatStyleForWeekday(CleanerMatchResultVM cleaner) { cleaner.StyleWeekday = ""; if (cleaner == null) { return; } if (criteria.OneOffJob || criteria.VacateClean) { cleaner.StyleWeekday = criteria.ServiceDate.WeekYearStyle(); } else { cleaner.StyleWeekday = DateTimeWrapper.FindNextDateForDay((DayOfWeek)criteria.ServiceDayValue).WeekYearStyle(); } return; }