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; }
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; }