using Grand.Domain.Knowledgebase;
using Grand.Web.Admin.Models.Knowledgebase;

namespace Grand.Web.Admin.Interfaces
{
    public interface IKnowledgebaseViewModelService
    {
        Task<List<TreeNode>> PrepareTreeNode();
        Task PrepareCategory(KnowledgebaseCategoryModel model);
        Task PrepareCategory(KnowledgebaseArticleModel model);
        Task<(IEnumerable<KnowledgebaseArticleGridModel> knowledgebaseArticleGridModels, int totalCount)> PrepareKnowledgebaseArticleGridModel(string parentCategoryId, int pageIndex, int pageSize);
        Task<KnowledgebaseCategoryModel> PrepareKnowledgebaseCategoryModel();
        Task<KnowledgebaseCategory> InsertKnowledgebaseCategoryModel(KnowledgebaseCategoryModel model);
        Task<KnowledgebaseCategory> UpdateKnowledgebaseCategoryModel(KnowledgebaseCategory knowledgebaseCategory, KnowledgebaseCategoryModel model);
        Task DeleteKnowledgebaseCategoryModel(KnowledgebaseCategory knowledgebaseCategory);
        Task<KnowledgebaseArticleModel> PrepareKnowledgebaseArticleModel();
        Task<KnowledgebaseArticle> InsertKnowledgebaseArticleModel(KnowledgebaseArticleModel model);
        Task<KnowledgebaseArticle> UpdateKnowledgebaseArticleModel(KnowledgebaseArticle knowledgebaseArticle, KnowledgebaseArticleModel model);
        Task DeleteKnowledgebaseArticle(KnowledgebaseArticle knowledgebaseArticle);
        Task InsertKnowledgebaseRelatedArticle(KnowledgebaseArticleModel.AddRelatedArticleModel model);
        Task DeleteKnowledgebaseRelatedArticle(KnowledgebaseArticleModel.AddRelatedArticleModel model);
    }
}
