コード例 #1
0
        public async Task <int> GetCommunitiesCountAsync(CommunitySearchParams searchParams)
        {
            User user = await _userManager.FindByIdAsync(searchParams.UserId);

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

            var specification = new CommunityFilterSpecification(searchParams);

            return(await _communityRepository.GetTotalCountAsync(specification));
        }
コード例 #2
0
        public async Task <IEnumerable <CommunityViewModel> > GetCommunitiesAsync(CommunitySearchParams searchParams)
        {
            User user = await _userManager.FindByIdAsync(searchParams.UserId);

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

            var specification = new CommunityFilterSpecification(searchParams);

            return(await _communityRepository.ListAsync <CommunityViewModel>(specification,
                                                                             CommunityHelpers.GetCommunityMapperConfiguration()));
        }
コード例 #3
0
        public async Task <IActionResult> GetMany([FromQuery] CommunitySearchParams searchParams)
        {
            if (!BaseHelpers.IsPaginatonSearchParamsValid(searchParams, out ErrorResponse errorResponse))
            {
                return(new BadRequestObjectResult(errorResponse));
            }

            FilteredDataViewModel <CommunityViewModel> result =
                await _mediator.Send(new GetCommunitiesQuery(searchParams));

            return(Ok(new FilteredResponse <CommunityViewModel>(searchParams)
            {
                Data = result.Data,
                Count = result.Count,
            }));
        }
コード例 #4
0
        public CommunityFilterSpecification(CommunitySearchParams searchParams)
            : base(x =>
                   (string.IsNullOrEmpty(searchParams.CommunityName) || x.Name.Contains(searchParams.CommunityName)) &&
                   (string.IsNullOrEmpty(searchParams.UserId) || (x.AuthorId == searchParams.UserId))
                   )
        {
            AddIncludes(query => query.Include(x => x.Author));

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

            ApplyPaging(searchParams.Offset, searchParams.Limit);
        }
コード例 #5
0
 public GetCommunitiesQuery(CommunitySearchParams searchParams)
 {
     SearchParams = searchParams;
 }