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