public async Task LoadAsync() { if (Poll == null) { return; } IList <Answer> answers; using (var service = Statics.NewService()) { Votes = await service.GetVotesForPollAsync(Poll); answers = await service.GetAnswersForPollAsync(Poll); UsersCount = await service.GetUsersCountAsync(); } Answers = new ObservableCollection <PollModel.AnswerWrapper>(answers .Select(a => new PollModel.AnswerWrapper(a, Votes.Count(v => v.Answer.Id == a.Id), Votes.Any(v => v.Answer.Id == a.Id && v.User.Id == Statics.CurrentUser.Id))) ); CanVote = Votes.All(v => v.User.Id != Statics.CurrentUser.Id); TransitionerIndex = CanVote ? 0 : 1; }
public void AddVote(ulong userId, VoteType vote = VoteType.Upvote) { if (IsClosed) { throw new Exception("The report specified has already been closed."); } if (Votes.All(x => x.UserId != userId)) { Votes.Add(new VoteInfo(userId, vote)); return; } VoteInfo info = Votes.First(x => x.UserId == userId); if (info.Vote == vote) { return; } Votes[Votes.IndexOf(info)].Vote = vote; }