Beispiel #1
0
        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());
        }