public IHttpActionResult Vote(int id, VoteRequestModel model) { var suggestion = this.suggestions .GetSuggestionById(id) .SingleOrDefault(); if (suggestion == null) { return(this.BadRequest("Suggestion does not exist")); } if (!this.suggestions.UserIsEligibleToGetSuggestion(suggestion, this.User.IsInRole(UserConstants.AdminRole))) { return(this.BadRequest("You do not have permission to vote for that suggestion!")); } var userId = this.User.Identity.GetUserId(); var vote = this.votes .GetVote(id, userId) .SingleOrDefault(); Vote newVote; Suggestion updatedSuggestion; if (vote == null) { newVote = this.votes .AddVote(id, userId, Mapper.Map <Vote>(model)); updatedSuggestion = model.Type == VoteType.Up ? this.suggestions.UpdateSuggestionsVotesCount(suggestion, suggestion.UpVotesCount + 1, suggestion.DownVotesCount) : this.suggestions.UpdateSuggestionsVotesCount(suggestion, suggestion.UpVotesCount, suggestion.DownVotesCount + 1); } else { if (model.Type == vote.Type) { this.votes.Delete(vote); updatedSuggestion = model.Type == VoteType.Up ? this.suggestions.UpdateSuggestionsVotesCount(suggestion, suggestion.UpVotesCount - 1, suggestion.DownVotesCount) : this.suggestions.UpdateSuggestionsVotesCount(suggestion, suggestion.UpVotesCount, suggestion.DownVotesCount - 1); } else { newVote = this.votes .ModifyVote(vote, model); updatedSuggestion = model.Type == VoteType.Up ? this.suggestions.UpdateSuggestionsVotesCount(suggestion, suggestion.UpVotesCount + 1, suggestion.DownVotesCount - 1) : this.suggestions.UpdateSuggestionsVotesCount(suggestion, suggestion.UpVotesCount - 1, suggestion.DownVotesCount + 1); } } return(this.Ok(Mapper.Map <SuggestionVoteResponseModel>(updatedSuggestion))); }
public Vote ModifyVote(Vote voteToModify, VoteRequestModel model) { voteToModify.Type = model.Type; this.votes.SaveChanges(); return(voteToModify); }
public async Task <ActionResult <InputVoteResponseModel> > VoteAsync(VoteRequestModel model) { var userId = this.User.GetId(); await this.votesService.VoteAsync(model.ArticleId, userId, model.VoteType); return(this.GetVotes(model.ArticleId)); }
private static Vote ModelToVote(VoteRequestModel voteRequest, Ballot ballot, Choice option, Poll poll) { return(new Vote { Choice = option, Poll = poll, Ballot = ballot, VoteValue = voteRequest.VoteValue }); }
public async Task <ActionResult> VoteMeal(VoteRequestModel voteRequestModel) { if (!ModelState.IsValid) { return(BadRequest()); } var user = await _userManager.GetUserAsync(User); await _uow.Meals.VoteMealAsync(user.Id, voteRequestModel.VoteEnum, voteRequestModel.MealId); try { await _uow.SaveChangesAsync(); } catch (Exception e) { var errMsg = "Could not vote for meal"; _logger.LogError($"{errMsg}: {e.Message}"); return(BadRequest(errMsg)); } return(Ok()); }