コード例 #1
0
        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);
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        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;
        }