Example #1
0
        public ResultDto <CommentDto> AddCommentToPost(CommentDto commentDto)
        {
            if (string.IsNullOrWhiteSpace(commentDto.Contents))
            {
                return new ResultDto <CommentDto>()
                       {
                           RequestStatus = RequestStatus.Error, Message = "Comment cannot be empty"
                       }
            }
            ;

            var post = _postRepository.GetPostById(commentDto.PostId);

            if (post == null)
            {
                return new ResultDto <CommentDto>()
                       {
                           Message = "Couldn't find post", RequestStatus = RequestStatus.NotFound
                       }
            }
            ;

            var isSubscribed = _subscriptionService.IsUserSubscribedTo(post.PublisherId, commentDto.CommentingUserId).Data;

            if (isSubscribed || post.PublisherId == commentDto.CommentingUserId)
            {
                var comment = new Comment()
                {
                    CommentingUserId = commentDto.CommentingUserId,
                    Contents         = commentDto.Contents,
                    PostId           = commentDto.PostId,
                    DateAdded        = DateTime.Now
                };

                var addedComment = _commentRepository.AddCommentToPost(comment);
                return(new ResultDto <CommentDto>()
                {
                    Message = "Comment added", RequestStatus = RequestStatus.Success, Data = Mapper.Map <CommentDto>(comment)
                });
            }
            else
            {
                return new ResultDto <CommentDto>()
                       {
                           Message = "You haven't subscribed to this user", RequestStatus = RequestStatus.NotAuthorized
                       }
            };
        }