public SearchConstraint ParserRules() { SearchConstraint result; if (!string.IsNullOrEmpty(this.searchparameters)) { SearchConstraint searchConstraint = new SearchConstraint(); string[] array = this.searchparameters.Split(new char[] { '&' }); for (int i = 0; i < array.Length; i++) { string text = array[i]; searchConstraint.Rules.Add(new ConstraintRule { Data = text.Split(new char[] { ':' })[1], Field = text.Split(new char[] { ':' })[0], Operator = ConditionalOperator.Equal }); } result = searchConstraint; } else { result = null; } return(result); }
public static string GetPredicate <T>(SearchConstraint gridConstraint, out object[] values) { IList <object> list = new List <object>(); int num = 0; string predicate = GetPredicate <T>(gridConstraint, list, ref num); values = list.ToArray <object>(); return(predicate); }
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { object result; try { HttpRequestBase request = controllerContext.HttpContext.Request; int num = int.Parse(request["page"] ?? "1"); num = ((num <= 0) ? 1 : num); int num2 = int.Parse(request["rows"] ?? "10"); num2 = ((num2 <= 0) ? 10 : num2); string searchparameters = request["search"]; SearchConstraint searchConstraint = (request.Unvalidated["filters"] == null) ? null : SearchConstraint.Create(request.Unvalidated["filters"]); SearchConstraint searchConstraint2 = new QueryStringRuleParser(searchparameters).ParserRules(); if (searchConstraint2 != null) { if (searchConstraint != null) { searchConstraint.Groups.Add(searchConstraint2); } else { searchConstraint = new SearchConstraint { GroupOperator = "AND" }; searchConstraint.Groups.Add(searchConstraint2); } } result = new PageSearchParameters { PageIndex = num, PageSize = num2, SortColumn = request["sidx"] ?? string.Empty, SortOrder = request["sord"] ?? "asc", Where = searchConstraint, QuerySearch = searchConstraint2, NotPage = request["notPage"] != null && bool.Parse(request["notPage"]), QueryLevel = int.Parse(request["queryLevel"] ?? "1"), ExpandLevel = int.Parse(request["expandLevel"] ?? "1") }; } catch { result = null; } return(result); }
public static string GetConstraintByAutomaticFilterConstraint <T>(SearchConstraint group, ref IList <object> values, ref int parameterIndex) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("("); List <ConstraintRule> rules = group.Rules; if (rules != null && rules.Count > 0) { System.Reflection.PropertyInfo[] properties = typeof(T).GetProperties(); int num = 1; using (List <ConstraintRule> .Enumerator enumerator = rules.GetEnumerator()) { while (enumerator.MoveNext()) { ConstraintRule rule = enumerator.Current; if (!string.IsNullOrEmpty(rule.Field)) { System.Reflection.PropertyInfo propertyInfo = ( from p in properties where p.Name.ToLower() == rule.Field.ToLower() select p).FirstOrDefault(); if (!(propertyInfo == null)) { Type propertyType = propertyInfo.PropertyType; values.Add(rule.GetValue(propertyType)); stringBuilder.Append(rule.GetPredicate(parameterIndex)); if (num < rules.Count) { stringBuilder.Append(group.GroupOperator.Equals("and", StringComparison.OrdinalIgnoreCase) ? " AND " : " OR "); } parameterIndex++; num++; } } } } } stringBuilder.Append(")"); return(stringBuilder.ToString()); }
public static Expression <Func <T, bool> > GetExpression <T>(SearchConstraint gridConstraint, ICustomFilterConstraint <T> service) { Expression <Func <T, bool> > expression = PredicateBuilder.True <T>(); if (gridConstraint != null) { foreach (SearchConstraint current in gridConstraint.Groups) { if (current != null) { Expression <Func <T, bool> > expression2 = null; foreach (ConstraintRule current2 in current.Rules) { Expression <Func <T, bool> > expression3 = service.CustomFilterExpression(current2); if (expression3 != null) { if (expression2 == null) { expression2 = expression3; } else { if (current.GroupOperator.Equals("and", StringComparison.OrdinalIgnoreCase)) { expression2.And(expression3); } else { expression2.Or(expression3); } } } } expression = (gridConstraint.GroupOperator.Equals("and", StringComparison.OrdinalIgnoreCase) ? expression.And(expression2) : expression.Or(expression2)); } } } return(expression); }
private static string GetPredicate <T>(SearchConstraint constraint, IList <object> values, ref int parameterIndex) { StringBuilder strBuilder = new StringBuilder(); bool flg = !string.IsNullOrEmpty(constraint.GroupOperator) && ((constraint.Groups != null) ? constraint.Groups.Count : 0) + ((constraint.Rules != null) ? constraint.Rules.Count : 0) > 1; if (flg) { strBuilder.Append("("); } if (constraint.Rules != null && constraint.Rules.Count > 0) { System.Reflection.PropertyInfo[] properties = typeof(T).GetProperties(); int num = 1; using (List <ConstraintRule> .Enumerator enumerator = constraint.Rules.GetEnumerator()) { while (enumerator.MoveNext()) { ConstraintRule rule = enumerator.Current; if (!string.IsNullOrEmpty(rule.Field)) { System.Reflection.PropertyInfo propertyInfo = ( from p in properties where p.Name.ToLower() == rule.Field.ToLower() select p).FirstOrDefault(); if (!(propertyInfo == null)) { Type propertyType = propertyInfo.PropertyType; values.Add((propertyType == typeof(string)) ? rule.GetValue(propertyType).ToString().ToLower() : rule.GetValue(propertyType)); strBuilder.Append(rule.GetPredicate(parameterIndex)); if (num < constraint.Rules.Count && !string.IsNullOrEmpty(constraint.Rules[num].Field)) { strBuilder.Append(" " + constraint.GroupOperator + " "); } parameterIndex++; num++; } } } } } if (constraint.Groups != null && constraint.Groups.Count > 0) { int num2 = 0; foreach (SearchConstraint current in constraint.Groups) { num2++; if (current != null) { if (current.Rules != null && current.Rules.Count > 0) { if (num2 > 1) { strBuilder.Append(" " + constraint.GroupOperator + " "); } strBuilder.Append(GetPredicate <T>(current, values, ref parameterIndex)); } } } } if (flg) { strBuilder.Append(")"); } return(strBuilder.ToString()); }