Пример #1
0
        public async Task <LeaderboardsViewModel> GetLeaderboardData(LeaderboardsInputModel inputModel)
        {
            List <PlayerLeaderboardsViewModel> players = await this.context.Heroes
                                                         .Select(x => new PlayerLeaderboardsViewModel
            {
                Username = x.Name,
                Points   = (int)typeof(Statistics).GetProperty(inputModel.Criteria).GetValue(x.Statistics),
            })
                                                         .ToListAsync();

            int pagesCount = (players.Count / PlayersPerPage) + 1;

            players = players
                      .OrderByDescending(x => x.Points)
                      .Skip((PlayersPerPage * inputModel.Page) - PlayersPerPage)
                      .Take(PlayersPerPage).ToList();

            return(new LeaderboardsViewModel()
            {
                Players = players,
                Criteria = inputModel.Criteria,
                Pages = pagesCount,
                CurrentPage = inputModel.Page,
            });
        }
        public async Task <IActionResult> Index(LeaderboardsInputModel inputModel)
        {
            LeaderboardsViewModel viewModel = await this.leaderboardsService.GetLeaderboardData(inputModel);

            return(this.View(viewModel));
        }