Advertisement
Guest User

Untitled

a guest
Jan 20th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.24 KB | None | 0 0
  1. private bool CheckParkingsTimeInterval(DateTime startRental, DateTime expirationRental,
  2.                                                DateTime startOrder, DateTime endOrder, IEnumerable<ParkingSheduleViewModel> shedule)
  3.         {
  4.             var isCorrectTimeInterval = true;
  5.             if (shedule == null || shedule.Count() == 0)    //сдается ли парковка 24\7
  6.             {
  7.                 return isCorrectTimeInterval = (startRental <= startOrder && expirationRental >= endOrder) ? true : false;
  8.             }
  9.             else
  10.             {
  11.                 //начинает ли сдаваться парковка в нужный день
  12.                 var dayStartFromShedule = shedule.Where(x => x.Day == startOrder.DayOfWeek).FirstOrDefault();
  13.                 if (dayStartFromShedule == null)
  14.                 {
  15.                     return isCorrectTimeInterval = false;
  16.                 }
  17.                 else
  18.                 {
  19.                     TimeSpan timeStart = dayStartFromShedule.TimeStart;
  20.                     TimeSpan timeEnd =  dayStartFromShedule.TimeEnd;
  21.                     //если время начала работы парковки (в первый день) больше времени начала заказа
  22.                     if (timeStart > startOrder.TimeOfDay)  
  23.                     {
  24.                         return isCorrectTimeInterval = false;
  25.                     }
  26.                     else
  27.                     {
  28.                         //заканчивает ли сдаваться парковка в нужный день
  29.                         var dayEndFromShedule = shedule.Where(x => x.Day == endOrder.DayOfWeek).FirstOrDefault();
  30.                         if (dayEndFromShedule == null)
  31.                         {
  32.                             return isCorrectTimeInterval = false;
  33.                         }
  34.                         else
  35.                         {
  36.                             TimeSpan timeEndFromShedule = dayEndFromShedule.TimeEnd;
  37.                             if (timeEndFromShedule >= endOrder.TimeOfDay)
  38.                             {
  39.                                 var intermediateDays = shedule.Where(x => x.Day > startOrder.DayOfWeek && x.Day < endOrder.DayOfWeek);
  40.                                 if(intermediateDays.Count() == 0)   //если аренда начинается и заканчивается в тот же день.
  41.                                 {
  42.                                     return isCorrectTimeInterval = true;
  43.                                 }
  44.                                 else //если аренда длится больше 1 дня
  45.                                 {
  46.                                     bool isAllDaysRoundTheClock = intermediateDays.ToList().TrueForAll(x => x.TimeStart == TimeSpan.FromDays(0) &&
  47.                                                                                                             x.TimeEnd == TimeSpan.FromDays(1));
  48.                                     if (!isAllDaysRoundTheClock)
  49.                                     {
  50.                                         return isCorrectTimeInterval = false;
  51.                                     }
  52.                                     else
  53.                                     {
  54.                                         var endDateFromShedule = shedule.Where(x => x.Day == endOrder.DayOfWeek).FirstOrDefault();
  55.                                         if (endDateFromShedule.TimeStart == TimeSpan.FromHours(0) &&
  56.                                            endDateFromShedule.TimeEnd.Hours >= endOrder.Hour)
  57.                                         {
  58.                                             return isCorrectTimeInterval = true;
  59.                                         }
  60.  
  61.                                         return isCorrectTimeInterval = false;
  62.                                     }
  63.                                 }
  64.                                
  65.                             }
  66.                             else
  67.                             {
  68.                                 return isCorrectTimeInterval = false;
  69.                             }
  70.                         }
  71.                        
  72.                     }
  73.                 }
  74.             }
  75.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement