Esempio n. 1
0
 //Забрать заявку
 void getApplication(Time currentTime)
 {
     if (status == StatusCourier.HasApplication && application.status == StatusLetter.Engaged)
     {
         application.status           = StatusLetter.Taking;
         application.startProcessTime = new Time(currentTime);
         application.journalize       = false;
         status = StatusCourier.GetLetter;
         recieveLetters.Add(application);
         amountReceived++;
     }
 }
Esempio n. 2
0
 //Приезд в филиал
 void arrivalToBranch(Time currentTime, List <Letter> letters)
 {
     //Если курьер приехал на место
     if (timeCurrNext.inMinutes == 0)
     {
         lettersToBranch(currentTime);
         lettersFromBranch(currentTime, letters);
         if (amountReceived == 0 && status == StatusCourier.GetLetter)
         {
             status = StatusCourier.Free;
         }
         getApplication(currentTime);
         //Если у курьера есть письма, выбираем письмо, которое нужно доставить раньше всех
         if (status == StatusCourier.GetLetter)
         {
             recieveLetters.OrderBy(x => (x.Deadline - branches.timeBetween(currentPlace, x.Destination)));
             nextPlace = recieveLetters.First(x => x.status == StatusLetter.Taking).Destination;
             Random rand = new Random();
             timeCurrNext = branches.timeBetween(currentPlace, nextPlace) + new Time(0, rand.Next(5, 35));
         }
     }
 }