public override GetOrderResult Execute(IUnitOfWork unitOfWork, GetOrderParameter parameter, GetOrderResult result) { if (!string.IsNullOrEmpty(parameter.OrderNumber)) { if (result.OrderHistory.Status.EqualsIgnoreCase("Return Requested")) { var trackingNumber = ""; RmaResponse rmaProperties = unitOfWork.GetRepository <RmaResponse>().GetTable().Where(x => x.WebOrderNumber == parameter.OrderNumber || x.ErpOrderNumber == parameter.OrderNumber).OrderByDescending <RmaResponse, DateTimeOffset>((Func <RmaResponse, DateTimeOffset>)(desc => desc.ModifiedOn)).FirstOrDefault(); if (rmaProperties != null) { trackingNumber = rmaProperties.TrackingNumber; } using (HttpClient client = new HttpClient()) { if (!string.IsNullOrEmpty(trackingNumber)) { LabelRecoveryRequestModel labelRecoveryModel = PopulateRequestData(customSettings, trackingNumber); var requestJson = new JavaScriptSerializer().Serialize(labelRecoveryModel); LogHelper.For(this).Info(string.Format("{0}: LabelRecovery requestJson: {1}", string.IsNullOrEmpty(result.OrderHistory.WebOrderNumber) ? result.OrderHistory.ErpOrderNumber : result.OrderHistory.WebOrderNumber, requestJson)); client.BaseAddress = new Uri(customSettings.UPS_LabelRecovery_Url); client.DefaultRequestHeaders.Accept.Clear(); HttpContent inputContent = new StringContent(requestJson, Encoding.UTF8, "application/json"); HttpResponseMessage response = client.PostAsync(client.BaseAddress.ToString(), inputContent).Result; if (response.IsSuccessStatusCode) { string responseData = response.Content.ReadAsStringAsync().Result; LogHelper.For(this).Info(string.Format("{0}: LabelRecovery responseData: {1}", string.IsNullOrEmpty(result.OrderHistory.WebOrderNumber) ? result.OrderHistory.ErpOrderNumber : result.OrderHistory.WebOrderNumber, responseData)); LabelRecoveryResponseModel labelRecoveryResponseModel = new JavaScriptSerializer().Deserialize <LabelRecoveryResponseModel>(responseData); if (labelRecoveryResponseModel.LabelRecoveryResponse != null && labelRecoveryResponseModel.LabelRecoveryResponse.Response.ResponseStatus.Description.EqualsIgnoreCase("success")) { foreach (var orderHistoryLine in result.GetOrderLineResults) { if (orderHistoryLine.ProductDto != null) { ReturnRequest returnRequest = unitOfWork.GetRepository <ReturnRequest>().GetTable().Where(x => (x.WebOrderNumber == parameter.OrderNumber || x.ErpOrderNumber == parameter.OrderNumber) && x.ProductNumber == orderHistoryLine.ProductDto.ERPNumber).OrderByDescending <ReturnRequest, DateTimeOffset>((Func <ReturnRequest, DateTimeOffset>)(desc => desc.ModifiedOn)).FirstOrDefault(); if (returnRequest != null) { orderHistoryLine.Properties.Add("ReturnRequest", JsonConvert.SerializeObject(returnRequest)); } } } result.Properties.Add("rmaStatusGraphicImage", labelRecoveryResponseModel.LabelRecoveryResponse.LabelResults.LabelImage.GraphicImage); result.Properties.Add("rmaStatusHtmlImage", labelRecoveryResponseModel.LabelRecoveryResponse.LabelResults.LabelImage.HtmlImage); } } } } } } return(this.NextHandler.Execute(unitOfWork, parameter, result)); }
public LabelRecoveryRequestModel PopulateRequestData(CustomSettings customSettings, string trackingNumber) { // UPS Security UsernameToken usernameToken = new UsernameToken(); usernameToken.Username = customSettings.UPSSecurity_UserToken_Username; usernameToken.Password = customSettings.UPSSecurity_UserToken_Password; ServiceAccessToken serviceAccessToken = new ServiceAccessToken(); serviceAccessToken.AccessLicenseNumber = customSettings.UPSSecurity_ServiceAccessToken_AccessLicenseNumber; UPSSecurity UPSSecurity = new UPSSecurity(); UPSSecurity.UsernameToken = usernameToken; UPSSecurity.ServiceAccessToken = serviceAccessToken; // UPS Security -END // Label Specification LabelImageFormat labelImageFormat = new LabelImageFormat(); labelImageFormat.Code = "GIF"; LabelSpecification labelSpecification = new LabelSpecification(); labelSpecification.LabelImageFormat = labelImageFormat; labelSpecification.HttpUserAgent = "Mozilla/4.5"; // Label Specification - END Translate translate = new Translate(); translate.LanguageCode = "eng"; translate.DialectCode = "US"; translate.Code = "01"; LabelRecoveryRequest labelRecoveryRequest = new LabelRecoveryRequest(); labelRecoveryRequest.LabelSpecification = labelSpecification; labelRecoveryRequest.Translate = translate; labelRecoveryRequest.TrackingNumber = trackingNumber; // the below tracking number is allowed on the UPS test environment. //labelRecoveryRequest.TrackingNumber = "1Z12345E8791315413"; LabelRecoveryRequestModel labelRecoveryModel = new LabelRecoveryRequestModel(); labelRecoveryModel.UPSSecurity = UPSSecurity; labelRecoveryModel.LabelRecoveryRequest = labelRecoveryRequest; return(labelRecoveryModel); }