public async Task <ServiceResponseWithPagination <List <ProductGroupDto_ToReturn> > > SearchPagination(ProductGroupDto_Filter filter) { var productGroup = _dbContext.ProductGroups.AsQueryable(); if (!string.IsNullOrWhiteSpace(filter.Name)) { productGroup = productGroup.Where(x => x.Name.ToLower().Contains(filter.Name.ToLower())); } productGroup = productGroup.Where(x => x.IsActive == filter.IsActive); if (!string.IsNullOrWhiteSpace(filter.OrderingField)) { try { productGroup = productGroup.OrderBy($"{filter.OrderingField} {(filter.AscendingOrder ? "ascending" : "descending")}"); } catch { return(ResponseResultWithPagination.Failure <List <ProductGroupDto_ToReturn> >($"Could not order by field: {filter.OrderingField}")); } } var paginationResult = await _httpContext.HttpContext.InsertPaginationParametersInResponse(productGroup, filter.RecordsPerPage, filter.Page); var result = _mapper.Map <List <ProductGroupDto_ToReturn> >(await productGroup.Paginate(filter).ToListAsync()); return(ResponseResultWithPagination.Success(result, paginationResult)); }
public async Task <IActionResult> SearchPagination([FromQuery] ProductGroupDto_Filter filter) { return(Ok(await _productGroupService.SearchPagination(filter))); }