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));
        }