public async Task <IActionResult> GetMovementStockFilter([FromQuery] MovementStockFilterDto filter) { return(Ok(await _stock.GetMovementStockFilter(filter))); }
public async Task <ServiceResponseWithPagination <List <GetMovementStockDto> > > GetMovementStockFilter(MovementStockFilterDto filter) { var queryable = _dBContext.MovementStocks.Include(x => x.Product). Include(x => x.MovementType). AsNoTracking().AsQueryable(); //Filter if (filter.Id != 0) { queryable = queryable.Where(x => x.Id == filter.Id); } //Ordering if (!string.IsNullOrWhiteSpace(filter.OrderingField)) { try { queryable = queryable.OrderBy($"{filter.OrderingField} {(filter.AscendingOrder ? "ascending" : "descending")}"); } catch { return(ResponseResultWithPagination.Failure <List <GetMovementStockDto> >($"Could not order by field: {filter.OrderingField}")); } } var paginationResult = await _httpContext.HttpContext .InsertPaginationParametersInResponse(queryable, filter.RecordsPerPage, filter.Page); var dto = await queryable.Paginate(filter).AsNoTracking().ToListAsync(); var stockDto = _mapper.Map <List <GetMovementStockDto> >(dto); return(ResponseResultWithPagination.Success(stockDto, paginationResult)); }