public async Task <IEnumerable <Category> > GetAllAsync(
            PaginationFilter pagination,
            GetAllCategoriesFilter filter = null)
        {
            var queryable = _context.Categories.AsQueryable();

            queryable = AddFilterOnQuery(filter, queryable);

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

            return(await queryable
                   .Skip(skip)
                   .Take(pagination.PageSize)
                   .ToListAsync());
        }
        private IQueryable <Category> AddFilterOnQuery(
            GetAllCategoriesFilter filter,
            IQueryable <Category> queryable
            )
        {
            if (!string.IsNullOrEmpty(filter?.Name))
            {
                queryable = queryable.Where(x => x.Name.Contains(filter.Name));
            }

            if (filter?.CreatedBy > 0)
            {
                queryable = queryable.Where(x => x.CreatedBy == filter.CreatedBy);
            }

            return(queryable);
        }