public async Task <PagedList <Inventory> > GetAllInventories(GetAllInventoriesQuery query,
                                                                     //public async Task<IEnumerable<InventoryApiModel>> GetAllInventories(GetAllInventoriesQuery query,
                                                                     CancellationToken token)
        {
            IQueryable <Inventory> queryable = _set.AsNoTracking()
                                               .Include(i => i.InventoryItems);

            if (query.SearchString is null && query.OrderBy == "Date")
            {
                if (query.Ascending == true)
                {
                    queryable = queryable.OrderBy(x => x.Name);
                }

                var result = await PagedList <Inventory>
                             .CreatePagedListAsync(queryable, query.PageNumber, query.PageSize, token)
                             .ConfigureAwait(false);

                return(result);
            }

            if (query.Ascending == true)
            {
                queryable = queryable.OrderBy(x => x.Name).ThenBy(x => x.SupplyDate);
            }

            var result1 = await PagedList <Inventory> .CreatePagedListAsync(_set, query.PageNumber, query.PageSize, token).ConfigureAwait(false);

            return(result1);
        }
        public async Task <PagedList <InventoryApiModel> > GetAllInventories(GetAllInventoriesQuery query,
                                                                             //public async Task<IEnumerable<InventoryApiModel>> GetAllInventories(GetAllInventoriesQuery query,
                                                                             CancellationToken token)
        {
            IQueryable <Inventory> queryable = _set.AsNoTracking()
                                               .Include(i => i.InventoryItems);

            if (query.SearchString is null && query.OrderBy == "Date")
            {
                if (query.Ascending == true)
                {
                    queryable = queryable.OrderBy(x => x.Name);
                }

                var result = await PagedList <InventoryApiModel>
                             .CreatePagedListAsync(queryable.Select(i => new InventoryApiModel
                {
                    Name = i.Name,
                    Id   = i.Id,
                    NumberOfProductsInStock = i.Quantity
                }), query.PageNumber, query.PageSize, token)
                             .ConfigureAwait(false);

                return(result);
            }

            if (query.Ascending == true)
            {
                queryable = queryable.OrderBy(x => x.Name).ThenBy(x => x.SupplyDate);
            }



            // var projectedQueryable = queryable.Select(i => new InventoryApiModel
            // {
            //     Name = i.Name,
            //     Id = i.Id,
            //     NumberOfProductsInStock = i.Quantity
            // });

            var result1 = await PagedList <InventoryApiModel> .CreatePagedListAsync(queryable.Select(i => new InventoryApiModel {
                Name = i.Name, Id = i.Id, NumberOfProductsInStock = i.Quantity
            }), query.PageNumber, query.PageSize, token).ConfigureAwait(false);

            //var result = await queryable.PaginatedListAsync<InventoryApiModel>(query.PageNumber,query.PageSize,token)
            // .ConfigureAwait(false);
            return(result1);
        }
        public async Task <ActionResult <PaginatedResponse <InventoryApiModel> > > Get([FromQuery] GetAllInventoriesQuery query)
        {
            var result = await _mediator.Send(query).ConfigureAwait(false);

            // if(!result.CurrentResponseStatus.Equals(ResponseStatus.Success))
            //     return BadRequest(result);
            return(Ok(result));
        }