public ManagerResponse <AddPromoCodeResult, CommerceCart> AddPromoCodeToCart(string userId, string promoCode) { Assert.ArgumentNotNullOrEmpty(promoCode, nameof(promoCode)); var result = new AddPromoCodeResult { Success = false }; var cartResult = LoadCartByName(CommerceConstants.CartSettings.DefaultCartName, userId); if (!cartResult.Success || cartResult.Cart == null) { var message = DictionaryPhraseRepository.Current.Get("/System Messages/Cart/Cart Not Found Error", "Could not retrieve the cart for the current user"); cartResult.SystemMessages.Add(new SystemMessage { Message = message }); return(new ManagerResponse <AddPromoCodeResult, CommerceCart>(result, cartResult.Cart as CommerceCart)); } CartCacheHelper.InvalidateCartCache(userId); var cart = cartResult.Cart as CommerceCart; var request = new AddPromoCodeRequest(cart, promoCode); RefreshCart(request, true); result = ((CommerceCartServiceProvider)CartServiceProvider).AddPromoCode(request); if (result.Success && result.Cart != null) { CartCacheHelper.AddCartToCache(result.Cart as CommerceCart); } result.WriteToSitecoreLog(); return(new ManagerResponse <AddPromoCodeResult, CommerceCart>(result, result.Cart as CommerceCart)); }
/// <summary> /// Adds the promo code to cart. /// </summary> /// <param name="storefront">The storefront.</param> /// <param name="visitorContext">The visitor context.</param> /// <param name="promoCode">The promo code.</param> /// <returns> /// The manager response where the modified CommerceCart is returned in the Result. /// </returns> public virtual ManagerResponse <AddPromoCodeResult, CommerceCart> AddPromoCodeToCart([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, string promoCode) { Assert.ArgumentNotNullOrEmpty(promoCode, "promoCode"); AddPromoCodeResult result = new AddPromoCodeResult { Success = false }; var cartResult = this.LoadCartByName(storefront.ShopName, storefront.DefaultCartName, visitorContext.UserId); if (!cartResult.Success || cartResult.Cart == null) { var message = StorefrontManager.GetSystemMessage(StorefrontConstants.SystemMessages.CartNotFoundError); cartResult.SystemMessages.Add(new SystemMessage { Message = message }); return(new ManagerResponse <AddPromoCodeResult, CommerceCart>(result, cartResult.Cart as CommerceCart)); } var cartCache = CommerceTypeLoader.CreateInstance <CartCacheHelper>(); cartCache.InvalidateCartCache(visitorContext.GetCustomerId()); var cart = cartResult.Cart as CommerceCart; var request = new AddPromoCodeRequest(cart, promoCode); request.RefreshCart(true); result = ((CommerceCartServiceProvider)this.CartServiceProvider).AddPromoCode(request); if (result.Success && result.Cart != null) { cartCache.AddCartToCache(result.Cart as CommerceCart); } Helpers.LogSystemMessages(result.SystemMessages, result); return(new ManagerResponse <AddPromoCodeResult, CommerceCart>(result, result.Cart as CommerceCart)); }
/// <summary> /// Adds the promo code to cart. /// </summary> /// <param name="storefront">The storefront.</param> /// <param name="visitorContext">The visitor context.</param> /// <param name="promoCode">The promo code.</param> /// <returns> /// The manager response where the modified CommerceCart is returned in the Result. /// </returns> public virtual ManagerResponse<AddPromoCodeResult, CommerceCart> AddPromoCodeToCart([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, string promoCode) { Assert.ArgumentNotNullOrEmpty(promoCode, "promoCode"); AddPromoCodeResult result = new AddPromoCodeResult { Success = false }; var cartResult = this.LoadCartByName(storefront.ShopName, storefront.DefaultCartName, visitorContext.UserId); if (!cartResult.Success || cartResult.Cart == null) { var message = StorefrontManager.GetSystemMessage("CartNotFoundError"); cartResult.SystemMessages.Add(new SystemMessage { Message = message }); return new ManagerResponse<AddPromoCodeResult, CommerceCart>(result, cartResult.Cart as CommerceCart); } var cartCache = CommerceTypeLoader.CreateInstance<CartCacheHelper>(); cartCache.InvalidateCartCache(visitorContext.GetCustomerId()); var cart = cartResult.Cart as CommerceCart; var request = new AddPromoCodeRequest(cart, promoCode); request.RefreshCart(true); result = ((CommerceCartServiceProvider)this.CartServiceProvider).AddPromoCode(request); if (result.Success && result.Cart != null) { cartCache.AddCartToCache(result.Cart as CommerceCart); } Helpers.LogSystemMessages(result.SystemMessages, result); return new ManagerResponse<AddPromoCodeResult, CommerceCart>(result, result.Cart as CommerceCart); }