Exemplo n.º 1
0
        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)));
 }