private Gateway SelectThePartnerWithBestQuote(DispatchTripRequest r, Gateway partner, QuoteTripResponse response)
 {
     Quote bestQuote = null;
     DateTime bestETA = r.pickupTime + missedBookingPeriod;
     // not more than 30 minues late
     foreach (Quote q in response.quotes)
     {
         DateTime eta = (DateTime)q.ETA;
         if (eta == null) // if no ETA is returned then we assum a certain lateness.
             eta = r.pickupTime + missedBookingPeriod - new TimeSpan(0, 1, 0);
         if (eta.ToUniversalTime() < bestETA.ToUniversalTime())
         {
             bestETA = (DateTime)q.ETA;
             bestQuote = q;
         }
     }
     if (bestQuote != null)
     {
         partner = partners[bestQuote.PartnerId];
         r.fleetID = bestQuote.FleetId;
         Logger.Log("Best quote " + bestQuote + " from " + partner.name);
     }
     else
         Logger.Log("There are no partners to handle this trip within an exceptable service time");
     return partner;
 }
 private DispatchTripResponse HandleQuoteBroadcastFailedResponse(DispatchTripResponse response1, QuoteTripResponse response)
 {
     Logger.Log("QuoteTrip call failed");
     Logger.Untab();
     rejects++;
     response1 = new DispatchTripResponse(result: response.result); return response1;
 }
        public override QuoteTripResponse QuoteTrip(QuoteTripRequest request)
        {
            requests++;
            var quotes = new List<Quote>();

            foreach (Gateway partner in partners.Values)
            {
                if (partner.ID == request.clientID)
                    continue;
                if (PickupLocationIsServedByPartner(request, partner))
                    RequestQuotesFromPartnerAndAdd(request, quotes, partner);
            }
            QuoteTripResponse response1 = new QuoteTripResponse(quotes);
            return response1;
        }
 private static bool BroadcastQuoteWasRejected(QuoteTripResponse response)
 {
     return response.result == Result.Rejected || response.quotes.Count == 0;
 }
Exemplo n.º 5
0
        public override QuoteTripResponse QuoteTrip(QuoteTripRequest request)
        {
            requests++;
            var quotes = new List<Quote>();

            foreach (Gateway partner in partners.Values)
            {
                if (partner.ID == request.clientID)
                    continue;
                try
                {
                    if (PickupLocationIsServedByPartner(request, partner))
                        RequestQuotesFromPartnerAndAdd(request, quotes, partner);
                }
                catch (Exception e)
                {
                    Logger.Log("Exception quoting " + partner.name + ": " + e.ToString());
                }
            }
            QuoteTripResponse response1 = new QuoteTripResponse(quotes);
            return response1;
        }