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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }