예제 #1
0
        public async Task <ActionResult> VoteMovie(Guid movieId, int score)
        {
            var userIdentity = User.Claims.Where(a => a.Type == ClaimTypes.NameIdentifier).FirstOrDefault().Value;
            var vote         = await _voteService.AddVote(movieId, new Guid(userIdentity), score);

            return(Ok());
        }
 public IActionResult PostVote(Guid id, string name)
 {
     if (_cattleService.GetIfExistsById(id) == null)
     {
         return(NotFound());
     }
     _voteService.AddVote(id, name);
     return(CreatedAtAction("PostVote", null));
 }
예제 #3
0
        public async Task <IActionResult> Vote([FromBody] PolicyChangePollVoteViewModel model)
        {
            if (ModelState.IsValid)
            {
                var poll = await _pollService.GetPoll(model.PollId);

                if (poll == null)
                {
                    ModelState.AddModelError("", _localizer["PollNotFound"]);
                    return(BadRequest(Errors.GetErrorList(ModelState)));
                }

                if (poll.GetType() != typeof(PolicyChangePoll))
                {
                    return(BadRequest(Errors.GetSingleErrorList("", _localizer["PollTypeNotPolicyChange"])));
                }

                if (!poll.Active || poll.Deadline <= DateTime.UtcNow)
                {
                    ModelState.AddModelError("", _localizer["PollCompleted"]);
                    return(BadRequest(Errors.GetErrorList(ModelState)));
                }

                if (!await _pollService.UserCanVote(poll.Id, User.ApiGetUserId()))
                {
                    return(BadRequest(Errors.GetSingleErrorList("", _localizer["UserCannotVoteAfterAddedPollStart"])));
                }

                if (!await _userService.IsVoter(User.ApiGetUserId()))
                {
                    return(BadRequest(Errors.GetSingleErrorList("", _localizer["PollVoterError"])));
                }

                var userVoted = await _voteService.UserVotedInPoll(User.ApiGetUserId(), model.PollId);

                if (userVoted)
                {
                    ModelState.AddModelError("", _localizer["PollRecordExist"]);
                    return(BadRequest(Errors.GetErrorList(ModelState)));
                }

                //check deadline
                var vote = new Vote {
                    PollId = model.PollId, VoterId = User.ApiGetUserId(), Value = model.PollValue
                };

                await _voteService.AddVote(vote);

                var result = _mapper.Map <Poll, PollListViewModel>(poll);
                result.UserVoted = true;
                return(Ok(result));
            }

            return(BadRequest(Errors.GetErrorList(ModelState)));
        }
예제 #4
0
        public async Task Should_Add_Vote()
        {
            var poll = new PolicyChangePoll
            {
                Name         = "test",
                Active       = true,
                CreateTime   = DateTime.UtcNow,
                QuestionBody = "test dfs",
                TenantId     = "test"
            };

            _context.Polls.Add(poll);
            _context.Users.Add(new ApplicationUser
            {
                Email          = "*****@*****.**",
                FirstName      = "test",
                LastName       = "Test",
                TenantId       = "test",
                CreatedAt      = DateTime.UtcNow,
                SecurityStamp  = new Guid().ToString(),
                EmailConfirmed = false,
                Id             = 1.ToString(),
                IsDeleted      = false,
                UserDetail     = new UserDetail {
                    AuthorityPercent = 1, LanguagePreference = "tr"
                }
            });
            _context.SaveChanges();
            var vote = new Vote
            {
                PollId  = poll.Id,
                Value   = 1,
                VoterId = 1.ToString()
            };
            await _voteService.AddVote(vote);

            var getVote = _context.Votes.FirstOrDefault(x => x.Id == vote.Id);

            Assert.Equal(vote.PollId, getVote.PollId);
            Assert.Equal(vote.Value, getVote.Value);
            Assert.Equal(vote.VoterId, getVote.VoterId);
        }
예제 #5
0
        public void AddVote(UserVote vote)
        {
            var user   = _userService.GetUser(vote.IdUser);
            var survey = GetSurvey(vote.IdSurvey);

            if (survey.EndTime < IsraelTimeZone.Now())
            {
                throw new SurveyException("Voting has ended");
            }

            if (user.Type > survey.TypeMember)
            {
                throw new SurveyException("You not Allow to vote on this Survey");
            }

            IsVoteLegal(vote);

            UpdateSurveyVote(survey, vote.Vote);
            _voteService.AddVote(survey.IdSurvey, vote.IdUser);
        }
예제 #6
0
        public async Task <IActionResult> Post(VoteViewModel.VoteUser model)
        {
            try
            {
                var findUser = await _userManager.FindByIdAsync(model.UserId);

                if (findUser == null)
                {
                    return(NotFound(_messageModelBuilder.CreateModel("404", "ID пользователя не найден")));
                }
                var findVote = await _voteService.FindVoteById(model.Id);

                if (findVote == null)
                {
                    return(NotFound(_messageModelBuilder.CreateModel("404", "ID голосования не найден")));
                }

                if (model.IsCancel)
                {
                }
                else
                {
                    var result = await _voteService.AddVote(new VoteUser { Value = model.Value, UserId = findUser.Id, VoteId = findVote.Id });

                    if (result == 0)
                    {
                        return(NotFound(_messageModelBuilder.CreateModel("500", "Ошибка при сохранении голоса")));
                    }
                }
                return(Ok());
            }
            catch (Exception e)
            {
                return(BadRequest(_messageModelBuilder.CreateModel("500", e.Message)));
            }
        }
예제 #7
0
 public double Submit([FromBody] VoteModel vote)
 {
     _voteService.AddVote(vote.Map <Vote>());
     return(_voteService.GetResult(vote.UploadId));
 }
예제 #8
0
 public ActionResult <bool> AddUserVote([FromBody] Vote vote)
 {
     return(_voteService.AddVote(vote));
 }