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)); }
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())); }
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, })); }
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); }
public GetCommunitiesQuery(CommunitySearchParams searchParams) { SearchParams = searchParams; }