public async Task <IActionResult> StockCardFilter([FromQuery] StockCardFilterDto filter) { return(Ok(await _stockservice.StockCardFilter(filter))); }
public async Task <ServiceResponseWithPagination <List <StockCardDto> > > StockCardFilter(StockCardFilterDto filter) { var queryable = _dbContext.StockCards.Include(x => x.User).Include(x => x.Product).ThenInclude(x => x.ProductGroup).AsQueryable(); //var queryable = _dbContext.StockCards.AsQueryable(); //Filter if (!string.IsNullOrWhiteSpace(filter.Name) && filter.Name != "") { queryable = queryable.Where(x => x.Product.Name.Contains(filter.Name)); } if (filter.IsActive != null) { queryable = queryable.Where(x => x.IsActive.Equals(filter.IsActive)); } //Ordering if (!string.IsNullOrWhiteSpace(filter.OrderingField)) { try { queryable = queryable.OrderBy($"{filter.OrderingField} {(filter.AscendingOrder ? "ascending" : "descending")}"); } catch { return(ResponseResultWithPagination.Failure <List <StockCardDto> >($"Could not order by field: {filter.OrderingField}")); } } var paginationResult = await _httpContext.HttpContext .InsertPaginationParametersInResponse(queryable, filter.RecordsPerPage, filter.Page); var StockCard = await queryable.Paginate(filter).ToListAsync(); var dto = _mapper.Map <List <StockCardDto> >(StockCard); return(ResponseResultWithPagination.Success(dto, paginationResult)); }