public override Filter GetFilter() { if (!string.IsNullOrEmpty(FieldName) && !string.IsNullOrEmpty(FieldValue)) { return(new TermFilter($"{FieldName}$$string", FieldFilterValue.Create(FieldValue))); } return(null); }
private Filter GetSelectedFilter(List <FacetGroupOption> options, string currentField) { var filters = new List <Filter>(); var facets = _facetRegistry.GetFacetDefinitions(); foreach (var facetGroupOption in options) { if (facetGroupOption.GroupFieldName.Equals(currentField)) { continue; } var filter = facets.FirstOrDefault(x => x.FieldName.Equals(facetGroupOption.GroupFieldName)); if (filter == null) { continue; } if (!facetGroupOption.Facets.Any(x => x.Selected)) { continue; } if (filter is FacetStringDefinition) { filters.Add(new TermsFilter(_findClient.GetFullFieldName(facetGroupOption.GroupFieldName, typeof(string)), facetGroupOption.Facets.Where(x => x.Selected).Select(x => FieldFilterValue.Create(x.Name)))); } else if (filter is FacetStringListDefinition) { var termFilters = facetGroupOption.Facets.Where(x => x.Selected) .Select(s => new TermFilter(facetGroupOption.GroupFieldName, FieldFilterValue.Create(s.Name))) .Cast <Filter>() .ToList(); filters.AddRange(termFilters); } else if (filter is FacetNumericRangeDefinition) { var rangeFilters = filter as FacetNumericRangeDefinition; foreach (var selectedRange in facetGroupOption.Facets.Where(x => x.Selected)) { var rangeFilter = rangeFilters.Range.FirstOrDefault(x => x.Id.Equals(selectedRange.Key.Split(':')[1])); if (rangeFilter == null) { continue; } filters.Add(RangeFilter.Create(_findClient.GetFullFieldName(facetGroupOption.GroupFieldName, typeof(double)), rangeFilter.From ?? 0, rangeFilter.To ?? double.MaxValue)); } } } if (!filters.Any()) { return(null); } if (filters.Count == 1) { return(filters.FirstOrDefault()); } var boolFilter = new BoolFilter(); foreach (var filter in filters) { boolFilter.Should.Add(filter); } return(boolFilter); }