public ActionResult Index(MultiShipmentPage currentPage, MultiShipmentViewModel viewModel) { if (viewModel.CartItems == null || !viewModel.CartItems.Any()) { var home = Url.ContentUrl(ContentReference.StartPage); return(Redirect(home)); } for (var i = 0; i < viewModel.CartItems.Count(); i++) { if (string.IsNullOrEmpty(viewModel.CartItems[i].AddressId)) { ModelState.AddModelError(string.Format("CartItems[{0}].AddressId", i), _localizationService.GetString("/Checkout/MultiShipment/Empty/AddressId")); } } if (!ModelState.IsValid) { return(View(_checkoutViewModelFactory.CreateMultiShipmentViewModel(Cart, User.Identity.IsAuthenticated))); } _cartService.RecreateLineItemsBasedOnShipments(Cart, viewModel.CartItems, GetAddresses(viewModel)); _orderRepository.Save(Cart); return(RedirectToAction("Index", new { node = currentPage.ParentLink })); }
private void UpdateShippingAddressesForAnonymous(MultiShipmentViewModel viewModel) { foreach (var item in viewModel.CartItems) { var anonymousShippingAddress = new AddressModel { AddressId = Guid.NewGuid().ToString(), Name = Guid.NewGuid().ToString(), CountryCode = "USA" }; item.AddressId = anonymousShippingAddress.AddressId; _addressBookService.LoadCountriesAndRegionsForAddress(anonymousShippingAddress); viewModel.AvailableAddresses.Add(anonymousShippingAddress); } }
public virtual MultiShipmentViewModel CreateMultiShipmentViewModel(ICart cart, bool isAuthenticated) { var viewModel = new MultiShipmentViewModel { StartPage = _contentLoader.Get <StartPage>(ContentReference.StartPage), AvailableAddresses = GetAvailableShippingAddresses(), CartItems = cart != null?FlattenCartItems(_shipmentViewModelFactory.CreateShipmentsViewModel(cart).SelectMany(x => x.CartItems)) : new CartItemViewModel[0], ReferrerUrl = GetReferrerUrl() }; if (!isAuthenticated) { UpdateShippingAddressesForAnonymous(viewModel); } return(viewModel); }
private IList <AddressModel> GetAddresses(MultiShipmentViewModel viewModel) { if (User.Identity.IsAuthenticated) { var addresses = new List <AddressModel>(); foreach (var addressId in viewModel.CartItems.Select(x => x.AddressId).Distinct()) { var address = new AddressModel { AddressId = addressId }; _addressBookService.LoadAddress(address); addresses.Add(address); } return(addresses); } return(_addressBookService.MergeAnonymousShippingAddresses(viewModel.AvailableAddresses, viewModel.CartItems)); }
public ActionResult Index(MultiShipmentPage currentPage, MultiShipmentViewModel viewModel) { for (var i = 0; i < viewModel.CartItems.Length; i++) { if (string.IsNullOrEmpty(viewModel.CartItems[i].AddressId)) { ModelState.AddModelError($"CartItems[{i}].AddressId", _localizationService.GetString("/Checkout/MultiShipment/Empty/AddressId")); } } if (!ModelState.IsValid) { return(View(_checkoutViewModelFactory.CreateMultiShipmentViewModel(Cart, User.Identity.IsAuthenticated))); } _cartService.RecreateLineItemsBasedOnShipments(Cart, viewModel.CartItems, GetAddresses(viewModel)); _orderRepository.Save(Cart); return(RedirectToAction("Index", new { node = currentPage.ParentLink })); }