private static string CreateOrCondition(string urlParams) { string str = HttpUtility.UrlDecode(urlParams).Split(new char[] { '&' }).SingleOrDefault<string>(p => p.StartsWith("fh_location=", StringComparison.InvariantCultureIgnoreCase)); if (string.IsNullOrEmpty(str)) { str = urlParams; } Location location = new Location(str.Replace("fh_location=", "")); SearchCriterion criterion = location.getSearchCriterion(); if (criterion != null) { location.removeSearchCriteria(); } Criterion criterion2 = location.getLastCriterion(); Criterion criterion3 = location.getCriterion(criterion2.getAttributeName()); if (criterion3 == criterion2) { if (criterion != null) { location.addCriterion(criterion); return location.toString(); } return urlParams; } string str2 = criterion2.toString(); str2 = str2.Substring(str2.IndexOf('{') + 1).Replace("}", ""); location = location.removeLastCriterion(); string str3 = criterion3.toString().Replace("}", ";" + str2 + "}"); location = location.removeCriteria(criterion3.getAttributeName()); Criterion criterion4 = CriterionFactory.parse(str3); location.addCriterion(criterion4); if (criterion != null) { location.addCriterion(criterion); } return location.toString(); }
public void SetHrefLinks(Query query) { Location location = new Location(query.getLocation()); int offset = query.getListStartIndex(); query.removeListStartIndex(); int num2 = this.Facets.Count<FacetItem>(f => f.Selected); string ticked = HttpContext.Current.Request["fh_ticked"] ?? ""; foreach (FacetItem item in this.Facets) { Location location2 = new Location(location); MultiValuedCriterion mvc = location2.getCriterion("schematitle") as MultiValuedCriterion; if (mvc != null) { (from f in this.Facets where !f.Enabled select f).ToList<FacetItem>().ForEach(f => mvc.getGreaterThan().remove(f.Value)); if (string.IsNullOrEmpty(ticked)) { if (num2 == mvc.getGreaterThan().valueSet().size()) { item.Selected = false; mvc.getGreaterThan().clear().add(item.Value); } } else { if (ticked.Split(new char[] { ',' }).Contains<string>(item.Value)) { mvc.getGreaterThan().remove(item.Value); } else { mvc.getGreaterThan().add(item.Value); } if (mvc.getGreaterThan().isEmpty()) { location2.removeCriteria("schematitle"); } } query.setLocation(location2); item.Href = query.ToFhParams(); if (string.IsNullOrEmpty(ticked)) { item.Href = item.Href + "&fh_ticked=" + item.Value; } else { List<string> items = ticked.Split(new char[] { ',' }).ToList<string>(); (from f in this.Facets where !f.Enabled select f).ToList<FacetItem>().ForEach(f => items.Remove(f.Value)); if (items.Contains(item.Value)) { items.Remove(item.Value); } else { items.Add(item.Value); } item.Href = Regex.Replace(item.Href, @"&fh_ticked=[\w|,]+", ""); if (items.Count > 0) { item.Href = item.Href + "&fh_ticked=" + string.Join(",", items); } } } } query.setLocation(location); query.setListStartIndex(offset); this.Facets.ToList<FacetItem>().ForEach(delegate (FacetItem f) { if (f.Enabled) { f.Selected = false; } List<string> list = ticked.Split(new char[] { ',' }).ToList<string>(); if (f.Enabled && list.Contains(f.Value)) { f.Selected = true; } }); }