Beispiel #1
0
        public ManagerResponse <RemovePromoCodeResult, CommerceCart> RemovePromoCodeFromCart(string userId, string promoCode)
        {
            Assert.ArgumentNotNullOrEmpty(promoCode, nameof(promoCode));

            var result = new RemovePromoCodeResult {
                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 <RemovePromoCodeResult, CommerceCart>(result, cartResult.Cart as CommerceCart));
            }

            var cart = cartResult.Cart as CommerceCart;

            CartCacheHelper.InvalidateCartCache(userId);

            var request = new RemovePromoCodeRequest(cart, promoCode);

            RefreshCart(request, true); // We need the CS pipelines to run.
            result = ((CommerceCartServiceProvider)CartServiceProvider).RemovePromoCode(request);
            if (result.Success && result.Cart != null)
            {
                CartCacheHelper.AddCartToCache(result.Cart as CommerceCart);
            }

            result.WriteToSitecoreLog();
            return(new ManagerResponse <RemovePromoCodeResult, CommerceCart>(result, result.Cart as CommerceCart));
        }
        /// <summary>
        /// Removes the promo code from 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 <RemovePromoCodeResult, CommerceCart> RemovePromoCodeFromCart([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, string promoCode)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(visitorContext, "visitorContext");
            Assert.ArgumentNotNullOrEmpty(promoCode, "promoCode");

            var result = new RemovePromoCodeResult {
                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 <RemovePromoCodeResult, CommerceCart>(result, cartResult.Cart as CommerceCart));
            }

            var cart = cartResult.Cart as CommerceCart;

            var cartCache = CommerceTypeLoader.CreateInstance <CartCacheHelper>();

            cartCache.InvalidateCartCache(visitorContext.GetCustomerId());

            var request = new RemovePromoCodeRequest(cart, promoCode);

            result = ((CommerceCartServiceProvider)this.CartServiceProvider).RemovePromoCode(request);
            if (result.Success && result.Cart != null)
            {
                cartCache.AddCartToCache(result.Cart as CommerceCart);
            }

            Helpers.LogSystemMessages(result.SystemMessages, result);
            return(new ManagerResponse <RemovePromoCodeResult, CommerceCart>(result, result.Cart as CommerceCart));
        }
        /// <summary>
        /// Removes the promo code from 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<RemovePromoCodeResult, CommerceCart> RemovePromoCodeFromCart([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, string promoCode)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(visitorContext, "visitorContext");
            Assert.ArgumentNotNullOrEmpty(promoCode, "promoCode");

            var result = new RemovePromoCodeResult { 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<RemovePromoCodeResult, CommerceCart>(result, cartResult.Cart as CommerceCart);
            }

            var cart = cartResult.Cart as CommerceCart;

            var cartCache = CommerceTypeLoader.CreateInstance<CartCacheHelper>();
            cartCache.InvalidateCartCache(visitorContext.GetCustomerId());

            var request = new RemovePromoCodeRequest(cart, promoCode);
            request.RefreshCart(true);  // We need the CS pipelines to run.
            result = ((CommerceCartServiceProvider)this.CartServiceProvider).RemovePromoCode(request);
            if (result.Success && result.Cart != null)
            {
                cartCache.AddCartToCache(result.Cart as CommerceCart);
            }

            Helpers.LogSystemMessages(result.SystemMessages, result);
            return new ManagerResponse<RemovePromoCodeResult, CommerceCart>(result, result.Cart as CommerceCart);
        }