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