示例#1
0
        public async Task <IActionResult> AddVote([FromBody] VoteRequestDto voteReq)
        {
            try
            {
                var post = await _service.AddVote(voteReq);

                return(Ok(_mapper.Map <VoteResultDto>(post)));
            }
            catch (BussinessException ex)
            {
                return(BadRequest(ex.Message));
            }
        }
示例#2
0
        public async Task <ActionResult <VotingDto> > Vote(VoteRequestDto request)
        {
            try
            {
                var userId = new Guid(User.Identities.First().Name);
                var voting = await _service.Vote(request, userId);

                return(Ok(voting));
            }
            catch (Exception ex)
            {
                if (ex is HttpExceptionBase)
                {
                    return(BadRequest(ex));
                }
                return(StatusCode((int)HttpStatusCode.InternalServerError, ex));
            }
        }
示例#3
0
        public async Task <VotingDto> Vote(VoteRequestDto request, Guid userId)
        {
            try
            {
                var vote = await _votingRepository.GetVoteById(request.VoteID);

                if (vote.Voters != null && vote.Voters.Any(v => v.ID == userId))
                {
                    throw new HttpExceptionBase("User already voted");
                }

                if (vote.DueDate < DateTime.Now)
                {
                    throw new HttpExceptionBase("Vote has passed due date");
                }

                if (vote.Voters == null)
                {
                    vote.Voters = new List <User>();
                }

                var user = await _userRepository.GetUserById(userId);

                vote.Voters.Add(user);
                vote.VotersCount++;

                await _votingRepository.UpdateAsync(vote);

                return(new VotingDto
                {
                    ID = vote.ID,
                    Name = vote.Name,
                    Description = vote.Description,
                    DueDate = vote.DueDate,
                    CreatedDate = vote.CreatedDate,
                    VotersCount = vote.VotersCount
                });
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }