Exemple #1
0
        public async Task <int> GetPostsCountInNewsFeed(string userId, PostSearchParams searchParams)
        {
            Community community =
                await _communityRepository.GetByConditionAsync(x => x.Name == searchParams.CommunityName);

            Guard.Against.NullItem(community, nameof(community));

            searchParams.Followers = await _userRepository.ListUserFollowingsAsync(userId);

            var specification = new PostFilterSpecification(searchParams);

            return(await _postRepository.GetTotalCountAsync(specification));
        }
Exemple #2
0
        public async Task <int> GetPostsCountAsync(PostSearchParams searchParams)
        {
            Community community =
                await _communityRepository.GetByConditionAsync(x => x.Name == searchParams.CommunityName);

            Guard.Against.NullItem(community, nameof(community));

            User user = await _userManager.FindByIdAsync(searchParams.UserId);

            Guard.Against.NullItem(user.Id, nameof(user));

            var specification = new PostFilterSpecification(searchParams);

            return(await _postRepository.GetTotalCountAsync(specification));
        }
        public async Task <IActionResult> GetMany([FromQuery] PostSearchParams searchParams)
        {
            if (!BaseHelpers.IsPaginatonSearchParamsValid(searchParams, out ErrorResponse errorResponse))
            {
                return(new BadRequestObjectResult(errorResponse));
            }

            FilteredDataViewModel <PostViewModel> result = await _mediator.Send(new GetPostsQuery(searchParams));

            return(Ok(new FilteredResponse <PostViewModel>(searchParams)
            {
                Data = result.Data,
                Count = result.Count,
            }));
        }
Exemple #4
0
        public async Task <IEnumerable <PostViewModel> > GetPostsAsync(PostSearchParams searchParams)
        {
            User user = await _userManager.FindByIdAsync(searchParams.UserId);

            Guard.Against.NullItem(user, nameof(user));

            Community community =
                await _communityRepository.GetByConditionAsync(x => x.Name == searchParams.CommunityName);

            Guard.Against.NullItem(community, nameof(community));

            var specification = new PostFilterSpecification(searchParams);

            return(await _postRepository.ListAsync <PostViewModel>(specification,
                                                                   PostHelpers.GetPostMapperConfiguration()));
        }
        public async Task <IActionResult> NewsFeed([FromQuery] PostSearchParams searchParams)
        {
            if (!BaseHelpers.IsPaginatonSearchParamsValid(searchParams, out ErrorResponse errorResponse))
            {
                return(new BadRequestObjectResult(errorResponse));
            }

            string userId = _httpContext.User.FindFirstValue("sub");

            FilteredDataViewModel <PostViewModel> result =
                await _mediator.Send(new GetNewsFeedQuery(userId, searchParams));

            return(Ok(new FilteredResponse <PostViewModel>(searchParams)
            {
                Data = result.Data,
                Count = result.Count,
            }));
        }
        public PostFilterSpecification(PostSearchParams searchParams)
            : base(x =>
                   (string.IsNullOrEmpty(searchParams.CommunityName) ||
                    (x.Community.Name == searchParams.CommunityName)) &&
                   (string.IsNullOrEmpty(searchParams.PostTitle) || x.Title.Contains(searchParams.PostTitle)) &&
                   (string.IsNullOrEmpty(searchParams.UserId) || (x.AuthorId == searchParams.UserId)) &&
                   ((searchParams.Followers == null) || searchParams.Followers.Contains(x.AuthorId))
                   )
        {
            AddIncludes(query =>
                        query.Include(x => x.Community).Include(x => x.Author).Include(x => x.PostVotes)
                        );

            if (searchParams.OrderByDir.ToUpper() == "DESC")
            {
                ApplyFieldOrderByDescending(searchParams.SortBy);
            }
            else
            {
                ApplyFieldOrderBy(searchParams.SortBy);
            }

            ApplyPaging(searchParams.Offset, searchParams.Limit);
        }
 public GetNewsFeedQuery(string userId, PostSearchParams searchParams)
 {
     UserId       = userId;
     SearchParams = searchParams;
 }
Exemple #8
0
 public GetPostsQuery(PostSearchParams searchParams)
 {
     SearchParams = searchParams;
 }
Exemple #9
0
        public async Task <IEnumerable <PostViewModel> > GetNewsFeedPosts(string userId, PostSearchParams searchParams)
        {
            Community community =
                await _communityRepository.GetByConditionAsync(x => x.Name == searchParams.CommunityName);

            Guard.Against.NullItem(community, nameof(community));

            searchParams.Followers = await _userRepository.ListUserFollowingsAsync(userId);

            var specification = new PostFilterSpecification(searchParams);

            return(await _postRepository.ListAsync <PostViewModel>(specification,
                                                                   PostHelpers.GetPostMapperConfiguration()));
        }