private IList <AddressModel> GetAddresses(MultiAddressViewModel viewModel) { var addresses = new List <AddressModel>(); var savedAddresses = _addressBookService.List(); var orderAddresses = CartWithValidationIssues.Cart.GetFirstForm() .Shipments .Select(x => x.ShippingAddress) .Where(x => x != null); foreach (var addressId in viewModel.CartItems.Select(x => x.AddressId).Distinct()) { var address = new AddressModel { AddressId = addressId }; var savedAddress = savedAddresses.FirstOrDefault(x => x.AddressId.Equals(addressId)); if (savedAddress != null) { _addressBookService.LoadAddress(address); addresses.Add(address); continue; } var orderAddress = orderAddresses.FirstOrDefault(x => x.Id.Equals(addressId)); if (orderAddress == null) { continue; } addresses.Add(_addressBookService.ConvertToModel(orderAddress)); } return(addresses); }
//public virtual MultiShipmentViewModel CreateMultiShipmentViewModel(ICart cart, MultiShipmentPage multiShipmentPage, bool isAuthenticated) //{ // var viewModel = new MultiShipmentViewModel(multiShipmentPage) // { // AvailableAddresses = GetAvailableShippingAddresses(cart), // CartItems = cart != null ? FlattenCartItems(_shipmentViewModelFactory.CreateShipmentsViewModel(cart).SelectMany(x => x.CartItems)) : new CartItemViewModel[0], // ReferrerUrl = GetReferrerUrl() // }; // if (!isAuthenticated) // { // UpdateShippingAddressesForAnonymous(viewModel); // } // return viewModel; //} public virtual MultiAddressViewModel CreateMultiShipmentViewModel(ICart cart, CheckoutPage checkoutPage, bool isAuthenticated) { var viewModel = new MultiAddressViewModel(checkoutPage) { AvailableAddresses = GetAvailableShippingAddresses(cart), CartItems = cart != null?FlattenCartItems(_shipmentViewModelFactory.CreateShipmentsViewModel(cart).SelectMany(x => x.CartItems)) : Array.Empty <CartItemViewModel>(), ReferrerUrl = GetReferrerUrl(), }; if (!isAuthenticated && !viewModel.AvailableAddresses.Any()) { UpdateShippingAddressesForAnonymous(viewModel); } return(viewModel); }
//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); // } //} private void UpdateShippingAddressesForAnonymous(MultiAddressViewModel 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); } }