/*
         *              private void CreateDisplayFilters(FilteredBrowsing browsing)
         *              {
         *                      List<RangeFilter> filters = null;
         *
         *                      if (browsing.AttributeRanges != null)
         *                      {
         *                              filters = new List<RangeFilter>(browsing.AttributeRanges);
         *                      }
         *                      else
         *                      {
         *                              filters = new List<RangeFilter>();
         *                      }
         *
         *                      var filter = new RangeFilter();
         *                      filter.Key = "DisplaySize";
         *
         *                      var vals = new List<RangeFilterValue>();
         *
         *                      vals.Add(CreateRange("20 Inches & Under", "under-i20", String.Empty, "20", "en"));
         *                      vals.Add(CreateRange("21 to 29 Inches", "i21-29", "21", "29", "en"));
         *                      vals.Add(CreateRange("30 to 39 Inches", "i21-29", "30", "39", "en"));
         *                      vals.Add(CreateRange("40 to 49 Inches", "i21-29", "40", "49", "en"));
         *                      vals.Add(CreateRange("50 Inches & Up", "over-i50", "50", String.Empty, "en"));
         *
         *                      filters.Add(filter);
         *
         *                      browsing.AttributeRanges = filters.ToArray();
         *              }
         */

        private static void CreateFilters(FilteredBrowsing browsing)
        {
            var filters = browsing.Attributes != null ? new List <AttributeFilter>(browsing.Attributes) : new List <AttributeFilter>();

            var vals = new List <AttributeFilterValue>();

            var filter = new AttributeFilter {
                Key = "Brand"
            };

            var val = new AttributeFilterValue {
                Id = "samsung", Value = "samsung"
            };
            var val2 = new AttributeFilterValue {
                Id = "sony", Value = "sony"
            };
            var val3 = new AttributeFilterValue {
                Id = "apple", Value = "apple"
            };

            vals.Add(val);
            vals.Add(val2);
            vals.Add(val3);

            filter.Values = vals.ToArray();
            filters.Add(filter);

            browsing.Attributes = filters.ToArray();
        }
        /// <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, AttributeFilterValue value)
        {
            object val   = value.Value;
            var    query = new TermsFilter();

            query.AddTerm(new Term(field, ConvertToSearchable(val, false)));
            return(query);
        }
        private static AttributeFilterValue ConvertToAttributeFilterValue(PropertyDictionaryValue dictionaryValue)
        {
            var result = new AttributeFilterValue
            {
                Id    = dictionaryValue.Alias,
                Value = dictionaryValue.Value,
            };

            return(result);
        }