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);
        }
Ejemplo n.º 2
0
        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));
        }