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