public JsonResult AddBundleCartLine(string addToCart_CatalogName, string addToCart_ProductId, string addtocart_relatedvariantids, Decimal quantity)
        {
            BaseJsonResult baseJsonResult = this.ModelProvider.GetModel <BaseJsonResult>();

            try
            {
                string[] relatedVariantIds = addtocart_relatedvariantids.Split(',');
                if (relatedVariantIds.Any())
                {
                    foreach (string relatedVariantId in relatedVariantIds.Where(id => !String.IsNullOrEmpty(id)))
                    {
                        string  bundleProductId       = relatedVariantId;
                        Decimal bundleProductQuantity = 1;
                        if (relatedVariantId.Contains('&'))
                        {
                            bundleProductId       = relatedVariantId.Split('&')[0];
                            bundleProductQuantity = Decimal.Parse(relatedVariantId.Split('&')[1].Split('=')[1]);
                        }

                        var bundleProduct = _searchManager.GetProduct(bundleProductId.Contains('|') ? bundleProductId.Split('|')[0] : bundleProductId, addToCart_CatalogName);

                        string bundleBaseProductId = bundleProductId;
                        string bundleVariantId     = "-1";

                        if (bundleProduct.HasChildren)
                        {
                            bundleVariantId = bundleProduct.Children[0].Name;
                        }
                        if (bundleProductId.Contains('|'))
                        {
                            bundleBaseProductId = bundleProductId.Split('|')[0];
                            bundleVariantId     = bundleProductId.Split('|')[1];
                        }

                        baseJsonResult = this.AddToCartRepository.AddLineItemsToCart(this.StorefrontContext, this.VisitorContext, addToCart_CatalogName, bundleBaseProductId, bundleVariantId, bundleProductQuantity);
                    }
                }

                Item   baseProduct = _searchManager.GetProduct(addToCart_ProductId, addToCart_CatalogName);
                string variantId   = "-1";

                if (baseProduct.HasChildren)
                {
                    variantId = baseProduct.Children[0].Name;
                }

                baseJsonResult         = this.AddToCartRepository.AddLineItemsToCart(this.StorefrontContext, this.VisitorContext, addToCart_CatalogName, addToCart_ProductId, variantId, quantity);
                baseJsonResult.Success = true;
            }
            catch (Exception ex)
            {
                baseJsonResult = this.ModelProvider.GetModel <BaseJsonResult>();
                baseJsonResult.SetErrors(nameof(AddCartLine), ex);
            }
            return(this.Json(baseJsonResult));
        }
        /// <summary>
        /// Validates the model.
        /// </summary>
        /// <param name="result">The result.</param>
        public virtual void ValidateModel(BaseJsonResult result)
        {
            if (ModelState.IsValid)
            {
                return;
            }

            var errors = (from modelValue in ModelState.Values.Where(modelValue => modelValue.Errors.Any()) from error in modelValue.Errors select error.ErrorMessage).ToList();

            result.SetErrors(errors);
        }
Esempio n. 3
0
        public JsonResult AddCartLine(IContext context, string productId, string variantId, string quantity = "1.0")
        {
            BaseJsonResult     model                       = new BaseJsonResult(context, StorefrontContext);
            CommerceStorefront currentStorefront           = StorefrontContext.CurrentStorefront;
            ManagerResponse <CartResult, Cart> currentCart = _cartManager.GetCurrentCart(_visitorContext, StorefrontContext, false);

            if (!currentCart.ServiceProviderResult.Success || currentCart.Result == null)
            {
                string systemMessage = StorefrontContext.GetSystemMessage("Cart Not Found Error", true);
                currentCart.ServiceProviderResult.SystemMessages.Add(new SystemMessage
                {
                    Message = systemMessage
                });
                model.SetErrors(currentCart.ServiceProviderResult);
                return(model);
            }

            List <CartLineArgument> list = new List <CartLineArgument>();

            list.Add(new CartLineArgument
            {
                CatalogName = StorefrontContext.CurrentStorefront.Catalog,
                ProductId   = productId,
                VariantId   = variantId,
                Quantity    = decimal.Parse(quantity)
            });

            ManagerResponse <CartResult, Cart> managerResponse = _cartManager.AddLineItemsToCart(currentStorefront, _visitorContext, currentCart.Result, list);

            if (!managerResponse.ServiceProviderResult.Success)
            {
                model.SetErrors(managerResponse.ServiceProviderResult);
                return(model);
            }
            model.Success = true;
            return(base.Json(model));
        }