Пример #1
0
        public ActionResult Save(AddressSaveViewModel addressRendering)
        {
            var    model     = ResolveModel();
            var    viewModel = model.GetViewModel();
            string message;

            var parameters = new System.Collections.Generic.Dictionary <string, object>();

            parameters.Add("addressRendering", addressRendering);
            parameters.Add("modelState", ModelState);
            var detailTemplateName = this.detailTemplateNamePrefix + this.TemplateName;

            if (!model.CanProcessRequest(parameters, out message))
            {
                return(this.PartialView("_Warning", message));
            }

            if (ModelState.IsValid)
            {
                model.Save(addressRendering);
                if (viewModel.NextStepUrl?.Length == 0)
                {
                    return(View(detailTemplateName, viewModel));
                }
                else
                {
                    return(Redirect(viewModel.NextStepUrl));
                }
            }
            else
            {
                return(View(detailTemplateName, viewModel));
            }
        }
        public void Save_When_With_Valid_Data_Should_Execute_Basket_Pipeline_And_Return_Json()
        {
            //Arrange
            var viewModel = new AddressSaveViewModel();

            //Act
            var result = _controller.Save(viewModel);

            //Assert
            _transactionLibraryInternal.Received().ExecuteBasketPipeline();
            var jsonResult = result as JsonResult;

            Assert.NotNull(jsonResult);
        }
        public ActionResult Save(AddressSaveViewModel addressRendering)
        {
            if (!addressRendering.IsShippingAddressDifferent)
            {
                this.ModelState.Remove("ShippingAddress.FirstName");
                this.ModelState.Remove("ShippingAddress.LastName");
                this.ModelState.Remove("ShippingAddress.EmailAddress");
                this.ModelState.Remove("ShippingAddress.Line1");
                this.ModelState.Remove("ShippingAddress.PostalCode");
                this.ModelState.Remove("ShippingAddress.City");
            }
            if (!ModelState.IsValid)
            {
                var dictionary = ModelState.ToDictionary(kvp => kvp.Key,
                                                         kvp => kvp.Value.Errors
                                                         .Select(e => e.ErrorMessage).ToArray())
                                 .Where(m => m.Value.Any());

                return(Json(new { modelStateErrors = dictionary }));
            }

            if (addressRendering.IsShippingAddressDifferent)
            {
                EditBillingInformation(addressRendering.BillingAddress);
                EditShippingInformation(addressRendering.ShippingAddress);
            }

            else
            {
                EditBillingInformation(addressRendering.BillingAddress);
                EditShippingInformation(addressRendering.BillingAddress);
            }

            if (Tracker.Current != null)
            {
                Tracker.Current.Session.CustomData["FirstName"] = addressRendering.BillingAddress.FirstName;
            }

            _transactionLibrary.ExecuteBasketPipeline();

            return(Json(new { ShippingUrl = "/shipping" }));
        }
        public virtual JsonResult Save(AddressSaveViewModel addressRendering)
        {
            var result = new JsonResult();

            if (addressRendering.IsShippingAddressDifferent)
            {
                EditBillingInformation(addressRendering.BillingAddress);
                EditShippingInformation(addressRendering.ShippingAddress);
            }
            else
            {
                EditBillingInformation(addressRendering.BillingAddress);
                EditShippingInformation(addressRendering.BillingAddress);
            }

            _transactionLibraryInternal.ExecuteBasketPipeline();

            result.Data = new { ShippingUrl = GetNextStepUrl(nextStepId) };
            return(result);
        }
        public ActionResult Save(AddressSaveViewModel addressRendering)
        {
            var    model     = ResolveModel();
            var    viewModel = model.GetViewModel();
            string message;

            var parameters = new System.Collections.Generic.Dictionary <string, object>();

            parameters.Add("addressRendering", addressRendering);
            parameters.Add("modelState", ModelState);
            var detailTemplateName = this.detailTemplateNamePrefix + this.TemplateName;

            if (!model.CanProcessRequest(parameters, out message))
            {
                return(this.Json(new OperationStatusDTO()
                {
                    Status = "failed", Message = message
                },
                                 JsonRequestBehavior.AllowGet));
            }

            if (ModelState.IsValid)
            {
                model.Save(addressRendering);
                return(this.Json(new OperationStatusDTO()
                {
                    Status = "success"
                }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                var errorList = model.ErrorMessage(ModelState);

                var responseDTO = new OperationStatusDTO();
                responseDTO.Status = "failed";
                responseDTO.Data.Add("errors", errorList);

                return(this.Json(responseDTO, JsonRequestBehavior.AllowGet));
            }
        }