private static IEnumerable <IndividualVoteStatsViewModel> CalculateIndividualStats(IEnumerable <Vote> votes, IEnumerable <Player> allPlayers) { var individualStats = new List <IndividualVoteStatsViewModel>(); foreach (var player in allPlayers) { if (player.Participating) { var stats = new IndividualVoteStatsViewModel(); stats.Name = player.Name; stats.FactionName = player.Recruitments.Last().FactionName; stats.Character = player.Character; var individualVotes = votes.Where(v => string.Equals(v.Voter, player.Name)); stats.VotesCast = individualVotes.Count(); stats.PercentageOfVotesOntoMafia = VoteAnalyser.CalculatePercentage(individualVotes, (v) => v.TargetAllegiance == Allegiance.Mafia, allPlayers); stats.PercentageOfVotesOntoNonTown = VoteAnalyser.CalculatePercentage(individualVotes, (v) => v.TargetAllegiance != Allegiance.Town, allPlayers); stats.PercentageOfVotesOntoTown = VoteAnalyser.CalculatePercentage(individualVotes, (v) => v.TargetAllegiance == Allegiance.Town, allPlayers); stats.PercentageOfVotesOntoOwnAllegiance = VoteAnalyser.CalculatePercentage(individualVotes, (v) => v.TargetAllegiance == v.VoterFactionAllegiance, allPlayers); stats.PercentageOfVotesOntoOwnFaction = VoteAnalyser.CalculatePercentage(individualVotes, (v) => v.TargetFactionName == v.VoterFactionName, allPlayers); stats.TimesVotedFor = votes.Where(v => string.Equals(v.Recipient, player.Name)).Count(); individualStats.Add(stats); } } return(individualStats); }
private static IEnumerable<IndividualVoteStatsViewModel> CalculateIndividualStats(IEnumerable<Vote> votes, IEnumerable<Player> allPlayers) { var individualStats = new List<IndividualVoteStatsViewModel>(); foreach (var player in allPlayers) { var stats = new IndividualVoteStatsViewModel(); stats.Name = player.Name; stats.FactionName = player.Recruitments.Last().FactionName; stats.Character = player.Character; var individualVotes = votes.Where(v => string.Equals(v.Voter, player.Name)); stats.VotesCast = individualVotes.Count(); stats.PercentageOfVotesOntoMafia = VoteAnalyser.CalculatePercentage(individualVotes, (v) => v.TargetAllegiance == Allegiance.Mafia, allPlayers); stats.PercentageOfVotesOntoNonTown = VoteAnalyser.CalculatePercentage(individualVotes, (v) => v.TargetAllegiance != Allegiance.Town, allPlayers); stats.PercentageOfVotesOntoTown = VoteAnalyser.CalculatePercentage(individualVotes, (v) => v.TargetAllegiance == Allegiance.Town, allPlayers); stats.PercentageOfVotesOntoOwnAllegiance = VoteAnalyser.CalculatePercentage(individualVotes, (v) => v.TargetAllegiance == v.VoterFactionAllegiance, allPlayers); stats.PercentageOfVotesOntoOwnFaction = VoteAnalyser.CalculatePercentage(individualVotes, (v) => v.TargetFactionName == v.VoterFactionName, allPlayers); stats.TimesVotedFor = votes.Where(v => string.Equals(v.Recipient, player.Name)).Count(); individualStats.Add(stats); } return individualStats; }