public async Task <ServiceResponseWithPagination <List <CategoryBookDTO_ToReturn> > > SearchPaginate(CategoryBookDTO_Filter filter) { //สามารถคิวรี่ได้ ปั้นตัวคิวรี่โดยยังไม่แตะดาต้าเบส excute 2 รอบ var categoryBook = _dbContext.CategoryBooks.AsQueryable(); if (!string.IsNullOrWhiteSpace(filter.Name)) { categoryBook = categoryBook.Where(x => (x.CodeType).Contains(filter.Name)); } // 2. Order => Order by if (!string.IsNullOrWhiteSpace(filter.OrderingField)) { try { categoryBook = categoryBook.OrderBy($"{filter.OrderingField} {(filter.AscendingOrder ? "ascending" : "descending")}"); } catch { return(ResponseResultWithPagination.Failure <List <CategoryBookDTO_ToReturn> >($"Could not order by field: {filter.OrderingField}")); } } // 3. Add Paginate => Page,total,Perpage var paginationResult = await _httpContext.HttpContext.InsertPaginationParametersInResponse(categoryBook, filter.RecordsPerPage, filter.Page); // 4. Execute Query var category = await categoryBook.Paginate(filter).ToListAsync(); // 5. Return result var result = _mapper.Map <List <CategoryBookDTO_ToReturn> >(category); return(ResponseResultWithPagination.Success(result, paginationResult)); }
public async Task <IActionResult> SearchPaginate([FromQuery] CategoryBookDTO_Filter filter) { return(Ok(await _categoryBookService.SearchPaginate(filter))); }