public async Task <IActionResult> Delete(VoteModel model) { try { var user = await GetCurrentUser(); Vote vote; if (model.Id != 0) { vote = await _voteService.GetVote(model.Id); } else { vote = await _voteService.GetUserVoteForArticle(user.Id, model.ArticleId, model.VoteType); } if (vote == null) { _logger.LogInformation("Vote not found"); return(NotFound("Vote not found")); } _dbContext.Votes.Remove(vote); await _dbContext.SaveChangesAsync(); await _voteService.UpdateArticleScore(model.ArticleId); var artVoteCount = await GetVoteCountForArticle(model.ArticleId, model.VoteType); var score = (await _dbContext.Articles.FindAsync(model.ArticleId))?.Score; var voteResultModel = new { model.ArticleId, model.VoteType, VoteCount = artVoteCount, Score = score }; return(Ok(voteResultModel)); } catch (Exception ex) { _logger.LogError(ex, "Error deleting vote", model); return(StatusCode((int)HttpStatusCode.InternalServerError, "Error deleting vote")); } }