コード例 #1
0
        public override async void OnNavigatedTo(NavigatedToEventArgs e, Dictionary <string, object> viewModelState)
        {
            // Get latest shopping cart
            var shoppingCart = await _shoppingCartRepository.GetShoppingCartAsync();

            _order = _orderRepository.CurrentOrder;
            _order.ShoppingCart = shoppingCart;

            // Populate the ShoppingCart items
            var shoppingCartItemVMs = _order.ShoppingCart.ShoppingCartItems.Select(item => new ShoppingCartItemViewModel(item, _resourceLoader));

            ShoppingCartItemViewModels = new ReadOnlyCollection <ShoppingCartItemViewModel>(shoppingCartItemVMs.ToList());

            // Populate the ShippingMethods and set the selected one
            var shippingMethods = await _shippingMethodService.GetShippingMethodsAsync();

            ShippingMethods        = new ReadOnlyCollection <ShippingMethod>(shippingMethods.ToList());
            SelectedShippingMethod = _order.ShippingMethod != null?ShippingMethods.FirstOrDefault(c => c.Id == _order.ShippingMethod.Id) : null;

            // Update order's address and payment information
            _order.ShippingAddress = await _checkoutDataRepository.GetShippingAddressAsync(_order.ShippingAddress.Id);

            _order.BillingAddress = await _checkoutDataRepository.GetBillingAddressAsync(_order.BillingAddress.Id);

            _order.PaymentMethod = await _checkoutDataRepository.GetPaymentMethodAsync(_order.PaymentMethod.Id);

            // Populate the CheckoutData items (Addresses & payment information)
            CheckoutDataViewModels = new ObservableCollection <CheckoutDataViewModel>
            {
                CreateCheckoutData(_order.ShippingAddress, Constants.ShippingAddress),
                CreateCheckoutData(_order.BillingAddress, Constants.BillingAddress),
                CreateCheckoutData(_order.PaymentMethod)
            };

            base.OnNavigatedTo(e, viewModelState);

            if (e.NavigationMode == NavigationMode.Refresh)
            {
                // Restore the selected CheckoutData manually
                string selectedCheckoutData = RetrieveEntityStateValue <string>("selectedCheckoutData", viewModelState);

                if (!string.IsNullOrWhiteSpace(selectedCheckoutData))
                {
                    SelectedCheckoutData = CheckoutDataViewModels.FirstOrDefault(c => c.EntityId == selectedCheckoutData);
                }
            }
        }
        public override async void OnNavigatedTo(NavigatedToEventArgs e, Dictionary <string, object> viewState)
        {
            // The States collection needs to be populated before setting the State property
            await PopulateStatesAsync();

            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)
                    {
                        _address.SetAllErrors(errorsCollection);
                    }
                }
            }

            if (e.NavigationMode == NavigationMode.New)
            {
                _addressId = e.Parameter as string;
                if (_addressId != null)
                {
                    Address = await _checkoutDataRepository.GetShippingAddressAsync(_addressId);

                    return;
                }

                if (_loadDefault)
                {
                    var defaultAddress = await _checkoutDataRepository.GetDefaultShippingAddressAsync();

                    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;
                    }
                }
            }
        }