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); })); }
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(); })); }
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(); })); }