public ManagerResponse <AddLinesToWishListResult, WishList> AddLinesToWishList(CommerceStorefront storefront, IVisitorContext visitorContext, WishList wishList, IEnumerable <WishListLine> wishListLines)
        {
            Assert.ArgumentNotNull(storefront, nameof(storefront));
            Assert.ArgumentNotNull(visitorContext, nameof(visitorContext));
            Assert.ArgumentNotNull(wishList, nameof(wishList));
            Assert.ArgumentNotNull(wishListLines, nameof(wishListLines));


            AddLinesToWishListResult wishListResult = _wishListServiceProvider.AddLinesToWishList(new AddLinesToWishListRequest(wishList, wishListLines));

            Helpers.LogSystemMessages(wishListResult.SystemMessages, wishListResult);
            AddLinesToWishListResult serviceProviderResult = wishListResult;

            return(new ManagerResponse <AddLinesToWishListResult, WishList>(serviceProviderResult, serviceProviderResult.WishList));
        }
        /// <summary>
        /// Adds the lines to wish list.
        /// </summary>
        /// <param name="storefront">The storefront.</param>
        /// <param name="visitorContext">The visitor context.</param>
        /// <param name="wishListId">The wish list identifier.</param>
        /// <param name="lines">The lines.</param>
        /// <returns>The manager response with the wish list as the result.</returns>
        public virtual ManagerResponse <AddLinesToWishListResult, WishList> AddLinesToWishList([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, string wishListId, IEnumerable <WishListLine> lines)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(visitorContext, "visitorContext");
            Assert.ArgumentNotNull(lines, "lines");
            Assert.ArgumentNotNullOrEmpty(wishListId, "wishListId");

            var errorResult = new AddLinesToWishListResult()
            {
                Success = false
            };

            // Limit the number of wish list lines that can get created.
            var wishListResult = this.GetWishList(storefront, visitorContext, wishListId);

            if (!wishListResult.ServiceProviderResult.Success)
            {
                wishListResult.ServiceProviderResult.SystemMessages.ToList().ForEach(m => errorResult.SystemMessages.Add(m));
                return(new ManagerResponse <AddLinesToWishListResult, WishList>(errorResult, null));
            }

            if (wishListResult.Result.Lines.Count() >= StorefrontManager.CurrentStorefront.MaxNumberOfWishListItems)
            {
                var message = StorefrontManager.GetSystemMessage(StorefrontConstants.SystemMessages.MaxWishListLineLimitReached);
                message = string.Format(CultureInfo.InvariantCulture, message, StorefrontManager.CurrentStorefront.MaxNumberOfWishLists);
                errorResult.SystemMessages.Add(new Commerce.Services.SystemMessage()
                {
                    Message = message
                });
                return(new ManagerResponse <AddLinesToWishListResult, WishList>(errorResult, null));
            }

            var request = new AddLinesToWishListRequest(new WishList {
                UserId = visitorContext.UserId, CustomerId = visitorContext.UserId, ExternalId = wishListId, ShopName = storefront.ShopName
            }, lines);
            var result = this.WishListServiceProvider.AddLinesToWishList(request);

            if (!result.Success)
            {
                Helpers.LogSystemMessages(result.SystemMessages, result);
            }

            return(new ManagerResponse <AddLinesToWishListResult, WishList>(result, result.WishList));
        }
        /// <summary>
        /// Adds the lines to wish list.
        /// </summary>
        /// <param name="storefront">
        /// The storefront.
        /// </param>
        /// <param name="userId">
        /// The user Id.
        /// </param>
        /// <param name="wishListId">
        /// The wish list identifier.
        /// </param>
        /// <param name="lines">
        /// The lines.
        /// </param>
        /// <returns>
        /// The manager response with the wish list as the result.
        /// </returns>
        public virtual ManagerResponse <AddLinesToWishListResult, WishList> AddLinesToWishList([NotNull] CommerceStorefront storefront, [NotNull] string userId, string wishListId, IEnumerable <WishListLine> lines)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(lines, "lines");
            Assert.ArgumentNotNullOrEmpty(wishListId, "wishListId");

            var errorResult = new AddLinesToWishListResult()
            {
                Success = false
            };

            // Limit the number of wish list lines that can get created.
            var wishListResult = this.GetWishList(storefront, userId, wishListId);

            if (!wishListResult.ServiceProviderResult.Success)
            {
                wishListResult.ServiceProviderResult.SystemMessages.ToList().ForEach(m => errorResult.SystemMessages.Add(m));
                return(new ManagerResponse <AddLinesToWishListResult, WishList>(errorResult, null));
            }

            if (wishListResult.Result.Lines.Count() >= 10)
            {
                var message = "You have reached the max limit of wish list items";
                message = string.Format(CultureInfo.InvariantCulture, message, 10);
                errorResult.SystemMessages.Add(new SystemMessage()
                {
                    Message = message
                });
                return(new ManagerResponse <AddLinesToWishListResult, WishList>(errorResult, null));
            }

            var request = new AddLinesToWishListRequest(new WishList {
                UserId = userId, CustomerId = userId, ExternalId = wishListId, ShopName = storefront.ShopName
            }, lines);
            var result = this.WishListServiceProvider.AddLinesToWishList(request);

            result.WriteToSitecoreLog();

            return(new ManagerResponse <AddLinesToWishListResult, WishList>(result, result.WishList));
        }
示例#4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AddLinesToCartTest"/> class.
        /// </summary>
        public AddLinesToWishlistTest()
        {
            this.visitorId = Guid.NewGuid();

            this.wishlist = new WishList
            {
                ExternalId = this.visitorId.ToString(),
                Lines      = new ReadOnlyCollection <WishListLine>(new List <WishListLine> {
                    new WishListLine()
                })
            };

            this.lineToAdd = new WishListLine()
            {
                Product = new CartProduct
                {
                    ProductId = "100500",
                    Price     = new Price {
                        Amount = 100
                    }
                },
                Quantity = 12
            };

            this.request = new AddLinesToWishListRequest(this.wishlist, new[] { this.lineToAdd });
            this.result  = new AddLinesToWishListResult();
            this.args    = new ServicePipelineArgs(this.request, this.result);

            this.client = Substitute.For <IWishlistsServiceChannel>();

            var clientFactory = Substitute.For <ServiceClientFactory>();

            clientFactory.CreateClient <IWishlistsServiceChannel>(Arg.Any <string>(), Arg.Any <string>()).Returns(this.client);

            this.processor = new AddLinesToWishlist {
                ClientFactory = clientFactory
            };
        }
        /// <summary>
        /// Adds the lines to wish list.
        /// </summary>
        /// <param name="storefront">The storefront.</param>
        /// <param name="visitorContext">The visitor context.</param>
        /// <param name="wishListId">The wish list identifier.</param>
        /// <param name="lines">The lines.</param>
        /// <returns>The manager response with the wish list as the result.</returns>
        public virtual ManagerResponse<AddLinesToWishListResult, WishList> AddLinesToWishList([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, string wishListId, IEnumerable<WishListLine> lines)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(visitorContext, "visitorContext");
            Assert.ArgumentNotNull(lines, "lines");
            Assert.ArgumentNotNullOrEmpty(wishListId, "wishListId");

            var errorResult = new AddLinesToWishListResult() { Success = false };

            // Limit the number of wish list lines that can get created.
            var wishListResult = this.GetWishList(storefront, visitorContext, wishListId);
            if (!wishListResult.ServiceProviderResult.Success)
            {
                wishListResult.ServiceProviderResult.SystemMessages.ToList().ForEach(m => errorResult.SystemMessages.Add(m));
                return new ManagerResponse<AddLinesToWishListResult, WishList>(errorResult, null);
            }

            if (wishListResult.Result.Lines.Count() >= StorefrontManager.CurrentStorefront.MaxNumberOfWishListItems)
            {
                var message = StorefrontManager.GetSystemMessage("MaxWishListLineLimitReached");
                message = string.Format(CultureInfo.InvariantCulture, message, StorefrontManager.CurrentStorefront.MaxNumberOfWishLists);
                errorResult.SystemMessages.Add(new Commerce.Services.SystemMessage() { Message = message });
                return new ManagerResponse<AddLinesToWishListResult, WishList>(errorResult, null);
            }

            var request = new AddLinesToWishListRequest(new WishList { UserId = visitorContext.UserId, CustomerId = visitorContext.UserId, ExternalId = wishListId, ShopName = storefront.ShopName }, lines);
            var result = this.WishListServiceProvider.AddLinesToWishList(request);
            if (!result.Success)
            {
                Helpers.LogSystemMessages(result.SystemMessages, result);
            }

            return new ManagerResponse<AddLinesToWishListResult, WishList>(result, result.WishList);
        }