public void CreateARangeQueryWithUsingSolrMinMaxValues() { var rangeQuery = new RangeQuery("500", "1000"); Assert.AreEqual("500", rangeQuery.SolrMin); Assert.AreEqual("1000", rangeQuery.SolrMax); Assert.AreEqual(500m, rangeQuery.Min); Assert.AreEqual(1000m, rangeQuery.Max); Assert.AreEqual("500-1000", rangeQuery.Label); Assert.AreEqual("[500 TO 1000]", rangeQuery.Query); }
public void CreateARangeQueryWithUsingMinMaxValuesWithMinBeingAWildCard() { var rangeQuery = new RangeQuery(decimal.MinValue, 500m); Assert.AreEqual("*", rangeQuery.SolrMin); Assert.AreEqual("500", rangeQuery.SolrMax); Assert.AreEqual(decimal.MinValue, rangeQuery.Min); Assert.AreEqual(500m, rangeQuery.Max); Assert.AreEqual("*-500", rangeQuery.Label); Assert.AreEqual("[* TO 500]", rangeQuery.Query); }
public void CreateARangeQueryWithUsingMinMaxValuesWithMaxBeingAWildCard() { var rangeQuery = new RangeQuery(500m, decimal.MaxValue); Assert.AreEqual("500", rangeQuery.SolrMin); Assert.AreEqual("*", rangeQuery.SolrMax); Assert.AreEqual(500m, rangeQuery.Min); Assert.AreEqual(decimal.MaxValue, rangeQuery.Max); Assert.AreEqual("500-*", rangeQuery.Label); Assert.AreEqual("[500 TO *]", rangeQuery.Query); }
public Constraint(string name, RangeQuery range, RangeQuery[] appliedRanges, NameValueCollection queryStringBuilder, string smallRangeQuerystringKey, string largeRangeQuerystringKey, KeyValuePair<string, int> facetQueryResult, bool isRuledOut = false) { Name = name; Count = facetQueryResult.Value; IsApplied = appliedRanges.Contains(range); IsDisabled = isRuledOut || facetQueryResult.Value == 0; if (IsDisabled) { Url = string.Empty; } else { var constraintsQueryStringBuilder = HttpUtility.ParseQueryString(string.Empty); constraintsQueryStringBuilder.Add(queryStringBuilder); if (IsApplied) { foreach (var appliedRange in appliedRanges.Where(appliedRange => appliedRange != range)) { constraintsQueryStringBuilder.Add(smallRangeQuerystringKey, appliedRange.SolrMin); constraintsQueryStringBuilder.Add(largeRangeQuerystringKey, appliedRange.SolrMax); } } else { constraintsQueryStringBuilder.Add(smallRangeQuerystringKey, range.SolrMin); constraintsQueryStringBuilder.Add(largeRangeQuerystringKey, range.SolrMax); foreach (var appliedRange in appliedRanges) { constraintsQueryStringBuilder.Add(smallRangeQuerystringKey, appliedRange.SolrMin); constraintsQueryStringBuilder.Add(largeRangeQuerystringKey, appliedRange.SolrMax); } } Url = constraintsQueryStringBuilder.Count == 0 ? "/" : string.Format("/?{0}", constraintsQueryStringBuilder); } }
public FacetViewModel(RangeQuery appliedRange, params Constraint[] constraints) { IsFreeFormSearch = true; Constraints = constraints; FreeSearchMinimumValue = appliedRange.SolrMin == "*" ? string.Empty : appliedRange.Min.ToString(CultureInfo.InvariantCulture); FreeSearchMaximumValue = appliedRange.SolrMax == "*" ? string.Empty : appliedRange.Max.ToString(CultureInfo.InvariantCulture); }
public bool Equals(RangeQuery url) { return (object)url != null && Label.Equals(url.Label, StringComparison.OrdinalIgnoreCase); }
public static bool IsRuledOutConstraint(KeyValuePair<string, int> query, RangeQuery range) { return GetLabel(query) == BuildRuledOutLabel(range.Label); }
public static bool IsRuledInConstraint(KeyValuePair<string, int> query, RangeQuery range) { return GetLabel(query) == range.Label; }
public void CreateATwoRangeQueryThatAreNotEqual() { var rangeQueryOne = new RangeQuery(500m, 1000m); var rangeQueryTwo = new RangeQuery(501m, 1000m); Assert.IsFalse(rangeQueryOne.Equals(rangeQueryTwo)); Assert.IsFalse(rangeQueryOne == rangeQueryTwo); }
protected RangeFacetBuilder(NameValueCollection querystring, string solrField, string constraintKey, string smallRangeQuerystringKey, string largeRangeQuerystringKey, string smallFreeRangeQuerystringKey, string largeFreeRangeQuerystringKey, bool singleSelection = false, params RangeQuery[] ranges) { _solrField = solrField; _singleSelection = singleSelection; _smallRangeQuerystringKey = smallRangeQuerystringKey; _largeRangeQuerystringKey = largeRangeQuerystringKey; _filterQueryTag = string.Format("{0}filter", constraintKey); _ranges = ranges .OrderBy(range => range.Min) .ToArray(); string[] mins; string[] maxs; if (AttemptingToPeformASelectionRangeSearch(querystring, _smallRangeQuerystringKey, _largeRangeQuerystringKey, out mins, out maxs)) { _appliedRanges = mins .Zip(maxs, (min, max) => new RangeQuery(min, max)) .Where(ranges.Contains) .OrderBy(range => range.Min) .ToArray(); if (_singleSelection) { _appliedRanges = _appliedRanges .Take(1) .ToArray(); } if (FacetIsApplied()) { return; } } string minimumFreeRangeSearch; string maximumFreeRangeSearch; if (!AttemptingToPerformAFreeRangeSearch(querystring, smallFreeRangeQuerystringKey, largeFreeRangeQuerystringKey, out minimumFreeRangeSearch, out maximumFreeRangeSearch)) { return; } _freeFormSearch = true; var rangeQuery = new RangeQuery(minimumFreeRangeSearch, maximumFreeRangeSearch); _ranges = new[] { rangeQuery }; _appliedRanges = new[] { rangeQuery }; }