Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private bool CheckParkingsTimeInterval(DateTime startRental, DateTime expirationRental,
- DateTime startOrder, DateTime endOrder, IEnumerable<ParkingSheduleViewModel> shedule)
- {
- var isCorrectTimeInterval = true;
- if (shedule == null || shedule.Count() == 0) //сдается ли парковка 24\7
- {
- return isCorrectTimeInterval = (startRental <= startOrder && expirationRental >= endOrder) ? true : false;
- }
- else
- {
- //начинает ли сдаваться парковка в нужный день
- var dayStartFromShedule = shedule.Where(x => x.Day == startOrder.DayOfWeek).FirstOrDefault();
- if (dayStartFromShedule == null)
- {
- return isCorrectTimeInterval = false;
- }
- else
- {
- TimeSpan timeStart = dayStartFromShedule.TimeStart;
- TimeSpan timeEnd = dayStartFromShedule.TimeEnd;
- //если время начала работы парковки (в первый день) больше времени начала заказа
- if (timeStart > startOrder.TimeOfDay)
- {
- return isCorrectTimeInterval = false;
- }
- else
- {
- //заканчивает ли сдаваться парковка в нужный день
- var dayEndFromShedule = shedule.Where(x => x.Day == endOrder.DayOfWeek).FirstOrDefault();
- if (dayEndFromShedule == null)
- {
- return isCorrectTimeInterval = false;
- }
- else
- {
- TimeSpan timeEndFromShedule = dayEndFromShedule.TimeEnd;
- if (timeEndFromShedule >= endOrder.TimeOfDay)
- {
- var intermediateDays = shedule.Where(x => x.Day > startOrder.DayOfWeek && x.Day < endOrder.DayOfWeek);
- if(intermediateDays.Count() == 0) //если аренда начинается и заканчивается в тот же день.
- {
- return isCorrectTimeInterval = true;
- }
- else //если аренда длится больше 1 дня
- {
- bool isAllDaysRoundTheClock = intermediateDays.ToList().TrueForAll(x => x.TimeStart == TimeSpan.FromDays(0) &&
- x.TimeEnd == TimeSpan.FromDays(1));
- if (!isAllDaysRoundTheClock)
- {
- return isCorrectTimeInterval = false;
- }
- else
- {
- var endDateFromShedule = shedule.Where(x => x.Day == endOrder.DayOfWeek).FirstOrDefault();
- if (endDateFromShedule.TimeStart == TimeSpan.FromHours(0) &&
- endDateFromShedule.TimeEnd.Hours >= endOrder.Hour)
- {
- return isCorrectTimeInterval = true;
- }
- return isCorrectTimeInterval = false;
- }
- }
- }
- else
- {
- return isCorrectTimeInterval = false;
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement