private async Task SelectCheckoutDataAsync() { var selectedData = SelectedCheckoutData; IEnumerable <CheckoutDataViewModel> checkoutData = null; switch (selectedData.DataType) { case Constants.ShippingAddress: checkoutData = (await _checkoutDataRepository.GetAllShippingAddressesAsync()).Select(address => CreateCheckoutData(address, Constants.ShippingAddress)); AllCheckoutDataViewModels = new ReadOnlyCollection <CheckoutDataViewModel>(checkoutData.ToList()); SelectCheckoutDataLabel = string.Format(CultureInfo.CurrentCulture, _resourceLoader.GetString("SelectCheckoutData"), _resourceLoader.GetString("ShippingAddress")); break; case Constants.BillingAddress: checkoutData = (await _checkoutDataRepository.GetAllBillingAddressesAsync()).Select(address => CreateCheckoutData(address, Constants.BillingAddress)); AllCheckoutDataViewModels = new ReadOnlyCollection <CheckoutDataViewModel>(checkoutData.ToList()); SelectCheckoutDataLabel = string.Format(CultureInfo.CurrentCulture, _resourceLoader.GetString("SelectCheckoutData"), _resourceLoader.GetString("BillingAddress")); break; case Constants.PaymentMethod: checkoutData = (await _checkoutDataRepository.GetAllPaymentMethodsAsync()).Select(CreateCheckoutData); AllCheckoutDataViewModels = new ReadOnlyCollection <CheckoutDataViewModel>(checkoutData.ToList()); SelectCheckoutDataLabel = string.Format(CultureInfo.CurrentCulture, _resourceLoader.GetString("SelectCheckoutData"), _resourceLoader.GetString("PaymentMethod")); break; } if (AllCheckoutDataViewModels != null) { // Select the order's CheckoutData SelectedAllCheckoutData = AllCheckoutDataViewModels.FirstOrDefault(c => c.EntityId == SelectedCheckoutData.EntityId); } }
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 async Task ProcessFormAsync() { var existingPaymentMethods = await _checkoutDataRepository.GetAllPaymentMethodsAsync(); var matchingExistingPaymentMethod = FindMatchingPaymentMethod(PaymentMethod, existingPaymentMethods); if (matchingExistingPaymentMethod != null) { PaymentMethod = matchingExistingPaymentMethod; } else { await _checkoutDataRepository.SavePaymentMethodAsync(PaymentMethod); } }