public override async void OnNavigatedTo(object navigationParameter, NavigationMode navigationMode, Dictionary <string, object> viewState) { // The States collection needs to be populated before setting the State property await PopulateStatesAsync(); if (viewState != null) { base.OnNavigatedTo(navigationParameter, navigationMode, viewState); if (navigationMode == NavigationMode.Refresh) { // Restore the errors collection manually var errorsCollection = RetrieveEntityStateValue <IDictionary <string, ReadOnlyCollection <string> > >("errorsCollection", viewState); if (errorsCollection != null) { _address.SetAllErrors(errorsCollection); } } } if (navigationMode == NavigationMode.New) { _addressId = navigationParameter as string; if (_addressId != null) { Address = await _checkoutDataRepository.GetBillingAddressAsync(_addressId); return; } if (_loadDefault) { var defaultAddress = await _checkoutDataRepository.GetDefaultBillingAddressAsync(); if (defaultAddress != null) { // Update the information and validate the values Address.FirstName = defaultAddress.FirstName; Address.MiddleInitial = defaultAddress.MiddleInitial; Address.LastName = defaultAddress.LastName; Address.StreetAddress = defaultAddress.StreetAddress; Address.OptionalAddress = defaultAddress.OptionalAddress; Address.City = defaultAddress.City; Address.State = defaultAddress.State; Address.ZipCode = defaultAddress.ZipCode; Address.Phone = defaultAddress.Phone; } } } }
private async void Initialize() { if (await _accountService.VerifyUserAuthenticationAsync() == null) { return; } // Populate ShippingAddress collection var shippingAddresses = (await _checkoutDataRepository.GetAllShippingAddressesAsync()).Select(address => CreateCheckoutData(address, Constants.ShippingAddress)); ShippingAddresses = new ReadOnlyCollection <CheckoutDataViewModel>(shippingAddresses.ToList()); if (ShippingAddresses != null) { var defaultShippingAddress = await _checkoutDataRepository.GetDefaultShippingAddressAsync(); var selectedShippingAddress = defaultShippingAddress != null?ShippingAddresses.FirstOrDefault(s => s.EntityId == defaultShippingAddress.Id) : null; SetProperty(ref _selectedShippingAddress, selectedShippingAddress, "SelectedShippingAddress"); } // Populate BillingAddress collection var billingAddresses = (await _checkoutDataRepository.GetAllBillingAddressesAsync()).Select(address => CreateCheckoutData(address, Constants.BillingAddress)); BillingAddresses = new ReadOnlyCollection <CheckoutDataViewModel>(billingAddresses.ToList()); if (BillingAddresses != null) { var defaultBillingAddress = await _checkoutDataRepository.GetDefaultBillingAddressAsync(); var selectedBillingAddress = defaultBillingAddress != null?BillingAddresses.FirstOrDefault(s => s.EntityId == defaultBillingAddress.Id) : null; SetProperty(ref _selectedBillingAddress, selectedBillingAddress, "SelectedBillingAddress"); } // Populate PaymentMethod collection var paymentMethods = (await _checkoutDataRepository.GetAllPaymentMethodsAsync()).Select(CreateCheckoutData); PaymentMethods = new ReadOnlyCollection <CheckoutDataViewModel>(paymentMethods.ToList()); if (PaymentMethods != null) { var defaultPaymentMethod = await _checkoutDataRepository.GetDefaultPaymentMethodAsync(); var selectedPaymentMethod = defaultPaymentMethod != null?PaymentMethods.FirstOrDefault(s => s.EntityId == defaultPaymentMethod.Id) : null; SetProperty(ref _selectedPaymentMethod, selectedPaymentMethod, "SelectedPaymentMethod"); } }
private async Task <Action> ResolveNavigationActionAsync() { Action navigateAction = null; var navigationServiceReference = _navigationService; // Retrieve the default information for the Order var defaultShippingAddress = await _checkoutDataRepository.GetDefaultShippingAddressAsync(); var defaultBillingAddress = await _checkoutDataRepository.GetDefaultBillingAddressAsync(); var defaultPaymentMethod = await _checkoutDataRepository.GetDefaultPaymentMethodAsync(); if (defaultShippingAddress == null || defaultBillingAddress == null || defaultPaymentMethod == null) { // Navigate to the CheckoutHubPage to fill the missing default information navigateAction = () => navigationServiceReference.Navigate("CheckoutHub", null); } else { // Create the Order with the current information. Then navigate to the CheckoutSummaryPage var shoppingCartReference = _shoppingCart; var orderRepositoryReference = _orderRepository; var accountServiceReference = _accountService; navigateAction = async() => { var user = accountServiceReference.SignedInUser; await orderRepositoryReference.CreateBasicOrderAsync(user.UserName, shoppingCartReference, defaultShippingAddress, defaultBillingAddress, defaultPaymentMethod); navigationServiceReference.Navigate("CheckoutSummary", null); }; } return(navigateAction); }