private static IQueryable <Post> AddFiltersOnQuery(GetFilterPost getFilter, IQueryable <Post> posts) { if (!string.IsNullOrEmpty(getFilter?.userId)) { posts = posts.Where(x => x.UserId == getFilter.userId); } return(posts); }
public async Task <List <Post> > GetPosts(GetFilterPost filter = null, PaginationFilter paginationFilter = null) { var queryable = _context.Posts.AsQueryable(); if (paginationFilter == null) { return(await queryable.Include(x => x.Tags).ToListAsync()); } queryable = AddFiltersOnQuery(filter, queryable); var skip = (paginationFilter.PageNumber - 1) * paginationFilter.PageSize; return(await queryable.Include(x => x.Tags) .Skip(skip).Take(paginationFilter.PageSize).ToListAsync()); }
public async Task <IActionResult> GetAll([FromQuery] GetFilterPost getFilterPost, [FromQuery] PaginationQuery paginationQuery) { var pagination = _mapper.Map <PaginationFilter>(paginationQuery); var filter = _mapper.Map <GetFilterPost>(getFilterPost); var posts = await _postService.GetPosts(filter, pagination); var postsResponse = _mapper.Map <List <PostResponse> >(posts); if (pagination == null || pagination.PageNumber < 1 || pagination.PageSize < 1) { return(Ok(new PaginationResponse <PostResponse>(postsResponse))); } var paginationResponse = PaginationReponseHelper.CreatePaginatedResponse(_uriService, pagination, postsResponse); return(Ok(paginationResponse)); }