private IEnumerable <FacetGroupOption> GetFacetResults(List <FacetGroupOption> options, ITypeSearch <EntryContentBase> query, string selectedfacets) { if (options == null) { return(Enumerable.Empty <FacetGroupOption>()); } var facets = _facetRegistry.GetFacetDefinitions(); var facetGroups = facets.Select(x => new FacetGroupOption { GroupFieldName = x.FieldName, GroupName = x.DisplayName, }).ToList(); query = facets.Aggregate(query, (current, facet) => facet.Facet(current, GetSelectedFilter(options, facet.FieldName))); var productFacetsResult = query.Take(0).GetContentResult(); if (productFacetsResult.Facets == null) { return(facetGroups); } foreach (var facetGroup in facetGroups) { var filter = facets.FirstOrDefault(x => x.FieldName.Equals(facetGroup.GroupFieldName)); if (filter == null) { continue; } var facet = productFacetsResult.Facets.FirstOrDefault(x => x.Name.Equals(facetGroup.GroupFieldName)); if (facet == null) { continue; } filter.PopulateFacet(facetGroup, facet, selectedfacets); } return(facetGroups); }
private FacetDefinition GetSearchFilter(string facet) { return(_facetRegistry.GetFacetDefinitions().FirstOrDefault(filter => filter.FieldName.Equals(facet, System.StringComparison.InvariantCultureIgnoreCase))); }