public ActionResult AddGiftCard(GiftCardViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction(ActionNames.Index, ControllerNames.Checkout));
            }

            var customer = HttpContext.GetCustomer();

            var coupons = Coupons.LoadCoupons(model.Code, customer.StoreID);

            if (!coupons.Any())
            {
                ModelState.AddModelError("Code", "Gift card not found.");
                return(RedirectToAction(ActionNames.Index, ControllerNames.Checkout));
            }

            var cart = CachedShoppingCartProvider.Get(customer, CartTypeEnum.ShoppingCart, AppLogic.StoreID());

            cart.SetCoupon(model.Code, true);

            //If the gift card covers the whole order, do some setup that Gateway.MakeOrder requires
            if (cart.GiftCardCoversTotal())
            {
                customer.UpdateCustomer(requestedPaymentMethod: AppLogic.ro_PMCreditCard);
            }

            return(RedirectToAction(ActionNames.Index, ControllerNames.Checkout));
        }