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)); } }
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)); } }
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; } }