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)); }
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)); }