public async Task CountVotes(string timestamp, string channel) { var users = _userRepository.GetUsers(); var reactions = await _slack.GetReactions(timestamp, channel); var upVote = reactions.SingleOrDefault(reaction => reaction.Name == DougMessages.UpVote); if (upVote != null && upVote.Count >= users.Count / 2) { Revolution(channel); } }
private async Task <List <int> > FilterSlursToRemove(string channelId) { var recentSlurs = _slurRepository.GetRecentSlurs(); var slursReactions = recentSlurs.Select(slur => Tuple.Create(slur.SlurId, _slack.GetReactions(slur.TimeStamp, channelId))); var slursToRemove = new List <int>(); foreach (var slurReaction in slursReactions) { var slurId = slurReaction.Item1; var reactionTask = slurReaction.Item2; int score = 0; var reaction = await reactionTask; score += reaction.Single(react => react.Name == DougMessages.UpVote).Count; score -= reaction.Single(react => react.Name == DougMessages.Downvote).Count; if (score < 0) { slursToRemove.Add(slurId); } } return(slursToRemove); }