public async Task <ServiceResponseWithPagination <List <BorrowBookDTO_ToReturn> > > SearchPagination(BorrowBookDTO_Filter filter) { var borrow = _dbContext.BorrowBooks .Include(x => x.Customers) .Include(x => x.Books).ThenInclude(x => x.CategoryBooks) .AsQueryable(); if (!string.IsNullOrWhiteSpace(filter.BookName)) { borrow = borrow.Where(x => x.Books.Name.Contains(filter.BookName)); } borrow = borrow.Where(x => x.Customers.Name.Contains(filter.CusName)); // borrow = borrow.Where(x => x.AdminId == filter.AdminId); // 2. Order => Order by if (!string.IsNullOrWhiteSpace(filter.OrderingField)) { try { borrow = borrow.OrderBy($"{filter.OrderingField} {(filter.AscendingOrder ? "ascending" : "descending")}"); } catch { return(ResponseResultWithPagination.Failure <List <BorrowBookDTO_ToReturn> >($"Could not order by field: {filter.OrderingField}")); } } var paginationResult = await _httpContext.HttpContext.InsertPaginationParametersInResponse(borrow, filter.RecordsPerPage, filter.Page); // var custom = await cus.Paginate(filter).ToListAsync(); var result = _mapper.Map <List <BorrowBookDTO_ToReturn> >(await borrow.Paginate(filter).ToListAsync()); return(ResponseResultWithPagination.Success(result, paginationResult)); }
public async Task <IActionResult> SearchPagination([FromQuery] BorrowBookDTO_Filter filter) { return(Ok(await _borrowBookService.SearchPagination(filter))); }