Пример #1
0
        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);
        }
Пример #2
0
        public ActionResult <IEnumerable <GameDto> > GetAll([FromQuery] PlayerStatsQuery query)
        {
            var playerStatsDto = _gameService.GetAll(query);

            return(Ok(playerStatsDto));
        }