/// <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;
        }
Esempio n. 4
0
 /// <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);
        }
Esempio n. 9
0
 /// <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);
 }
Esempio n. 11
0
 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;
 }
Esempio n. 12
0
        /// <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);
        }
Esempio n. 13
0
        /// <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);
        }
Esempio n. 17
0
        /// <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);
 }
Esempio n. 19
0
        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);
        }
Esempio n. 20
0
        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);
        }
Esempio n. 22
0
 /// <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;
        }