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"); } }
public override async void OnNavigatedTo(NavigatedToEventArgs e, Dictionary <string, object> viewState) { if (viewState != null) { base.OnNavigatedTo(e, viewState); if (e.NavigationMode == NavigationMode.Refresh) { // Restore the errors collection manually var errorsCollection = RetrieveEntityStateValue <IDictionary <string, ReadOnlyCollection <string> > >("errorsCollection", viewState); if (errorsCollection != null) { _paymentMethod.SetAllErrors(errorsCollection); } } } if (e.NavigationMode == NavigationMode.New) { if (_loadDefault) { var defaultPaymentMethod = await _checkoutDataRepository.GetDefaultPaymentMethodAsync(); if (defaultPaymentMethod != null) { // Update the information and validate the values PaymentMethod.CardNumber = defaultPaymentMethod.CardNumber; PaymentMethod.CardVerificationCode = defaultPaymentMethod.CardVerificationCode; PaymentMethod.CardholderName = defaultPaymentMethod.CardholderName; PaymentMethod.ExpirationMonth = defaultPaymentMethod.ExpirationMonth; PaymentMethod.ExpirationYear = defaultPaymentMethod.ExpirationYear; PaymentMethod.Phone = defaultPaymentMethod.Phone; ValidateForm(); } } } }
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); }