private IList <ProductPropertiesViewModel> MapProductProperties(ResultSet <Product> variants)
        {
            var productProperties = new List <ProductPropertiesViewModel>();

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

            foreach (var prop in uniqueVariants)
            {
                var productPropertiesViewModel = new ProductPropertiesViewModel();
                productPropertiesViewModel.PropertyName = prop.Key;
                productPropertiesViewModel.DisplayName  = ProductIndexDefinition.FieldDefinitions[prop.Key]
                                                          .GetDisplayName(LocalizationContext.CurrentCulture.Name);

                foreach (var value in prop.Select(p => p.Value).Compact().Distinct())
                {
                    productPropertiesViewModel.Values.Add(value.ToString());
                }

                productProperties.Add(productPropertiesViewModel);
            }

            return(productProperties);
        }
        private IList <ProductPropertiesViewModel> MapProductProperties(ResultSet <Product> variants)
        {
            var productProperties = new List <ProductPropertiesViewModel>();

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

            foreach (var prop in uniqueVariants)
            {
                var productPropertiesViewModel = new ProductPropertiesViewModel();
                productPropertiesViewModel.PropertyName = prop.Key;

                foreach (var value in prop.Select(p => p.Value).Distinct())
                {
                    productPropertiesViewModel.Values.Add(value.ToString());
                }

                productProperties.Add(productPropertiesViewModel);
            }

            return(productProperties);
        }
        private IList <ProductPropertiesViewModel> MapProductProperties(Product product)
        {
            var productProperties = new List <ProductPropertiesViewModel>();

            var uniqueVariants = from v in product.Variants.SelectMany(p => p.ProductProperties)
                                 where v.ProductDefinitionField.DisplayOnSite
                                 group v by v.ProductDefinitionField into g
                                 select g;

            foreach (var prop in uniqueVariants)
            {
                var productPropertiesViewModel = new ProductPropertiesViewModel();
                productPropertiesViewModel.PropertyName = prop.Key.Name;

                foreach (var value in prop.Select(p => p.Value).Distinct())
                {
                    productPropertiesViewModel.Values.Add(value);
                }
                productProperties.Add(productPropertiesViewModel);
            }

            return(productProperties);
        }