public ActionResult <IEnumerable <PollAnswer> > PollVote(int userID, int pollAnswerID, int pollID) { //check if poll can have multiple votes if (_context.Polls.Find(pollID).SingleVote) { //check for existing vote for that poll if poll only has single vote option var pollAnswers = _context.PollAnswers.Where(e => e.PollID == pollID); var PollVotes = new List <PollAnswerVote>(); foreach (PollAnswer pa in pollAnswers) { PollVotes.AddRange(_context.PollAnswerVotes.Where(e => e.PollAnswerID == pa.PollAnswerID && e.UserID == userID)); } if (PollVotes != null) { _context.PollAnswerVotes.RemoveRange(PollVotes); } } //create new vote PollAnswerVote pollAnswerVote = new PollAnswerVote(); pollAnswerVote.PollAnswerID = pollAnswerID; pollAnswerVote.UserID = userID; pollAnswerVote.User = _context.Users.SingleOrDefault(e => e.UserID == userID); pollAnswerVote.PollAnswer = _context.PollAnswers.SingleOrDefault(e => e.PollAnswerID == pollAnswerID); _context.PollAnswerVotes.Add(pollAnswerVote); _context.SaveChanges(); return(Ok()); }
internal static ResourcePollAnswerVoteEntity Map(this PollAnswerVote pollAnswerVote) { return(new ResourcePollAnswerVoteEntity { id = pollAnswerVote.Id, resourcePollAnswerId = pollAnswerVote.AnswerId, userid = pollAnswerVote.UserId, createdTime = pollAnswerVote.CreatedTime, }); }
void IResourcesRepository.CreatePollAnswerVote(PollAnswerVote vote) { using (var dc = CreateContext()) { // Don't add if the user has already voted in this poll. if (!HasVoted(dc, vote.UserId, vote.AnswerId)) { dc.ResourcePollAnswerVoteEntities.InsertOnSubmit(vote.Map()); dc.SubmitChanges(); } } }
void IPollsCommand.CreatePollAnswerVote(PollAnswerVote vote) { vote.Prepare(); vote.Validate(); _repository.CreatePollAnswerVote(vote); }