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 override GetOrderResult Execute(IUnitOfWork unitOfWork, GetOrderParameter parameter, GetOrderResult result) { if (result.OrderHistory == null) { return(base.NextHandler.Execute(unitOfWork, parameter, result)); } string isHazardousProductInOrderLine = string.Empty; //BUSA-760:SS - Order details page should display with smart supply image var webOrderNumber = result.OrderHistory.WebOrderNumber; CustomerOrder order = unitOfWork.GetRepository <CustomerOrder>().GetTable().Where(x => x.OrderNumber == webOrderNumber).FirstOrDefault(); foreach (var item in result.GetOrderLineResults) { if (item.ProductDto != null) { if (item.ProductDto.IsHazardousGood) { isHazardousProductInOrderLine += item.ProductDto.Id + ","; } } //BUSA-760:SS - Order details page should display with smart supply image start if (order != null) { foreach (var ol in order.OrderLines) { if (item.ProductDto != null) { if (item.ProductDto.Id == ol.ProductId) { if (ol.CustomProperties.Where(x => x.Name == "IsSubscriptionOpted").Count() > 0) { var Value = ol.CustomProperties.Where(x => x.Name.EqualsIgnoreCase("IsSubscriptionOpted")).FirstOrDefault().Value; this.AddOrUpdateProperty(item, "IsSubscriptionOpted", Value); } } } } } //BUSA-760:SS - Order details page should display with smart supply image end } isHazardousProductInOrderLine.Trim(); result.Properties.Add("isHazardousProductInOrderLine", isHazardousProductInOrderLine); // To retrieve RMA custom properties if (!string.IsNullOrEmpty(parameter.OrderNumber)) { if (result.OrderHistory.Status.EqualsIgnoreCase("Return Requested")) { //Add request submitted property to disable the Send Request Button result.Properties.Add("requestSubmitted", "true"); 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) { result.Properties.Add("rmaGraphicImage", rmaProperties.GraphicImage); result.Properties.Add("rmaHtmlImage", rmaProperties.HtmlImage); if (!string.IsNullOrEmpty(rmaProperties.ErpOrderNumber)) { var erpNumber = rmaProperties.ErpOrderNumber.Split('-')[0]; var invoiceQuery = (from ih in unitOfWork.GetRepository <InvoiceHistory>().GetTable() join ihl in unitOfWork.GetRepository <InvoiceHistoryLine>().GetTable() on ih.Id equals ihl.InvoiceHistoryId where ihl.ErpOrderNumber == erpNumber select ih.InvoiceNumber); if (!string.IsNullOrEmpty(invoiceQuery.FirstOrDefault())) { result.Properties.Add("invoiceNumber", invoiceQuery.FirstOrDefault().Split('-')[0].ToString()); } } } } } //BUSA-1070: Attach RMA custom property to each line item. foreach (var orderLine in result.GetOrderLineResults) { if (orderLine != null && orderLine.ProductDto != null) { if (orderLine.ProductDto.Properties.ContainsKey("RMAthreshold")) { var value = ""; orderLine.ProductDto.Properties.TryGetValue("RMAthreshold", out value); orderLine.Properties.Add("RMAthreshold", value); } } } // Getting the Invoice Number bool IsOrderInvoiced = false; if (!string.IsNullOrEmpty(result.OrderHistory.ErpOrderNumber)) { var erpNumber = result.OrderHistory.ErpOrderNumber.Split('-')[0]; var invoiceQuery = (from ih in unitOfWork.GetRepository <InvoiceHistory>().GetTable() join ihl in unitOfWork.GetRepository <InvoiceHistoryLine>().GetTable() on ih.Id equals ihl.InvoiceHistoryId where ihl.ErpOrderNumber == erpNumber select ih.InvoiceNumber); if (!string.IsNullOrEmpty(invoiceQuery.FirstOrDefault())) { IsOrderInvoiced = true; } } result.Properties.Add("IsOrderInvoiced", IsOrderInvoiced.ToString()); // To disable RMA for Free or Sample Prodcuts bool isSampleOrFreeProd = false; if (order != null) { foreach (var property in order.CustomProperties.ToList()) { if (property.Name.EqualsIgnoreCase("isSampleOrder")) { isSampleOrFreeProd = bool.Parse(property.Value); } } foreach (var ol in order.OrderLines.ToList()) { if (ol.IsPromotionItem.Equals(true)) { isSampleOrFreeProd = true; } } } result.Properties.Add("isSampleOrFreeProd", isSampleOrFreeProd.ToString()); return(base.NextHandler.Execute(unitOfWork, parameter, result)); }
public override AddRmaResult Execute(IUnitOfWork unitOfWork, AddRmaParameter parameter, AddRmaResult result) { if (result.OrderHistory.CustomerNumber.ElementAt(0) != '1') { result.OrderHistory.Status = "Return Requested"; unitOfWork.Save(); return(base.NextHandler.Execute(unitOfWork, parameter, result)); } using (HttpClient client = new HttpClient()) { client.BaseAddress = new Uri(customSettings.UPS_Ship_Url); client.DefaultRequestHeaders.Accept.Clear(); ShipRequestModel rmaModel = PopulateRequestData(customSettings, result, unitOfWork); var requestJson = new JavaScriptSerializer().Serialize(rmaModel); HttpContent inputContent = new StringContent(requestJson, Encoding.UTF8, "application/json"); LogHelper.For(this).Info(string.Format("{0}: Ship requestJson: {1}", string.IsNullOrEmpty(result.OrderHistory.WebOrderNumber)? result.OrderHistory.ErpOrderNumber: result.OrderHistory.WebOrderNumber, requestJson)); 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}: Ship responseDate: {1}", string.IsNullOrEmpty(result.OrderHistory.WebOrderNumber) ? result.OrderHistory.ErpOrderNumber : result.OrderHistory.WebOrderNumber, responseData)); var rmaResponse = new JavaScriptSerializer().Deserialize <ShipResponseModel>(responseData); if (rmaResponse.ShipmentResponse != null && rmaResponse.ShipmentResponse.Response.ResponseStatus.Description.EqualsIgnoreCase("success")) { RmaResponse rma = new RmaResponse(); rma.Id = new Guid(); rma.WebOrderNumber = result.OrderHistory.WebOrderNumber; rma.ErpOrderNumber = result.OrderHistory.ErpOrderNumber; rma.TrackingNumber = rmaResponse.ShipmentResponse.ShipmentResults.PackageResults.TrackingNumber; rma.GraphicImage = rmaResponse.ShipmentResponse.ShipmentResults.PackageResults.ShippingLabel.GraphicImage; rma.HtmlImage = rmaResponse.ShipmentResponse.ShipmentResults.PackageResults.ShippingLabel.HtmlImage; rma.JsonValue = rmaResponse.ToJson(); var returnRquestRepository = unitOfWork.GetRepository <ReturnRequest>(); foreach (Insite.Data.Entities.OrderHistoryLine orderHistoryLine in result.OrderHistory.OrderHistoryLines) { RmaLineDto rmaLineDto = parameter.RmaLines.FirstOrDefault <RmaLineDto>((RmaLineDto r) => r.Line.Equals(orderHistoryLine.LineNumber)) ?? new RmaLineDto(); if (rmaLineDto.RmaQtyRequested != 0) { ReturnRequest returnRequest = new ReturnRequest(); returnRequest.Id = new Guid(); returnRequest.WebOrderNumber = result.OrderHistory.WebOrderNumber; returnRequest.ErpOrderNumber = result.OrderHistory.ErpOrderNumber; returnRequest.ProductNumber = orderHistoryLine.ProductErpNumber; returnRequest.QtyToReturn = rmaLineDto.RmaQtyRequested; returnRequest.ReturnReason = rmaLineDto.RmaReasonCode; returnRequest.RmaNotes = parameter.Notes; returnRequest.ReturnDate = DateTime.Now.Date; returnRquestRepository.Insert(returnRequest); } } var rmaRepository = unitOfWork.GetRepository <RmaResponse>(); rmaRepository.Insert(rma); result.OrderHistory.Status = "Return Requested"; unitOfWork.Save(); } } } return(base.NextHandler.Execute(unitOfWork, parameter, result)); }