public override Gateway.GetTripStatusResponse GetTripStatus(Gateway.GetTripStatusRequest request) { Logger.BeginRequest("GetTripStatus received from " + tripthru.name, request, request.tripID); Gateway.GetTripStatusResponse response = null; if (activeTrips.ContainsKey(request.tripID)) { string bookingPK = activeTrips[request.tripID].pk; TDispatchAPI.GetBookingStatusResponse getBookingStatusResponse = api.GetBookingStatus(bookingPK); TDispatchAPI.GetBookingResponse getBookingResponse = api.GetBooking(bookingPK); TDispatchAPI.Booking booking = getBookingStatusResponse.booking; booking.Merge(getBookingResponse.booking); TDispatchAPI.GetFareResponse fare = api.GetFare(new TDispatchAPI.GetFareRequest { way_points = booking.way_points, pickup_time = booking.pickup_time != null ? ((DateTime)booking.pickup_time).ToString("yyyy-MM-dd'T'HH:mm:ssK", DateTimeFormatInfo.InvariantInfo) : null, pickup_location = booking.pickup_Location.location, dropoff_location = booking.dropoff_Location.location, dropoff_time = booking.dropoff_time != null ? ((DateTime)booking.dropoff_time).ToString("yyyy-MM-dd'T'HH:mm:ssK", DateTimeFormatInfo.InvariantInfo) : null, payment_method = booking.payment_method }); response = new Gateway.GetTripStatusResponse( partnerID: ID, partnerName: name, passengerName: booking.customerName, pickupLocation: new Location((double)booking.pickup_Location.location.lat, (double)booking.pickup_Location.location.lng), dropoffLocation: new Location((double)booking.dropoff_Location.location.lat, (double)booking.dropoff_Location.location.lng), fleetID: booking.office.slug, fleetName: booking.office.name, driverID: booking.driver != null ? booking.driver.pk : null, driverName: booking.driver != null ? booking.driver.name : null, driverLocation: booking.driver != null ? new Location((double)booking.driver.location.lat, (double)booking.driver.location.lng) : null, price: booking.cost.value, distance: fare.fare.distance.km, result: Result.OK, status: this.ConvertTDispatchStatusToTripThruStatus(booking.status, booking.sub_status) ); if (booking.pk == null) { booking.pk = bookingPK; } //activeTrips[request.tripID] = booking; } else { Logger.Log("Trip " + request.tripID + " not found"); response = new GetTripStatusResponse(result: Result.NotFound); } Logger.EndRequest(response); return(response); }
public override void Update() { if (DateTime.UtcNow < lastCheckStatus + checkStatusInterval) { return; } List <string> checkTrips = new List <string>(activeTrips.Keys); foreach (string tripID in checkTrips) { try { string bookingPK = activeTrips[tripID].pk; TDispatchAPI.GetBookingStatusResponse getBookingStatusResponse = api.GetBookingStatus(bookingPK); TDispatchAPI.GetBookingResponse getBookingResponse = api.GetBooking(bookingPK); getBookingResponse.booking.sub_status = getBookingStatusResponse.booking.sub_status; UpdateBooking(tripID, getBookingResponse.booking); } catch (Exception e) { Logger.LogDebug("TDispatch update exception for trip: " + tripID, e.ToString()); } } lastCheckStatus = DateTime.UtcNow; }
public override void Update() { if (DateTime.UtcNow < lastCheckStatus + checkStatusInterval) { return; } List <string> checkTrips = new List <string>(activeTrips.Keys); foreach (string tripID in checkTrips) { string bookingPK = activeTrips[tripID].pk; TDispatchAPI.GetBookingStatusResponse getBookingStatusResponse = api.GetBookingStatus(bookingPK); TDispatchAPI.GetBookingResponse getBookingResponse = api.GetBooking(bookingPK); UpdateBooking(tripID, getBookingResponse.booking); } lastCheckStatus = DateTime.UtcNow; }