Esempio n. 1
0
        public async Task Vote(PlanningRound round, PlanningUser user, PlanningCard card)
        {
            round = _repository.GetById(round.Id);
            var vote = new PlanningVote
            {
                Id      = Guid.NewGuid(),
                RoundId = round.Id,
                Card    = card,
                User    = user
            };

            round.Votes.AddOrUpdate(vote);
            _repository.Update(round);
            var room = _roomRepository.GetById(round.RoomId);

            if (room == null)
            {
                return;
            }
            if (room.Users.Count == round.Votes.Count)
            {
                await ShowAllVotes(round.Id);
            }
            await Clients.All.SendAsync("onUserVoted", vote);
        }
Esempio n. 2
0
        public static void AddOrUpdate(this List <PlanningVote> votes, PlanningVote vote)
        {
            var existingVote =
                votes.FindIndex(v => v.RoundId == vote.RoundId && v.User.Id == vote.User.Id);

            if (existingVote > -1)
            {
                votes.RemoveAt(existingVote);
            }

            votes.Add(vote);
        }