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); }
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); }