public async Task <ListResponse <CatalogsResponse> > RunAsync(CatalogsFilter filter, ListOptions options) { IQueryable <CatalogsResponse> query = _context.Catalogs.Include("Catalogs") .ProjectTo <CatalogsResponse>(); query = ApplyFilter(query, filter); int totalCount = await query.CountAsync(); if (options.Sort == null) { options.Sort = "Id"; } query = options.ApplySort(query); query = options.ApplyPaging(query); return(new ListResponse <CatalogsResponse> { Items = await query.ToListAsync(), Page = options.Page, PageSize = options.PageSize ?? -1, Sort = options.Sort ?? "-Id", TotalItemsCount = totalCount }); }
[ProducesResponseType(200, Type = typeof(ListResponse <CatalogsResponse>))]//было userresponce public async Task <IActionResult> GetCatalogsListAsync(CatalogsFilter catalogofcatalogs, ListOptions options, [FromServices] ICatalogsListQuery query) { var response = await query.RunAsync(catalogofcatalogs, options); // запрос к базе return(Ok(response)); }
private IQueryable <CatalogsResponse> ApplyFilter(IQueryable <CatalogsResponse> query, CatalogsFilter filter) { if (filter.Id != null) { query = query.Where(p => p.Id == filter.Id); } if (filter.Name != null) { query = query.Where(p => p.Name.StartsWith(filter.Name)); } return(query); }