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));
        }
Example #2
0
 public async Task <IActionResult> SearchPagination([FromQuery] BorrowBookDTO_Filter filter)
 {
     return(Ok(await _borrowBookService.SearchPagination(filter)));
 }