public OfflineOrderSubmitResponse SubmitOrderToOfflineOrderSystem(OfflineOrderSubmitRequest request)
        {
            var restRequest = new RestRequest(_submitOrderEndPoint, Method.POST) { RequestFormat = DataFormat.Json };
            restRequest.AddBody(request);

              var response = _client.Execute(restRequest);

            return new OfflineOrderSubmitResponse()
            {
               Content = response.Content,
               IsSuccess =  (response.StatusCode==HttpStatusCode.Created),
               StatusCode = response.StatusCode
            };
        }
예제 #2
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <param name="products"></param>
        /// <returns></returns>
        public bool SendOrderToOfflineOrderSystemAsync(OfflineOrderSubmitRequest request, List<OfflineOrderProduct> products)
        {
            int numOfProductsUpdatedSuccessfully = 0;
            var offlineOrderSystemTask =  Task.Factory.StartNew(() =>
            {
                //for each product in the order call out the Offline Order System
                foreach (var product in products)
                {
                    request.ProductName = product.ProductName;
                    request.ProductDescription = product.ProductDescription;
                    request.productAction = product.productAction;

                    OfflineOrderSubmitResponse response = _offlineOrderSystemService.SubmitOrderToOfflineOrderSystem(request);

                    if (response.IsSuccess)
                    {
                        //if submission is a success then increment the count of updated products
                        numOfProductsUpdatedSuccessfully++;
                    }
                    else
                    {
                        //if submission is unsuccessful then add the error at the product level
                        AddOfflineProductFailures(product.ProductId, response);

                    }

                }
            });

            offlineOrderSystemTask.Wait();

            //check to see how many products within the order got submitted and updated the record status accordingly.
            UpsellStatus newStatus = UpsellStatus.Offline_Submission_Failed;
            if (numOfProductsUpdatedSuccessfully == products.Count())
            {
                newStatus = UpsellStatus.Offline_Submission_Successful;

            }
            else if (numOfProductsUpdatedSuccessfully > 0)
            {
                newStatus = UpsellStatus.Offline_Submission_Partially_Successful;
            }

            UpdateRecordStatus(request.SimpleId, newStatus);

            return (newStatus == UpsellStatus.Offline_Submission_Successful);
        }