Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
        }