/// <summary> /// Set up the filter expression based on the incoming values. /// </summary> /// <param name="query"></param> /// <returns></returns> private Expression <Func <Munro, bool> > GetFilterExpression(MunroQueryDto query) { // Validate (Move to Validation class when time permits) if (query.MinHeight >= query.MaxHeight) { throw new ArgumentException("MinHeight must not be greater or equal to MaxHeight"); } Expression <Func <Munro, bool> > filterExpression = null; if (query.MunroType != null) { filterExpression = filterExpression.And(x => x.MunroType.Equals(query.MunroType)); } if (query.MinHeight != null) { filterExpression = filterExpression.And(x => x.HeightMeters > query.MinHeight); } if (query.MaxHeight != null) { filterExpression = filterExpression.And(x => x.HeightMeters < query.MaxHeight); } return(filterExpression); }
public PagedResult <Munro> Get([FromQuery] MunroQueryDto query) { return(repository.GetPaged( query.PageNumber, query.PageSize, query.SortFields, query.SortDescending, GetFilterExpression(query))); }
public MunrosControllerShould() { // Would normally mock here but no need in this instance. repository = new MunroRepository(); // Set up controller controller = new MunrosController(repository); // Set up basic query dto query = new MunroQueryDto(); }