public PageResult <GameDto> GetAll(PlayerStatsQuery query) { var baseQuery = _dbContext .Game .Include(r => r.Category) .Include(r => r.PlayerStats) .Where(r => query.SearchPhrase == null && r.Name.ToLower().Contains(query.SearchPhrase.ToLower())); if (!string.IsNullOrEmpty(query.SortBy)) { var columnsSelector = new Dictionary <string, Expression <Func <Game, object> > > { { nameof(Game.Name), r => r.Name }, { nameof(Game.Category), r => r.Category }, { nameof(Game.PlayerStats), r => r.PlayerStats } }; var selectedColumn = columnsSelector[query.SortBy]; baseQuery = query.SortDirection == SortDirection.ASC ? baseQuery.OrderBy(selectedColumn) : baseQuery.OrderByDescending(selectedColumn); } var games = baseQuery .Skip(query.PageSize * (query.PageNumber - 1)) .Take(query.PageSize) .ToList(); var totalItemsCount = baseQuery.Count(); var gamesDto = _mapper.Map <List <GameDto> >(games); var result = new PageResult <GameDto>(gamesDto, totalItemsCount, query.PageSize, query.PageNumber); return(result); }
public ActionResult <IEnumerable <GameDto> > GetAll([FromQuery] PlayerStatsQuery query) { var playerStatsDto = _gameService.GetAll(query); return(Ok(playerStatsDto)); }