public async Task <IActionResult> Upvotes(int id) { Report report = _reportRepository.GetReportsById(id); Upvotes temp = _upvotesRepository.UpvoteExists(report, await _userManager.GetUserAsync(User)); // if upvote doesn't exist already if (temp == null) { Upvotes newUpvote = new Upvotes() { Reporter = await _userManager.GetUserAsync(User), Report = report }; _upvotesRepository.AddUpvote(newUpvote); _reportRepository.IncrementUpvote(id); } else // upvote already exists, therefore remove the upvote { _upvotesRepository.UndoUpvote(report, await _userManager.GetUserAsync(User)); _reportRepository.DecrementUpvote(id); } return(RedirectToAction("ReportDetails", new { id })); }