public IQueryable<Post> GetPostsByPageAndSort(string sortType, string sortDirection, string search, int page, int take)
        {
            IQueryable<Post> posts = null;
            switch (sortType)
            {
                case "Date":
                    posts = sortDirection == "ascending" ? this.posts.All().OrderBy(x => x.CreatedOn) : this.posts.All().OrderByDescending(x => x.CreatedOn);
                    break;
                case "Title":
                    posts = sortDirection == "ascending" ? this.posts.All().OrderBy(x => x.Title) : this.posts.All().OrderByDescending(x => x.Title);
                    break;
                case "User":
                    posts = sortDirection == "ascending" ? this.posts.All().OrderBy(x => x.User.UserName) : this.posts.All().OrderByDescending(x => x.User.UserName);
                    break;
                case "Category":
                    posts = sortDirection == "ascending" ? this.posts.All().OrderBy(x => x.Category.Name) : this.posts.All().OrderByDescending(x => x.Category.Name);
                    break;
            }

            if (search == string.Empty || search == null)
            {
                posts = posts
                      .Skip((page - 1) * take)
                      .Take(take);
            }
            else
            {
                posts = posts
                    .Where(x => x.Title.Contains(search))
                    .Skip((page - 1) * take)
                    .Take(take);
            }

            return posts;
        }
        public IQueryable<Category> GetCategoriesByPageAndSort(string sortType, string sortDirection, int page, int take)
        {
            IQueryable<Category> categories = null;
            switch (sortType)
            {
                case "Id":
                    categories = sortDirection == "ascending" ? this.categories.All().OrderBy(x => x.Id) : this.categories.All().OrderByDescending(x => x.Id);
                    break;
                case "Name":
                    categories = sortDirection == "ascending" ? this.categories.All().OrderBy(x => x.Name) : this.categories.All().OrderByDescending(x => x.Name);
                    break;
                case "CreatedOn":
                    categories = sortDirection == "ascending" ? this.categories.All().OrderBy(x => x.CreatedOn) : this.categories.All().OrderByDescending(x => x.CreatedOn);
                    break;
                case "ModifiedOn":
                    categories = sortDirection == "ascending" ? this.categories.All().OrderBy(x => x.ModifiedOn) : this.categories.All().OrderByDescending(x => x.ModifiedOn);
                    break;
            }

            categories = categories
                           .Skip((page - 1) * take)
                           .Take(take);

            return categories;
        }