コード例 #1
0
        public IActionResult Index()
        {
            var viewModel = sessionFactory.Execute(s =>
            {
                var players  = ratingRepository.GetPlayers(s);
                var allGames = ratingRepository.GetGameResults(s).ToList();

                return(new RatingViewModel
                {
                    Players = players.Select(x => new SelectListItem {
                        Text = x.Name, Value = x.Id.ToString()
                    }).ToArray(),
                    Rating = players.OrderByDescending(x => x.Decipoints)
                             .ThenBy(x => x.Id)
                             .Select(x => new Rating
                    {
                        Name = x.Name,
                        Points = x.Points,
                        Insignias = x.Insignias,
                        Games = allGames.Count(g => g.WithPlayer(x.Id)),
                        WhiteGames = allGames.Count(g => g.WhitePlayerId == x.Id),
                        BlackGames = allGames.Count(g => g.BlackPlayerId == x.Id),
                        Wins = allGames.Count(g => g.BlackPlayerId == x.Id && g.Winner == Winner.Black || g.WhitePlayerId == x.Id && g.Winner == Winner.White),
                        WhiteWins = allGames.Count(g => g.WhitePlayerId == x.Id && g.Winner == Winner.White),
                        BlackWins = allGames.Count(g => g.BlackPlayerId == x.Id && g.Winner == Winner.Black),
                        Loses = allGames.Count(g => g.BlackPlayerId == x.Id && g.Winner == Winner.White || g.WhitePlayerId == x.Id && g.Winner == Winner.Black),
                        WhiteLoses = allGames.Count(g => g.WhitePlayerId == x.Id && g.Winner == Winner.Black),
                        BlackLoses = allGames.Count(g => g.BlackPlayerId == x.Id && g.Winner == Winner.White),
                        Draws = allGames.Count(g => g.WithPlayer(x.Id) && g.Winner == Winner.Nobody),
                        WhiteDraws = allGames.Count(g => g.WhitePlayerId == x.Id && g.Winner == Winner.Nobody),
                        BlackDraws = allGames.Count(g => g.BlackPlayerId == x.Id && g.Winner == Winner.Nobody),
                    }
                                     )
                             .ToArray(),
                    LatestResults = ratingRepository.GetGameResults(s)
                                    .Select(x => new ResultViewModel
                    {
                        Winner = x.Winner,
                        BlackPlayer = players.Single(p => p.Id == x.BlackPlayerId).Name,
                        WhitePlayer = players.Single(p => p.Id == x.WhitePlayerId).Name,
                        PlayedAt = x.CreatedAt,
                        BlackDeltaPoints = x.BlackDeltaPoints,
                        WhiteDeltaPoints = x.WhiteDeltaPoints
                    }
                                            )
                                    .ToArray()
                });
            });

            return(View(viewModel));
        }
コード例 #2
0
        public IActionResult Index()
        {
            var viewModel = sessionFactory.Execute(s =>
            {
                var players = ratingRepository.GetPlayers(s);

                return(new RatingViewModel
                {
                    Players = players.Select(x => new SelectListItem {
                        Text = x.Name, Value = x.Id.ToString()
                    }).ToArray(),
                    Rating = players.OrderByDescending(x => x.Decipoints)
                             .ThenBy(x => x.Id)
                             .Select(x => new Rating
                    {
                        Name = x.Name,
                        Points = x.Points,
                        Insignias = x.Insignias
                    }
                                     )
                             .ToArray(),
                    LatestResults = ratingRepository.GetGameResults(s)
                                    .Select(x => new ResultViewModel
                    {
                        Winner = x.Winner,
                        BlackPlayer = players.Single(p => p.Id == x.BlackPlayerId).Name,
                        WhitePlayer = players.Single(p => p.Id == x.WhitePlayerId).Name,
                        PlayedAt = x.CreatedAt,
                        BlackDeltaPoints = x.BlackDeltaPoints,
                        WhiteDeltaPoints = x.WhiteDeltaPoints
                    }
                                            )
                                    .ToArray()
                });
            });

            return(View(viewModel));
        }