Ejemplo n.º 1
0
        static KitComposition BuildCompositionFromModel(KitAddToCartPostModel model, KitProductData kitData, int customerId)
        {
            // Build up the kit selections from the model
            var selectedItems = model.GetSelectedItems(kitData);

            // Now build the composition
            var composition = new KitComposition(0);

            foreach (var selectedItem in selectedItems)
            {
                KitCartItem kcItem = new KitCartItem();
                kcItem.ProductID  = model.ProductId;
                kcItem.VariantID  = model.VariantId;
                kcItem.KitGroupID = selectedItem.Group.Id;
                kcItem.KitItemID  = selectedItem.Id;
                kcItem.CustomerID = customerId;
                kcItem.TextOption = selectedItem.TextOption;
                int qty = 1;
                if (selectedItem.HasMappedVariant &&
                    selectedItem.InventoryQuantityDelta > 1)
                {
                    qty = selectedItem.InventoryQuantityDelta;
                }

                kcItem.Quantity = qty;

                composition.Compositions.Add(kcItem);
            }

            return(composition);
        }
Ejemplo n.º 2
0
        public ActionResult AjaxGetKitData(KitAddToCartPostModel model)
        {
            var product = new Product(model.ProductId);

            if (model.VariantId == 0)
            {
                model.VariantId = AppLogic.GetDefaultProductVariant(model.ProductId);
            }

            var variant = new ProductVariant(model.VariantId);

            var customer = HttpContext.GetCustomer();
            var cartType = model.IsWishlist
                                ? CartTypeEnum.WishCart
                                : CartTypeEnum.ShoppingCart;

            if (!product.IsAKit)
            {
                return(Content(string.Empty));
            }

            KitProductData kitData = KitProductData.Find(
                productId: product.ProductID,
                cartRecId: model.CartRecordId.HasValue
                                        ? model.CartRecordId.Value
                                        : 0,
                thisCustomer: customer);

            // Manipulate the default selections to reflect the selections made so far
            var selectedItems = model.GetSelectedItems(kitData);

            foreach (var item in kitData.Groups.SelectMany(g => g.Items))
            {
                if (selectedItems.Contains(item))
                {
                    item.IsSelected = true;
                }
                else
                {
                    item.IsSelected = false;
                }
            }

            var quantity = Math.Max(model.Quantity, 1);

            var kitAddToCartViewModel = BuildDefaultKitAddToCartViewModel(kitData, product, variant, quantity, customer, model.CartRecordId);

            var itemDisplayNames = kitAddToCartViewModel.KitGroups
                                   .SelectMany(group => group.Items)
                                   .ToDictionary(item => item.Id.ToString(), item => item.NameDisplay);

            return(Json(
                       new AjaxKitDataViewModel
            {
                SummaryHtml = ControllerContext.GetHtmlHelper().Partial(
                    partialViewName: ViewNames.KitSummaryPartial,
                    model: kitAddToCartViewModel).ToString(),
                ItemDisplayNames = itemDisplayNames
            }));
        }
Ejemplo n.º 3
0
        static KitComposition BuildCompositionFromModel(KitAddToCartPostModel model, KitProductData kitData, int customerId)
        {
            // Build up the kit selections from the model
            var selectedItems = model.GetSelectedItems(kitData);

            // Validate Kit options
            if (kitData.HasRequiredGroups)
            {
                foreach (var requiredGroup in kitData.Groups.Where(g => g.IsRequired))
                {
                    var requirementIsMet = requiredGroup
                                           .Items
                                           .Intersect(selectedItems)
                                           .Any();

                    if (!requirementIsMet)
                    {
                        return(null);
                    }
                }
            }

            // Now build the composition
            var composition = new KitComposition(0);

            foreach (var selectedItem in selectedItems)
            {
                KitCartItem kcItem = new KitCartItem();
                kcItem.ProductID  = model.ProductId;
                kcItem.VariantID  = model.VariantId;
                kcItem.KitGroupID = selectedItem.Group.Id;
                kcItem.KitItemID  = selectedItem.Id;
                kcItem.CustomerID = customerId;
                kcItem.TextOption = selectedItem.TextOption;
                int qty = 1;
                if (selectedItem.HasMappedVariant &&
                    selectedItem.InventoryQuantityDelta > 1)
                {
                    qty = selectedItem.InventoryQuantityDelta;
                }

                kcItem.Quantity = qty;

                composition.Compositions.Add(kcItem);
            }

            return(composition);
        }