public async Task<ActionResult> BillingInfo()
        {
            Guid memberId = GetUserId();

            RedirectToRouteResult invalidStateResult = await EnsureCartNotEmptyAsync(memberId);
            if (invalidStateResult != null)
            {
                return invalidStateResult;
            }

            var orderCheckoutDetails = Session[OrderCheckoutDetailsKey] as WebOrderCheckoutDetails;

            invalidStateResult = EnsureValidSessionForBillingStep(orderCheckoutDetails);
            if (invalidStateResult != null)
            {
                return invalidStateResult;
            }

            var viewModel = new BillingInfoViewModel();
            await viewModel.SetupCreditCardsAndCountries(db, memberId);
            return View(viewModel);
        }
        /// <summary>
        ///     Displays a view allowing the member to add or remove credit cards
        /// </summary>
        /// <returns>
        ///     The view allowing the member to add or remove credit cards
        /// </returns>
        public async Task<ActionResult> ManageCreditCards()
        {
            BillingInfoViewModel model = new BillingInfoViewModel();

            await model.SetupCreditCardsAndCountries(db, GetUserId());

            return View(model);
        }