private static void CalculateTotalStats(VoteStatsViewModel viewModel, IEnumerable <Vote> votes, IEnumerable <Player> allPlayers) { viewModel.NumberOfVotes = votes.Count(); viewModel.PercentageOfVotesOntoMafia = VoteAnalyser.CalculatePercentage(votes, (v) => v.TargetAllegiance == Allegiance.Mafia, allPlayers); viewModel.PercentageOfVotesOntoTown = VoteAnalyser.CalculatePercentage(votes, (v) => v.TargetAllegiance == Allegiance.Town, allPlayers); viewModel.PercentageOfVotesOntoNonTown = VoteAnalyser.CalculatePercentage(votes, (v) => v.TargetAllegiance != Allegiance.Town, allPlayers); }
public ActionResult Index() { VoteStatsViewModel viewModel = new VoteStatsViewModel(); var meaningfulVotes = this.repo.FindAllValidNonUnotes(); var allPlayers = this.repo.FindAllPlayers(); var meaningfulVoteGroups = meaningfulVotes.GroupBy(v => new { v.Voter, v.Recipient, v.Day }); var votes = meaningfulVoteGroups.Select(g => g.First()); CalculateTotalStats(viewModel, votes, allPlayers); viewModel.IndividualVoteStats = CalculateIndividualStats(votes, allPlayers); viewModel.FactionVoteStats = CalculateFactionStats(votes, allPlayers); return(this.View(viewModel)); }