public async Task Checkout()

in src/Web/Controllers/BasketController.cs [87:154]


        public async Task<IActionResult> Checkout(Dictionary<string, int> items)
        {
            var basketViewModel = await GetBasketViewModelAsync();
            await _basketService.SetQuantities(basketViewModel.Id, items);

            var user = await _userManager.GetUserAsync(User);

            var sessionId = _contextAccessor.GetSessionId();

            if (user == null)
            {
                //Anonymous user checkout.
                return View("CheckoutDetails", new CheckoutDetailsViewModel
                {
                    NumberItems = basketViewModel.Items.Count,
                    DeviceFingerPrinting = new DeviceFingerPrintingViewModel
                    {
                        SessionId = sessionId
                    }
                });
            }

            // Apply default user settings
            var baseCheckoutModel = new CheckoutDetailsViewModel
            {
                User = new UserViewModel
                {
                    FirstName = user.FirstName,
                    LastName = user.LastName,
                    Email = user.Email,
                    Phone = user.PhoneNumber,
                },
                ShippingAddress = new AddressViewModel
                {
                    Address1 = user.Address1,
                    Address2 = user.Address2,
                    City = user.City,
                    State = user.State,
                    ZipCode = user.ZipCode,
                    CountryRegion = user.CountryRegion,
                },
                CreditCard = new CreditCardViewModel
                {
                    CardType = user.DefaultCardType,
                    CardName = user.DefaultCardName,
                    CardNumber = user.DefaultCardNumber,
                    ExpirationMonth = user.DefaultExpirationMonth,
                    ExpirationYear = user.DefaultExpirationYear,
                    CVV = user.DefaultCVV,
                },
                BillingAddress = new AddressViewModel
                {
                    Address1 = user.BillingAddress1,
                    Address2 = user.BillingAddress2,
                    City = user.BillingCity,
                    CountryRegion = user.BillingCountryRegion,
                    State = user.BillingState,
                    ZipCode = user.BillingZipCode,
                },
                NumberItems = basketViewModel.Items.Count,
                DeviceFingerPrinting = new DeviceFingerPrintingViewModel
                {
                    SessionId = sessionId
                }
            };

            return View("CheckoutDetails", baseCheckoutModel);
        }