Example #1
0
        public ActionResult Rendering()
        {
            var currentProduct = _catalogContext.CurrentProduct;

            var viewModel = new VariantPickerRenderingViewModel
            {
                ProductSku       = currentProduct.Sku,
                VariantExistsUrl = Url.Action("VariantExists")
            };

            if (currentProduct.ProductType != ProductType.ProductFamily)
            {
                return(View(viewModel));
            }

            var variants = _catalogLibrary.GetVariants(currentProduct);

            var uniqueVariantProperties =
                from v in variants.SelectMany(p => p.GetUserDefinedFields())
                group v by v.Key
                into g
                select g;

            foreach (var variantProperty in uniqueVariantProperties)
            {
                var productPropertiesViewModel = new VariantPickerRenderingViewModel.Variant
                {
                    Name        = variantProperty.Key,
                    DisplayName = _productIndex.Definition.FieldDefinitions.TryGetValue(variantProperty.Key, out var field) ?
                                  field.GetDisplayName(_localizationContext.CurrentCulture.Name) : variantProperty.Key
                };

                foreach (var value in variantProperty.Select(p => p.Value).Distinct())
                {
                    productPropertiesViewModel.VaraintItems.Add(new VariantPickerRenderingViewModel.Variant.VaraintValue {
                        Name        = value.ToString(),
                        DisplayName = value.ToString()
                    });
                }

                viewModel.Variants.Add(productPropertiesViewModel);
            }
            viewModel.GetAvailableCombinationsUrl = Url.Action("GetAvailableCombinations");


            return(View(viewModel));
        }
        public ActionResult Rendering()
        {
            var currentProduct = _catalogContext.CurrentProduct;

            var viewModel = new VariantPickerRenderingViewModel
            {
                ProductSku       = currentProduct.Sku,
                VariantExistsUrl = Url.Action("VariantExists")
            };

            if (!currentProduct.ProductDefinition.IsProductFamily())
            {
                return(View(viewModel));
            }

            var uniqueVariants = currentProduct.Variants.SelectMany(p => p.ProductProperties)
                                 .Where(v => v.ProductDefinitionField.DisplayOnSite)
                                 .GroupBy(v => v.ProductDefinitionField)
                                 .Select(g => g);

            foreach (var variant in uniqueVariants)
            {
                var productPropertiesViewModel = new VariantPickerRenderingViewModel.Variant
                {
                    Name        = variant.Key.Name,
                    DisplayName = variant.Key.Name
                };

                foreach (var variantValue in variant.Select(v => v.Value).Distinct())
                {
                    productPropertiesViewModel.VaraintItems.Add(new VariantPickerRenderingViewModel.Variant.VaraintValue
                    {
                        Name        = variantValue,
                        DisplayName = variantValue
                    });
                }
                viewModel.Variants.Add(productPropertiesViewModel);
            }
            viewModel.GetAvailableCombinationsUrl = Url.Action("GetAvailableCombinations");


            return(View(viewModel));
        }