private IList <DeliverySchedule> GetScheduleRestrictions( District district, WeekDayName weekDay, DateTime currentDate, bool isStoppedOnlineDeliveriesToday) { if (weekDay == WeekDayName.Today) { return(isStoppedOnlineDeliveriesToday ? new List <DeliverySchedule>() : GetScheduleRestrictionsForWeekDay(district, weekDay)); } return(GetScheduleRestrictionsByDate(district, weekDay, currentDate)); }
/// <summary> /// Формирует список доступных интервалов доставки на день недели /// Если день недели - следующий день после времени запроса, то выбираем только те интервалы у которых /// либо не заполнено время приема до предыдущего дня заказа /// либо время приема до предыдущего дня больше текущего времени /// Иначе берем все интервалы дня недели /// Т.е. если запрос поступил в понедельник в 17:30, то на вторник мы отправляем интервалы у которых не заполнено время приема /// и где время больше 17:30 /// Показатель следующего дня вычисляется через разность дня недели на который надо отправить интервалы и текущего дня /// разница между ними всегда будет равна 1, кроме случая когда текущий день - воскресение. /// </summary> /// <param name="district">Район</param> /// <param name="deliveryWeekDay">День недели, на который нужно отправить доступные интервалы доставки</param> /// <param name="currentDate">Текущее время(когда пришел запрос)</param> /// <returns>Список доступных интервалов доставки на день недели</returns> private IList <DeliverySchedule> GetScheduleRestrictionsByDate(District district, WeekDayName deliveryWeekDay, DateTime currentDate) { var dayOfWeek = District.ConvertDayOfWeekToWeekDayName(currentDate.DayOfWeek); if ((deliveryWeekDay - dayOfWeek == 1) || (dayOfWeek == WeekDayName.Sunday && deliveryWeekDay == WeekDayName.Monday)) { return(district .GetScheduleRestrictionCollectionByWeekDayName(deliveryWeekDay) .Where(x => x.AcceptBefore == null || x.AcceptBefore.Time > currentDate.TimeOfDay) .Select(x => x.DeliverySchedule) .ToList()); } return(GetScheduleRestrictionsForWeekDay(district, deliveryWeekDay)); }
private IList <DeliverySchedule> GetScheduleRestrictionsForWeekDay(District district, WeekDayName weekDay) { return(district .GetScheduleRestrictionCollectionByWeekDayName(weekDay) .Select(x => x.DeliverySchedule) .ToList()); }