Example #1
0
        private Expression <Func <Game, bool> > GenerateRatingRangePredicate(GameSearchParametersDto gameSearchParametersDto)
        {
            if (gameSearchParametersDto.MinRating.HasValue && gameSearchParametersDto.MaxRating.HasValue)
            {
                return(GetMoreThanMinRatingExpression(gameSearchParametersDto.MinRating.Value).And(GetLessThanMaxRatingExpression(gameSearchParametersDto.MaxRating.Value)));
            }

            if (gameSearchParametersDto.MinRating.HasValue)
            {
                return(GetMoreThanMinRatingExpression(gameSearchParametersDto.MinRating.Value));
            }

            if (gameSearchParametersDto.MaxRating.HasValue)
            {
                return(GetLessThanMaxRatingExpression(gameSearchParametersDto.MaxRating.Value));
            }

            return(o => true);

            Expression <Func <Game, bool> > GetMoreThanMinRatingExpression(int minRating)
            {
                return(o => o.Rating >= minRating);
            }

            Expression <Func <Game, bool> > GetLessThanMaxRatingExpression(int maxRating)
            {
                return(o => o.Rating <= maxRating);
            }
        }
Example #2
0
 public async Task <JsonResult> Search(GameSearchParametersDto searchParameters)
 {
     return(new JsonResult(_gameQueryer.SearchGamesByPredicate(searchParameters)));
 }
Example #3
0
        public IEnumerable <GameDto> SearchGamesByPredicate(GameSearchParametersDto gameSearchParametersDto)
        {
            var predicate = _predicateGenerator.GeneratePredicate(gameSearchParametersDto).WithAdvancedPredicate(GenerateRatingRangePredicate(gameSearchParametersDto)).Compile();

            return(_dataStore.GetGames().Where(predicate).ToGameDtos());
        }