using Grand.Infrastructure.ModelBinding;
using Grand.Infrastructure.Models;

namespace Grand.Web.Admin.Models.Settings;

public class ContentSettingsModel : BaseModel
{
    public string ActiveStore { get; set; }
    public BlogSettingsModel BlogSettings { get; set; } = new();
    public NewsSettingsModel NewsSettings { get; set; } = new();
    public KnowledgebaseSettingsModel KnowledgebaseSettings { get; set; } = new();

    public class BlogSettingsModel : BaseModel
    {
        [GrandResourceDisplayName("Admin.Settings.Blog.Enabled")]
        public bool Enabled { get; set; }

        [GrandResourceDisplayName("Admin.Settings.Blog.PostsPageSize")]
        public int PostsPageSize { get; set; }

        [GrandResourceDisplayName("Admin.Settings.Blog.AllowNotRegisteredUsersToLeaveComments")]
        public bool AllowNotRegisteredUsersToLeaveComments { get; set; }

        [GrandResourceDisplayName("Admin.Settings.Blog.NotifyAboutNewBlogComments")]
        public bool NotifyAboutNewBlogComments { get; set; }

        [GrandResourceDisplayName("Admin.Settings.Blog.NumberOfTags")]
        public int NumberOfTags { get; set; }

        [GrandResourceDisplayName("Admin.Settings.Blog.ShowBlogOnHomePage")]
        public bool ShowBlogOnHomePage { get; set; }

        [GrandResourceDisplayName("Admin.Settings.Blog.HomePageBlogCount")]
        public int HomePageBlogCount { get; set; }

        [GrandResourceDisplayName("Admin.Settings.Blog.MaxTextSizeHomePage")]
        public int MaxTextSizeHomePage { get; set; }

        [GrandResourceDisplayName("Admin.Settings.Blog.ShowBlogPostsInSearchAutoComplete")]
        public bool ShowBlogPostsInSearchAutoComplete { get; set; }
    }

    public class NewsSettingsModel : BaseModel
    {
        [GrandResourceDisplayName("Admin.Settings.News.Enabled")]
        public bool Enabled { get; set; }

        [GrandResourceDisplayName("Admin.Settings.News.AllowNotRegisteredUsersToLeaveComments")]
        public bool AllowNotRegisteredUsersToLeaveComments { get; set; }

        [GrandResourceDisplayName("Admin.Settings.News.NotifyAboutNewNewsComments")]
        public bool NotifyAboutNewNewsComments { get; set; }

        [GrandResourceDisplayName("Admin.Settings.News.ShowNewsOnMainPage")]
        public bool ShowNewsOnMainPage { get; set; }

        [GrandResourceDisplayName("Admin.Settings.News.MainPageNewsCount")]
        public int MainPageNewsCount { get; set; }

        [GrandResourceDisplayName("Admin.Settings.News.NewsArchivePageSize")]
        public int NewsArchivePageSize { get; set; }
    }

    public class KnowledgebaseSettingsModel : BaseModel
    {
        [GrandResourceDisplayName("Admin.Settings.GeneralCommon.KnowledgebaseSettings.Enabled")]
        public bool Enabled { get; set; }

        [GrandResourceDisplayName("Admin.Settings.Knowledgebase.AllowNotRegisteredUsersToLeaveComments")]
        public bool AllowNotRegisteredUsersToLeaveComments { get; set; }

        [GrandResourceDisplayName("Admin.Settings.Knowledgebase.NotifyAboutNewArticleComments")]
        public bool NotifyAboutNewArticleComments { get; set; }
    }
}