/// <summary> /// Die Methode für die folgenden Filterungen durch: /// - Es wird nur eine creationPeriod Facette zurückgegeben /// - Aggregationen die mit 'facet_' beginnen werden nicht zurückgegeben. Stattdessen wird das Child von diesen /// Aggregationen zurückgegeben. /// </summary> private Dictionary <string, IAggregate> GetfilteredAggregations(AggregateDictionary aggs, FacetFilters[] facetsFilters, out string chosenCreationPeriodAggregation) { var filteredAggregations = new Dictionary <string, IAggregate>(); var found = false; chosenCreationPeriodAggregation = string.Empty; foreach (var entry in aggs.OrderBy(t => t.Key)) { if (entry.Key.StartsWith("facet_aggregationFields.creationPeriodYears")) { if (!found) { var primaryAggregation = ((SingleBucketAggregate)entry.Value).First().Value; // Wähle den Bucket, der weniger als 10 Einträge hat. Oder dann ganz am Ende den Jahrhundertfilter if (GetSelectedCreationPeriod(facetsFilters) == string.Empty && (((BucketAggregate)primaryAggregation).Items.Count < 10 || entry.Key == "facet_aggregationFields.creationPeriodYears100" ) || GetSelectedCreationPeriod(facetsFilters) == entry.Key) { filteredAggregations.Add("aggregationFields.creationPeriodYears", primaryAggregation); found = true; chosenCreationPeriodAggregation = entry.Key.Remove(0, 6); } } } else if (entry.Key.StartsWith("facet_")) { var primaryAggregation = ((SingleBucketAggregate)entry.Value).First().Value; filteredAggregations.Add(entry.Key.Remove(0, 6), primaryAggregation); } else { filteredAggregations.Add(entry.Key, entry.Value); } } return(filteredAggregations); }