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 }; }
/// <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); }