public async Task <IActionResult> Approve(int id) { var post = _postService.FindWithThread(id); if (post == null) { return(BadRequest()); } if (post.Thread.ApprovalStatus != ApprovalStatus.Approved) { return(BadRequest()); } if (post.ApprovalStatus == ApprovalStatus.Approved) { return(Ok()); } if (!HasPermission(post.Thread.TopicId)) { return(Forbid()); } _postService.SetApprovalStatus(CurrentUserId, post, ApprovalStatus.Approved); _threadService.IncreaseNumberOfPosts(post.ThreadId); await _unitOfWork.SaveChangesAsync(); return(Ok()); }