示例#1
0
        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;
        }
示例#2
0
        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;
        }