public async Task <INativeTrackResponse> ProcessTrackAsync(ITrackRequest request, IUPSConfiguration configuration = null) { Track.UPSSecurity upsSecurity = configuration != null?SetupAuthentication <Track.UPSSecurity>(configuration?.Authentication) : UPSTrackAuthenticationDetail; request.Request = request?.Request ?? new RequestType() { RequestOption = new string[] { "validate" }, TransactionReference = new TransactionReferenceType { CustomerContext = configuration?.Authentication?.CustomerContext ?? Configuration.Authentication.CustomerContext } }; request.TrackingOption = request?.TrackingOption ?? configuration?.TrackConfiguration?.TrackingOption ?? Configuration?.TrackConfiguration?.TrackingOption; //var trackRequest = BuildTrackRequest(request); var trackRequest = BuildRequest <TrackRequest, Track.TrackRequest>((TrackRequest)request, TrackShipmentMapperConfiguration); if (AppSetupConfiguration.WriteXmlRequest) { WriteXML(trackRequest); } //var client = new Track.TrackPortTypeClient(); string endPointUrl = AppSetupConfiguration.IsProductionEnvironment ? AppSetupConfiguration?.Urls?.ProductionEndPoint?.TrackServiceUrl : AppSetupConfiguration?.Urls?.TestEndPoint?.TrackServiceUrl; var client = new Track.TrackPortTypeClient(endPointUrl, AppSetupConfiguration.TimeOut, AppSetupConfiguration?.UserId, AppSetupConfiguration?.Password); var response = await client.ProcessTrackAsync(upsSecurity, trackRequest); if (AppSetupConfiguration.WriteXmlResponse) { WriteXML(response); } //var nativeResponse = BuildNativeTrackResponse(response); var nativeResponse = BuildResponse <Track.TrackResponse1, NativeTrackResponse>(response, TrackShipmentMapperConfiguration); nativeResponse.Message = nativeResponse.IsSuccessful ? string.Format(MessageConfiguration.SuccessfulShipmentTracking, request?.InquiryNumber) : string.Format(MessageConfiguration.FailedShipmentTracking, request?.InquiryNumber); return(nativeResponse); }
public async Task <INativeTrackResponse> ProcessTrackAsync(ITrackCriteria criteria, IUPSConfiguration configuration = null) { Track.UPSSecurity upsSecurity = configuration != null?SetupAuthentication <Track.UPSSecurity>(configuration?.Authentication) : UPSTrackAuthenticationDetail; var trackRequest = new Track.TrackRequest { InquiryNumber = criteria.TrackingReferenceNumber, PickupDateRange = new Track.PickupDateRangeType { BeginDate = criteria?.PickupDateRange?.BeginDate, EndDate = criteria?.PickupDateRange?.EndDate }, ReferenceNumber = new Track.ReferenceNumberType { Code = criteria?.ReferenceNumber?.Code, Value = criteria?.ReferenceNumber?.Value }, ShipperNumber = criteria?.ShipperNumber, Request = criteria?.RequestType != null ? new Track.RequestType { RequestOption = criteria?.RequestType?.RequestOption, SubVersion = criteria?.RequestType?.SubVersion, TransactionReference = criteria?.RequestType?.TransactionReference?.CustomerContext != null ? new Track.TransactionReferenceType { CustomerContext = criteria?.RequestType?.TransactionReference?.CustomerContext } : UPSTrackTransactionReference } : new Track.RequestType() { RequestOption = new string[] { "validate" }, TransactionReference = new Track.TransactionReferenceType { CustomerContext = configuration?.Authentication?.CustomerContext ?? Configuration.Authentication.CustomerContext } }, TrackingOption = criteria?.TrackingOption }; trackRequest.TrackingOption = trackRequest?.TrackingOption ?? configuration?.TrackConfiguration?.TrackingOption ?? Configuration?.TrackConfiguration?.TrackingOption; Track.TrackPortTypeClient client = new Track.TrackPortTypeClient(); if (Configuration.AppSetupConfiguration.WriteXmlRequest) { WriteXML(trackRequest); } var response = await client.ProcessTrackAsync(upsSecurity, trackRequest); if (Configuration.AppSetupConfiguration.WriteXmlResponse) { WriteXML(response); } //var nativeResponse = BuildNativeTrackResponse(response); var nativeResponse = BuildResponse <Track.TrackResponse1, NativeTrackResponse>(response, TrackShipmentMapperConfiguration); nativeResponse.Message = nativeResponse.IsSuccessful ? string.Format(MessageConfiguration.SuccessfulShipmentTracking, criteria?.TrackingReferenceNumber) : string.Format(MessageConfiguration.FailedShipmentTracking, criteria?.TrackingReferenceNumber); return(nativeResponse); }