private IQueryable <CartDetail> AddFilterOnQuery(
     GetAllCartDetailsFilter filter,
     IQueryable <CartDetail> queryable
     )
 {
     return(queryable);
 }
        public async Task <int> CountAllAsync(
            PaginationFilter pagination,
            GetAllCartDetailsFilter filter = null)
        {
            var queryable = _context.CartDetails.AsQueryable();

            queryable = AddFilterOnQuery(filter, queryable);
            return(await queryable.CountAsync());
        }
        public async Task <IEnumerable <CartDetail> > GetAllAsync(
            PaginationFilter pagination,
            GetAllCartDetailsFilter filter = null)
        {
            var queryable = _context.CartDetails.AsQueryable();

            queryable = AddFilterOnQuery(filter, queryable);

            var skip = (pagination.PageNumber - 1) * pagination.PageSize;

            return(await queryable
                   .Include(cDetail => cDetail.ProductTier)
                   .ThenInclude(productTier => productTier.Product)
                   .ThenInclude(product => product.ProductImages)
                   .Skip(skip)
                   .Take(pagination.PageSize)
                   .ToListAsync());
        }