public static List <Column> ExtractColumnsOptions(HttpContextBase httpContext, QueryDescription description, bool canAggregate) { List <Column> result = new List <Column>(); NameValueCollection parameters = httpContext.Request.Params; string field = parameters["columns"]; if (!field.HasText()) { return(result); } var matches = FindOptionsModelBinder.ColumnRegex.Matches(field).Cast <Match>(); return(matches.Select(m => { var colName = m.Groups["token"].Value; string displayName = m.Groups["name"].Success ? FindOptionsModelBinder.DecodeValue(m.Groups["name"].Value) : null; var token = QueryUtils.Parse(colName, description, SubTokensOptions.CanElement | (canAggregate ? SubTokensOptions.CanAggregate : 0)); return new Column(token, displayName ?? token.NiceName()); }).ToList()); }
public static List <Signum.Entities.DynamicQuery.Filter> ExtractFilterOptions(HttpContextBase httpContext, QueryDescription queryDescription, bool canAggregate) { List <Signum.Entities.DynamicQuery.Filter> result = new List <Signum.Entities.DynamicQuery.Filter>(); NameValueCollection parameters = httpContext.Request.Params; string field = parameters["filters"]; if (!field.HasText()) { return(result); } var matches = FindOptionsModelBinder.FilterRegex.Matches(field).Cast <Match>(); return(matches.Select(m => { string name = m.Groups["token"].Value; var token = QueryUtils.Parse(name, queryDescription, SubTokensOptions.CanAnyAll | SubTokensOptions.CanElement | (canAggregate ? SubTokensOptions.CanAggregate : 0)); return new Signum.Entities.DynamicQuery.Filter(token, EnumExtensions.ToEnum <FilterOperation>(m.Groups["op"].Value), FindOptionsModelBinder.Convert(FindOptionsModelBinder.DecodeValue(m.Groups["value"].Value), token.Type)); }).ToList()); }