/// <summary> /// Converts the specified filter value to facet model. /// </summary> /// <param name="helper"></param> /// <param name="val">The search filter value.</param> /// <returns>facet model</returns> public static FacetModel Convert(this SearchHelper helper, ISearchFilterValue val) { var model = new FacetModel(); if (val is AttributeFilterValue) { var v = val as AttributeFilterValue; model.Key = v.Id; model.Name = v.Value; return model; } if (val is RangeFilterValue) { var v = val as RangeFilterValue; model.Key = v.Id; var name = String.Empty; if (v.Displays != null) { var disp = (from d in v.Displays where d.Language == "en" select d).SingleOrDefault(); if (disp != null) { name = disp.Value; } } model.Name = name; return model; } return null; }
/// <summary> /// Gets the description. /// </summary> /// <param name="value">The value.</param> /// <param name="locale">The locale.</param> /// <returns></returns> private string GetDescription(ISearchFilterValue value, string locale) { if (value is s.AttributeFilterValue) { var v = value as s.AttributeFilterValue; return(v.Value); } if (value is s.RangeFilterValue) { var v = value as s.RangeFilterValue; if (v.Displays != null) { var returnVal = from d in v.Displays where d.Language.Equals(locale, StringComparison.OrdinalIgnoreCase) select d.Value; return(returnVal.ToString()); } return(v.Id); } if (value is CategoryFilterValue) { var v = value as CategoryFilterValue; return(v.Name); } return(String.Empty); }
/// <summary> /// Gets the description. /// </summary> /// <param name="value">The value.</param> /// <param name="locale">The locale.</param> /// <returns></returns> private string GetDescription(ISearchFilterValue value, string locale) { if (value is s.AttributeFilterValue) { var v = value as s.AttributeFilterValue; return v.Value; } if (value is s.RangeFilterValue) { var v = value as s.RangeFilterValue; if (v.Displays != null) { var returnVal = from d in v.Displays where d.Language.Equals(locale, StringComparison.OrdinalIgnoreCase) select d.Value; return returnVal.ToString(); } return v.Id; } if (value is CategoryFilterValue) { var v = value as CategoryFilterValue; return v.Name; } return String.Empty; }
/// <summary> /// Adds the specified filter. /// </summary> /// <param name="field"></param> /// <param name="value">The value.</param> public void Add(string field, ISearchFilterValue value) { if (!_ActiveFilters.ContainsKey(field)) { _ActiveFilters.Add(field, value); } }
private static List <FacetLabel> GetValueLabels(this ISearchFilterValue value) { var result = new List <FacetLabel>(); var attributeFilterValue = value as AttributeFilterValue; if (attributeFilterValue != null) { result.Add(new FacetLabel { Language = attributeFilterValue.Language, Label = attributeFilterValue.Value }); } var rangeFilterValue = value as RangeFilterValue; if (rangeFilterValue != null) { if (rangeFilterValue.Displays != null) { var labels = rangeFilterValue.Displays .Select(d => new FacetLabel { Language = d.Language, Label = d.Value }) .ToArray(); result.AddRange(labels); } } return(result); }
public static BoolFilter<ESDocument> CreateQueryForValue(ISearchCriteria criteria, ISearchFilter filter, ISearchFilterValue value) { var query = new BoolFilter<ESDocument>(); var field = filter.Key.ToLower(); if (filter.GetType() == typeof(PriceRangeFilter)) { var tempQuery = CreatePriceRangeFilter(criteria, field, value as RangeFilterValue); if (tempQuery != null) { query.Must(q => q.Bool(b => tempQuery)); } } else { if (value.GetType() == typeof(AttributeFilterValue)) { query.Must(q => q.Term(t=>t.Field(field).Value(((AttributeFilterValue)value).Value))); } else if (value.GetType() == typeof(RangeFilterValue)) { var tempValue = value as RangeFilterValue; var tempFilter = new RangeFilter<ESDocument>(); tempFilter.Field(field).From(tempValue.Lower).To(tempValue.Upper).IncludeLower(true).IncludeUpper(false); query.Should(q => q.Range(r => tempFilter)); } } return query; }
/// <summary> /// Creates the query. /// </summary> /// <param name="field">The field.</param> /// <param name="value">The value.</param> /// <returns></returns> public static Query CreateQuery(string field, ISearchFilterValue value) { field = field.ToLower(); if (value.GetType() == typeof(AttributeFilterValue)) { return CreateQuery(field, value as AttributeFilterValue); } if (value.GetType() == typeof(RangeFilterValue)) { return CreateQuery(field, value as RangeFilterValue); } return null; }
/// <summary> /// Creates the query. /// </summary> /// <param name="field">The field.</param> /// <param name="value">The value.</param> /// <returns></returns> public static Filter CreateQuery(string field, ISearchFilterValue value) { field = field.ToLower(); if (value.GetType() == typeof(AttributeFilterValue)) { return(CreateQuery(field, value as AttributeFilterValue)); } if (value.GetType() == typeof(RangeFilterValue)) { return(CreateQuery(field, value as RangeFilterValue)); } return(null); }
/// <summary> /// Creates the query. /// </summary> /// <param name="field">The field.</param> /// <param name="value">The value.</param> /// <returns></returns> public static Query CreateQuery(string field, ISearchFilterValue value) { if (typeof(RangeValue) == value.GetType()) { return(CreateQuery(field, (RangeValue)value)); } else if (typeof(PriceRangeValue) == value.GetType()) { return(CreateQuery(field, (PriceRangeValue)value)); } else if (typeof(SimpleValue) == value.GetType()) { return(CreateQuery(field, (SimpleValue)value)); } return(null); }
private static Filter CreateFilter(string field, ISearchFilterValue val) { if (typeof(RangeValue) == val.GetType()) { return(CreateFilter(field, (RangeValue)val)); } if (typeof(PriceRangeValue) == val.GetType()) { return(CreateFilter(field, (PriceRangeValue)val)); } if (typeof(SimpleValue) == val.GetType()) { return(CreateFilter(field, (SimpleValue)val)); } return(null); }
public static Filter CreateQueryForValue(ISearchCriteria criteria, ISearchFilter filter, ISearchFilterValue value) { Filter q = null; var priceQuery = filter is PriceRangeFilter; if (value is RangeFilterValue && priceQuery) { q = LuceneQueryHelper.CreateQuery( criteria, filter.Key, value as RangeFilterValue); } else if (value is CategoryFilterValue) { q = CreateQuery(filter.Key, value as CategoryFilterValue); } else { q = CreateQuery(filter.Key, value); } return q; }
/// <summary> /// Gets the description. /// </summary> /// <param name="value">The value.</param> /// <param name="locale">The locale.</param> /// <returns></returns> private string GetDescription(ISearchFilterValue value, string locale) { if (value is AttributeFilterValue) { var v = value as AttributeFilterValue; return(v.Value); } if (value is RangeFilterValue) { var v = value as RangeFilterValue; if (v.Displays != null) { var returnVal = from d in v.Displays where d.Language.Equals(locale, StringComparison.OrdinalIgnoreCase) select d.Value; if (!returnVal.Any()) { try { var localeShort = new CultureInfo(locale).TwoLetterISOLanguageName; returnVal = v.Displays.Where(d => d.Language.Equals(localeShort, StringComparison.OrdinalIgnoreCase)).Select(d => d.Value); } catch { } } if (returnVal.Any()) { return(returnVal.SingleOrDefault()); } } return(v.Id); } if (value is CategoryFilterValue) { var v = value as CategoryFilterValue; return(v.Name); } return(String.Empty); }
/// <summary> /// Creates the query. /// </summary> /// <param name="field">The field.</param> /// <param name="value">The value.</param> /// <returns></returns> public static Filter CreateQuery(string field, ISearchFilterValue value) { field = field.ToLower(); var attributeFilterValue = value as AttributeFilterValue; if (attributeFilterValue != null) { return(CreateTermsFilter(field, attributeFilterValue)); } var rangeFilterValue = value as RangeFilterValue; if (rangeFilterValue != null) { return(CreateTermRangeFilter(field, rangeFilterValue)); } return(null); }
/// <summary> /// Gets the description. /// </summary> /// <param name="value">The value.</param> /// <param name="locale">The locale.</param> /// <returns></returns> private string GetDescription(ISearchFilterValue value, string locale) { if (value is AttributeFilterValue) { var v = value as AttributeFilterValue; return v.Value; } if (value is RangeFilterValue) { var v = value as RangeFilterValue; if (v.Displays != null) { var returnVal = from d in v.Displays where d.Language.Equals(locale, StringComparison.OrdinalIgnoreCase) select d.Value; if (!returnVal.Any()) { try { var localeShort = new CultureInfo(locale).TwoLetterISOLanguageName; returnVal = v.Displays.Where(d => d.Language.Equals(localeShort, StringComparison.OrdinalIgnoreCase)).Select(d => d.Value); } catch { } } if (returnVal.Any()) return returnVal.SingleOrDefault(); } return v.Id; } if (value is CategoryFilterValue) { var v = value as CategoryFilterValue; return v.Name; } return String.Empty; }
public static Filter CreateQueryForValue(ISearchCriteria criteria, ISearchFilter filter, ISearchFilterValue value) { Filter q; var priceQuery = filter is PriceRangeFilter; var rangeFilterValue = value as RangeFilterValue; if (rangeFilterValue != null && priceQuery) { q = CreateQuery(criteria, filter.Key, rangeFilterValue); } else if (value is CategoryFilterValue) { q = CreateQuery(filter.Key, (CategoryFilterValue)value); } else { q = CreateQuery(filter.Key, value); } return q; }
/// <summary> /// Converts the specified filter value to facet model. /// </summary> /// <param name="helper"></param> /// <param name="val">The search filter value.</param> /// <returns>facet model</returns> public static FacetModel Convert(this ISearchFilterService helper, ISearchFilterValue val) { var model = new FacetModel(); if (val is AttributeFilterValue) { var v = val as AttributeFilterValue; model.Key = v.Id; model.Name = v.Value; return(model); } if (val is CategoryFilterValue) { var v = val as CategoryFilterValue; model.Key = v.Id; model.Name = v.Name; return(model); } if (val is RangeFilterValue) { var v = val as RangeFilterValue; model.Key = v.Id; var name = String.Empty; if (v.Displays != null) { var disp = (from d in v.Displays where d.Language == "en" select d).SingleOrDefault(); if (disp != null) { name = disp.Value; } } model.Name = name; return(model); } return(null); }
/// <summary> /// Adds a single active filter from an ISearchCriteria object to an existing search. /// </summary> public static ITypeSearch <FindDocument> AddActiveFilter(this ITypeSearch <FindDocument> search, string fieldName, ISearchFilterValue filterValue, string locale, MarketId marketId) { ISearchConfiguration configuration = search.Client.GetConfiguration(); SimpleValue simpleValue; if ((simpleValue = filterValue as SimpleValue) != null) { IFieldConfiguration field; if (configuration.TryGetField(fieldName, locale, out field)) { Expression <Func <FindDocument, Filter> > matchFilter = UntypedFilterBuilder.GetMatchFilter(field, simpleValue.value); search = search.Filter <FindDocument>(matchFilter); } } else { RangeValue rangeValue; if ((rangeValue = filterValue as RangeValue) != null) { IFieldConfiguration field; if (configuration.TryGetField(fieldName, locale, out field)) { search = search.FilterFieldRange(field, rangeValue.lowerbound, rangeValue.upperbound, rangeValue.lowerboundincluded, rangeValue.upperboundincluded); } } else { PriceRangeValue priceRangeValue; if ((priceRangeValue = filterValue as PriceRangeValue) == null) { throw new NotSupportedException(string.Format("Unrecognized search filter value type {0}.", (object)filterValue.GetType().Name)); } IFieldConfiguration <double?> field; if (configuration.TryGetPriceField(fieldName, new Mediachase.Commerce.Currency(priceRangeValue.currency.ToUpperInvariant()), marketId, out field)) { search = search.FilterFieldRange((IFieldConfiguration)field, priceRangeValue.lowerbound, priceRangeValue.upperbound, priceRangeValue.lowerboundincluded, priceRangeValue.upperboundincluded); } } } return(search); }
public virtual void Add(ISearchFilter filter, ISearchFilterValue value) { _CurrentFilters.Add(filter, value); }
public static Filter CreateQueryForValue(ISearchCriteria criteria, ISearchFilter filter, ISearchFilterValue value) { Filter q; var priceQuery = filter is PriceRangeFilter; var rangeFilterValue = value as RangeFilterValue; if (rangeFilterValue != null && priceQuery) { q = CreateQuery(criteria, filter.Key, rangeFilterValue); } else if (value is CategoryFilterValue) { q = CreateQuery(filter.Key, (CategoryFilterValue)value); } else { q = CreateQuery(filter.Key, value); } return(q); }
public static BoolFilter <ESDocument> CreateQueryForValue(ISearchCriteria criteria, ISearchFilter filter, ISearchFilterValue value) { var query = new BoolFilter <ESDocument>(); var field = filter.Key.ToLower(); if (filter.GetType() == typeof(PriceRangeFilter)) { var tempQuery = CreatePriceRangeFilter(criteria, field, value as RangeFilterValue); if (tempQuery != null) { query.Must(q => q.Bool(b => tempQuery)); } } else { if (value.GetType() == typeof(AttributeFilterValue)) { query.Must(q => q.Term(t => t.Field(field).Value(((AttributeFilterValue)value).Value))); } else if (value.GetType() == typeof(RangeFilterValue)) { var tempValue = value as RangeFilterValue; var tempFilter = new RangeFilter <ESDocument>(); tempFilter.Field(field).From(tempValue.Lower).To(tempValue.Upper).IncludeLower(true).IncludeUpper(false); query.Should(q => q.Range(r => tempFilter)); } } return(query); }
public static Filter CreateQueryForValue(ISearchCriteria criteria, ISearchFilter filter, ISearchFilterValue value) { Filter q = null; var priceQuery = filter is PriceRangeFilter; if (value is RangeFilterValue && priceQuery) { q = LuceneQueryHelper.CreateQuery( criteria, filter.Key, value as RangeFilterValue); } else if (value is CategoryFilterValue) { q = CreateQuery(filter.Key, value as CategoryFilterValue); } else { q = CreateQuery(filter.Key, value); } return(q); }
/// <summary> /// Adds the specified filter. /// </summary> /// <param name="field"></param> /// <param name="value">The value.</param> public void Add(string field, ISearchFilterValue value) { _ActiveFilters.Add(field, value); }
/// <summary> /// Creates the query. /// </summary> /// <param name="field">The field.</param> /// <param name="value">The value.</param> /// <returns></returns> public static Filter CreateQuery(string field, ISearchFilterValue value) { field = field.ToLower(); var attributeFilterValue = value as AttributeFilterValue; if (attributeFilterValue != null) { return CreateTermsFilter(field, attributeFilterValue); } var rangeFilterValue = value as RangeFilterValue; if (rangeFilterValue != null) { return CreateTermRangeFilter(field, rangeFilterValue); } return null; }