Exemplo n.º 1
0
        public Task <Response <IReadOnlyList <CommentListItem> > > GetPagedCommentAsync(int pageSize, int pageIndex)
        {
            return(TryExecuteAsync <IReadOnlyList <CommentListItem> >(async() =>
            {
                if (pageSize < 1)
                {
                    throw new ArgumentOutOfRangeException(nameof(pageSize), $"{nameof(pageSize)} can not be less than 1.");
                }

                var spec = new CommentSepc(pageSize, pageIndex);
                var comments = await _commentRepository.SelectAsync(spec, p => new CommentListItem
                {
                    Id = p.Id,
                    CommentContent = p.CommentContent,
                    CreateOnUtc = p.CreateOnUtc,
                    Email = p.Email,
                    IpAddress = p.IPAddress,
                    Username = p.Username,
                    IsApproved = p.IsApproved,
                    PostTitle = p.Post.Title,
                    CommentReplies = p.CommentReply.Select(cr => new CommentReplyDigest
                    {
                        ReplyContent = cr.ReplyContent,
                        ReplyTimeUtc = cr.ReplyTimeUtc
                    }).ToList()
                });

                return new SuccessResponse <IReadOnlyList <CommentListItem> >(comments);
            }));
        }
Exemplo n.º 2
0
        public Task <Response> ToggleCommentApprovalStatus(Guid[] commentIds)
        {
            return(TryExecuteAsync(async() =>
            {
                if (null == commentIds || !commentIds.Any())
                {
                    throw new ArgumentNullException(nameof(commentIds));
                }

                var spec = new CommentSepc(commentIds);
                var comments = await _commentRepository.GetAsync(spec);
                foreach (var cmt in comments)
                {
                    cmt.IsApproved = !cmt.IsApproved;
                    await _commentRepository.UpdateAsync(cmt);
                }

                return new SuccessResponse();
            }));
        }
Exemplo n.º 3
0
        public Task <Response> DeleteComments(Guid[] commentIds)
        {
            return(TryExecuteAsync(async() =>
            {
                var spec = new CommentSepc(commentIds);
                var comments = await _commentRepository.GetAsync(spec);
                foreach (var cmt in comments)
                {
                    // 1. Delete all replies
                    var cReplies = await _commentReplyRepository.GetAsync(new CommentReplySpec(cmt.Id));
                    if (cReplies.Any())
                    {
                        _commentReplyRepository.Delete(cReplies);
                    }

                    // 2. Delete comment itself
                    _commentRepository.Delete(cmt);
                }

                return new SuccessResponse();
            }));
        }