public async Task <List <CommunityPostDto> > GetPinnedPosts(PageDtoCommunity input) { var posts = await _postRepository.GetAll().Where(x => x.IsDeleted == false && x.IsPinned && x.Community.Slug == input.Slug) .Include(x => x.Comments).ThenInclude(x => x.Replies) .Include(x => x.User).Select(x => new CommunityPostDto { Id = x.Id, IsPinned = x.IsPinned, Slug = x.Slug, Content = x.Content, PageNumber = input.PageNumber, LinkUrl = x.LinkUrl, MediaContentPath = x.MediaContentPath == null ? null : BlobService.BlobService.GetImageUrl(x.MediaContentPath), ContentType = x.ContentType, CreatedDateTime = x.CreatedDate, UserPostVote = x.Votes.FirstOrDefault(p => p.IsDeleted == false && p.UserId == input.UserId && p.PostId == x.Id), VoteCount = x.Votes.Count(v => v.IsDeleted == false && v.Value == 1) - x.Votes.Count(v => v.IsDeleted == false && v.Value == -1), Comments = x.Comments.Where(f => f.IsDeleted == false).Select(f => new Comment { ReplyCount = f.Replies.Count(v => v.IsDeleted == false) }).ToList(), User = new PostUserDto { ProfileImagePath = BlobService.BlobService.GetImageUrl(x.User.ProfileImagePath), UserName = x.User.Username }, }).OrderByDescending(x => x.CreatedDateTime).ToListAsync(); return(posts); }
public async Task <IActionResult> GetPosts([FromQuery] PageDtoCommunity input) { var token = GetToken(); string userId = null; bool isTokenEmpty = String.IsNullOrEmpty(token); if (!isTokenEmpty) { userId = LoginHelper.GetClaim(token, "UserId"); } if (userId != null) { input.UserId = Guid.Parse(userId); } var result = await _communityAppService.GetPosts(input); return(Ok(result)); }