public BaseTypeTest() { _profile = new AutoQueryableProfile(); _queryStringAccessor = new SimpleQueryStringAccessor(); var selectClauseHandler = new DefaultSelectClauseHandler(); var orderByClauseHandler = new DefaultOrderByClauseHandler(); var wrapWithClauseHandler = new DefaultWrapWithClauseHandler(); var clauseMapManager = new ClauseMapManager(selectClauseHandler, orderByClauseHandler, wrapWithClauseHandler); var clauseValueManager = new ClauseValueManager(selectClauseHandler, orderByClauseHandler, wrapWithClauseHandler); var criteriaFilterManager = new CriteriaFilterManager(); _autoQueryableContext = new AutoQueryableContext(_profile, new AutoQueryHandler(_queryStringAccessor, criteriaFilterManager, clauseMapManager, clauseValueManager)); }
private void _getClauses <T>(IAutoQueryableProfile profile) where T : class { // Set the defaults to start with, then fill/overwrite with the query string values ClauseValueManager.SetDefaults(typeof(T), profile); //var clauses = new List<Clause>(); foreach (var q in _queryStringAccessor.QueryStringParts.Where(q => !q.IsHandled)) { var clauseQueryFilter = _clauseMapManager.FindClauseQueryFilter(q.Value); if (clauseQueryFilter != null) { var operandValue = _getOperandValue(q.Value, clauseQueryFilter.Alias); var value = clauseQueryFilter.ParseValue(operandValue, typeof(T), profile); var propertyInfo = ClauseValueManager.GetType().GetProperty(clauseQueryFilter.ClauseType.ToString()); if (propertyInfo.PropertyType == typeof(bool)) { value = bool.Parse(value.ToString()); } propertyInfo.SetValue(ClauseValueManager, value); //clauses.Add(new Clause(clauseQueryFilter.ClauseType, value, clauseQueryFilter.ValueType)); } } if (ClauseValueManager.PageSize != null) { ClauseValueManager.Top = ClauseValueManager.PageSize; } if (ClauseValueManager.Page != null) { //this.Logger.Information("Overwriting 'skip' clause value because 'page' is set"); // Calculate skip from page if page query param was set ClauseValueManager.Top = ClauseValueManager.Top ?? profile.DefaultToTake; ClauseValueManager.Skip = (ClauseValueManager.Page - 1) * ClauseValueManager.Top; } if (ClauseValueManager.OrderBy == null && profile.DefaultOrderBy != null) { ClauseValueManager.OrderBy = profile.DefaultOrderBy; } if (ClauseValueManager.Select.Count == 0) { _clauseMapManager.GetClauseQueryFilter(ClauseType.Select).ParseValue("", typeof(T), profile); } }
public FilterTest() { var settings = new AutoQueryableSettings(); _profile = new AutoQueryableProfile(settings); _queryStringAccessor = new SimpleQueryStringAccessor(); var selectClauseHandler = new DefaultSelectClauseHandler(); var orderByClauseHandler = new DefaultOrderByClauseHandler(); var wrapWithClauseHandler = new DefaultWrapWithClauseHandler(); var clauseMapManager = new ClauseMapManager(selectClauseHandler, orderByClauseHandler, wrapWithClauseHandler); var clauseValueManager = new ClauseValueManager(selectClauseHandler, orderByClauseHandler, wrapWithClauseHandler, _profile); var criteriaFilterManager = new CriteriaFilterManager(); var defaultAutoQueryHandler = new AutoQueryHandler(_queryStringAccessor, criteriaFilterManager, clauseMapManager, clauseValueManager, _profile); _autoQueryableContext = new AutoQueryableContext(defaultAutoQueryHandler); }