protected virtual Aggregation GetRangeAggregation(RangeFilter rangeFilter, IList <AggregationResponse> aggregationResponses) { var result = new Aggregation { AggregationType = "range", Field = rangeFilter.Key, Items = GetRangeAggregationItems(rangeFilter.Key, rangeFilter.Values, aggregationResponses).ToArray(), }; return(result); }
public static IBrowseFilter Copy(this IBrowseFilter filter, IList <string> keys) { IBrowseFilter result = null; if (filter != null && keys != null) { // get values that we have filters set for var values = filter.GetValues().Where(v => keys.Contains(v.Id, StringComparer.OrdinalIgnoreCase)); var attributeFilter = filter as AttributeFilter; var rangeFilter = filter as RangeFilter; var priceRangeFilter = filter as PriceRangeFilter; var categoryFilter = filter as CategoryFilter; if (attributeFilter != null) { var newFilter = new AttributeFilter(); newFilter.InjectFrom(filter); newFilter.Values = values.OfType <AttributeFilterValue>().ToArray(); result = newFilter; } else if (rangeFilter != null) { var newFilter = new RangeFilter(); newFilter.InjectFrom(filter); newFilter.Values = values.OfType <RangeFilterValue>().ToArray(); result = newFilter; } else if (priceRangeFilter != null) { var newFilter = new PriceRangeFilter(); newFilter.InjectFrom(filter); newFilter.Values = values.OfType <RangeFilterValue>().ToArray(); result = newFilter; } else if (categoryFilter != null) { var newFilter = new CategoryFilter(); newFilter.InjectFrom(filter); newFilter.Values = values.OfType <CategoryFilterValue>().ToArray(); result = newFilter; } } return(result); }
protected virtual IList <AggregationRequest> GetRangeFilterAggregationRequests(RangeFilter rangeFilter, IList <IFilter> existingFilters) { var result = rangeFilter.Values?.Select(v => GetRangeFilterValueAggregationRequest(rangeFilter.Key, v, existingFilters)).ToList(); return(result); }