Beispiel #1
0
        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)));
 }