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