private IList <AggregationProperty> GetSelectedProperties(string storeId)
        {
            var result = new List <AggregationProperty>();

            var allFilters = _browseFilterService.GetStoreAggregations(storeId);

            if (allFilters != null)
            {
                AggregationProperty property = null;

                foreach (var filter in allFilters)
                {
                    var attributeFilter  = filter as AttributeFilter;
                    var rangeFilter      = filter as RangeFilter;
                    var priceRangeFilter = filter as PriceRangeFilter;

                    if (attributeFilter != null)
                    {
                        property = new AggregationProperty
                        {
                            IsSelected = true,
                            Type       = _attributeType,
                            Name       = attributeFilter.Key,
                            Values     = attributeFilter.Values?.Select(v => v.Id).OrderBy(v => v, StringComparer.OrdinalIgnoreCase).ToArray(),
                            Size       = attributeFilter.FacetSize,
                        };
                    }
                    else if (rangeFilter != null)
                    {
                        property = new AggregationProperty
                        {
                            IsSelected = true,
                            Type       = _rangeType,
                            Name       = rangeFilter.Key,
                            Values     = GetRangeBounds(rangeFilter.Values),
                        };
                    }
                    else if (priceRangeFilter != null)
                    {
                        property = new AggregationProperty
                        {
                            IsSelected = true,
                            Type       = _priceRangeType,
                            Name       = $"Price {priceRangeFilter.Currency}",
                            Values     = GetRangeBounds(priceRangeFilter.Values),
                            Currency   = priceRangeFilter.Currency,
                        };
                    }

                    if (property != null)
                    {
                        result.Add(property);
                    }
                }
            }

            return(result);
        }
        private static IBrowseFilter ConvertToFilter(AggregationProperty property, int order)
        {
            IBrowseFilter result = null;

            switch (property.Type)
            {
            case _attributeType:
                result = new AttributeFilter
                {
                    Order     = order,
                    Key       = property.Name,
                    FacetSize = property.Size,
                    Values    = property.Values?.OrderBy(v => v, StringComparer.OrdinalIgnoreCase).Select(v => new AttributeFilterValue {
                        Id = v
                    }).ToArray(),
                };
                break;

            case _rangeType:
                result = new RangeFilter
                {
                    Order  = order,
                    Key    = property.Name,
                    Values = GetRangeFilterValues(property.Values),
                };
                break;

            case _priceRangeType:
                result = new PriceRangeFilter
                {
                    Order    = order,
                    Currency = property.Currency,
                    Values   = GetRangeFilterValues(property.Values),
                };
                break;
            }

            return(result);
        }