-- Complete SQL setup for chatbot system
-- This file includes all table creations, alterations, and data inserts

-- Set database character set and collation for proper Georgian language support
ALTER DATABASE IF EXISTS openadminpanel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- ------------------------------------------------------
-- 1. CONTENTS TABLE
-- ------------------------------------------------------

-- Drop tables in reverse order if they exist to avoid foreign key constraints
DROP TABLE IF EXISTS `rules`;
DROP TABLE IF EXISTS `rule_subcategories`;
DROP TABLE IF EXISTS `rule_categories`;
DROP TABLE IF EXISTS `contents`;

-- Create contents table
CREATE TABLE `contents` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `content` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `category` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `subcategory` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `status` enum('published','draft') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'published',
  `language` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'en',
  `category_id` bigint(20) UNSIGNED DEFAULT NULL,
  `subcategory_id` bigint(20) UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `contents_category_subcategory_index` (`category`,`subcategory`),
  KEY `contents_language_index` (`language`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------
-- 2. RULE CATEGORIES TABLE
-- ------------------------------------------------------

-- Create rule_categories table
CREATE TABLE `rule_categories` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `slug` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `language` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'en',
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `rule_categories_slug_unique` (`slug`),
  KEY `rule_categories_language_is_active_index` (`language`,`is_active`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------
-- 3. RULE SUBCATEGORIES TABLE
-- ------------------------------------------------------

-- Create rule_subcategories table
CREATE TABLE `rule_subcategories` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `slug` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `category_id` bigint(20) UNSIGNED NOT NULL,
  `language` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'en',
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `rule_subcategories_slug_unique` (`slug`),
  KEY `rule_subcategories_category_id_language_is_active_index` (`category_id`,`language`,`is_active`),
  CONSTRAINT `rule_subcategories_category_id_foreign` FOREIGN KEY (`category_id`) 
    REFERENCES `rule_categories` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------
-- 4. RULES TABLE
-- ------------------------------------------------------

-- Create rules table
CREATE TABLE `rules` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `condition` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `priority` int(11) NOT NULL DEFAULT 0,
  `content_id` bigint(20) UNSIGNED DEFAULT NULL,
  `category_id` bigint(20) UNSIGNED DEFAULT NULL,
  `subcategory_id` bigint(20) UNSIGNED DEFAULT NULL,
  `response_template` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `language` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'en',
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `tags` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `rules_content_id_foreign` (`content_id`),
  KEY `rules_category_id_foreign` (`category_id`),
  KEY `rules_subcategory_id_foreign` (`subcategory_id`),
  KEY `rules_is_active_priority_index` (`is_active`, `priority`),
  KEY `rules_language_is_active_index` (`language`, `is_active`),
  KEY `rules_tags_index` (`tags`),
  CONSTRAINT `rules_content_id_foreign` FOREIGN KEY (`content_id`) 
    REFERENCES `contents` (`id`) ON DELETE SET NULL,
  CONSTRAINT `rules_category_id_foreign` FOREIGN KEY (`category_id`) 
    REFERENCES `rule_categories` (`id`) ON DELETE SET NULL,
  CONSTRAINT `rules_subcategory_id_foreign` FOREIGN KEY (`subcategory_id`) 
    REFERENCES `rule_subcategories` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Add foreign key constraints for content table (now that all tables exist)
ALTER TABLE `contents`
  ADD CONSTRAINT `contents_category_id_foreign` FOREIGN KEY (`category_id`) 
    REFERENCES `rule_categories` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `contents_subcategory_id_foreign` FOREIGN KEY (`subcategory_id`) 
    REFERENCES `rule_subcategories` (`id`) ON DELETE SET NULL;

-- ------------------------------------------------------
-- 5. INSERT SAMPLE CATEGORIES
-- ------------------------------------------------------

-- Insert English categories
INSERT INTO `rule_categories` (`name`, `slug`, `description`, `language`, `is_active`, `created_at`, `updated_at`) VALUES
('General Help', 'general-help', 'General help and support topics', 'en', 1, NOW(), NOW()),
('Platform Rules', 'platform-rules', 'Rules for platform usage', 'en', 1, NOW(), NOW()),
('Legal Information', 'legal-info', 'Legal documents and information', 'en', 1, NOW(), NOW()),
('Technical Support', 'technical-support', 'Technical troubleshooting and help', 'en', 1, NOW(), NOW()),
('FAQ', 'faq', 'Frequently Asked Questions', 'en', 1, NOW(), NOW());

-- Insert Georgian categories
INSERT INTO `rule_categories` (`name`, `slug`, `description`, `language`, `is_active`, `created_at`, `updated_at`) VALUES
('ზოგადი დახმარება', 'general-help-ka', 'ზოგადი დახმარება და მხარდაჭერის საკითხები', 'ka', 1, NOW(), NOW()),
('პლატფორმის წესები', 'platform-rules-ka', 'პლატფორმის გამოყენების წესები', 'ka', 1, NOW(), NOW()),
('სამართლებრივი ინფორმაცია', 'legal-info-ka', 'სამართლებრივი დოკუმენტები და ინფორმაცია', 'ka', 1, NOW(), NOW()),
('ტექნიკური მხარდაჭერა', 'technical-support-ka', 'ტექნიკური პრობლემების მოგვარება და დახმარება', 'ka', 1, NOW(), NOW()),
('ხშირი კითხვები', 'faq-ka', 'ხშირად დასმული კითხვები', 'ka', 1, NOW(), NOW());

-- ------------------------------------------------------
-- 6. INSERT SAMPLE SUBCATEGORIES
-- ------------------------------------------------------

-- Insert English subcategories
INSERT INTO `rule_subcategories` (`name`, `slug`, `description`, `category_id`, `language`, `is_active`, `created_at`, `updated_at`) VALUES
('Getting Started', 'getting-started', 'Help for new users', 1, 'en', 1, NOW(), NOW()),
('Account Issues', 'account-issues', 'Help with account problems', 1, 'en', 1, NOW(), NOW()),
('General Rules', 'general-rules', 'Basic platform rules', 2, 'en', 1, NOW(), NOW()),
('Content Guidelines', 'content-guidelines', 'Guidelines for content creation', 2, 'en', 1, NOW(), NOW()),
('Privacy Policy', 'privacy-policy', 'Privacy rules and regulations', 3, 'en', 1, NOW(), NOW()),
('Terms of Service', 'terms-of-service', 'Terms and conditions of service', 3, 'en', 1, NOW(), NOW()),
('Login Problems', 'login-problems', 'Help with login issues', 4, 'en', 1, NOW(), NOW()),
('Platform FAQ', 'platform-faq', 'General platform questions', 5, 'en', 1, NOW(), NOW());

-- Insert Georgian subcategories
INSERT INTO `rule_subcategories` (`name`, `slug`, `description`, `category_id`, `language`, `is_active`, `created_at`, `updated_at`) VALUES
('დაწყება', 'getting-started-ka', 'დახმარება ახალი მომხმარებლებისთვის', 6, 'ka', 1, NOW(), NOW()),
('ანგარიშის პრობლემები', 'account-issues-ka', 'დახმარება ანგარიშის პრობლემებთან დაკავშირებით', 6, 'ka', 1, NOW(), NOW()),
('ზოგადი წესები', 'general-rules-ka', 'პლატფორმის ძირითადი წესები', 7, 'ka', 1, NOW(), NOW()),
('კონტენტის სახელმძღვანელოები', 'content-guidelines-ka', 'კონტენტის შექმნის სახელმძღვანელოები', 7, 'ka', 1, NOW(), NOW()),
('AIRDROP წესები', 'airdrop-rules-ka', 'წესები AIRDROP-ის მონაწილეებისთვის', 7, 'ka', 1, NOW(), NOW()),
('კონფიდენციალურობის პოლიტიკა', 'privacy-policy-ka', 'კონფიდენციალურობის წესები და რეგულაციები', 8, 'ka', 1, NOW(), NOW()),
('მომსახურების პირობები', 'terms-of-service-ka', 'მომსახურების პირობები და წესები', 8, 'ka', 1, NOW(), NOW()),
('შესვლის პრობლემები', 'login-problems-ka', 'დახმარება შესვლის პრობლემებთან დაკავშირებით', 9, 'ka', 1, NOW(), NOW()),
('პლატფორმის ხშირი კითხვები', 'platform-faq-ka', 'ზოგადი კითხვები პლატფორმის შესახებ', 10, 'ka', 1, NOW(), NOW());

-- ------------------------------------------------------
-- 7. INSERT SAMPLE CONTENTS
-- ------------------------------------------------------

-- Insert English contents
INSERT INTO `contents` (`title`, `content`, `category`, `subcategory`, `status`, `language`, `category_id`, `subcategory_id`, `created_at`, `updated_at`) VALUES
('Getting Started Guide', 'Welcome to our platform! This guide will help you get started with using our services. First, complete your profile and then explore the available features.', 'Help', 'Getting Started', 'published', 'en', 1, 1, NOW(), NOW()),
('Account Management Help', 'Here\'s how to manage your account settings, update your profile, change your password, and manage notification preferences.', 'Help', 'Account', 'published', 'en', 1, 2, NOW(), NOW()),
('Platform Rules Overview', 'These are the general rules you must follow when using our platform. Violations may result in account restrictions or suspension.', 'Rules', 'General', 'published', 'en', 2, 3, NOW(), NOW()),
('Content Posting Guidelines', 'When posting content on our platform, ensure that it follows these guidelines. No inappropriate content is allowed.', 'Rules', 'Content', 'published', 'en', 2, 4, NOW(), NOW()),
('Privacy Policy', 'This privacy policy explains how we collect, use, and protect your personal information when you use our platform.', 'Legal', 'Privacy', 'published', 'en', 3, 5, NOW(), NOW()),
('Terms of Service', 'By using our platform, you agree to these terms of service. Please read them carefully before proceeding.', 'Legal', 'Terms', 'published', 'en', 3, 6, NOW(), NOW()),
('Login Troubleshooting', 'Are you having trouble logging in? Here are some common issues and their solutions.', 'Support', 'Login', 'published', 'en', 4, 7, NOW(), NOW()),
('Frequently Asked Questions', 'Here are answers to the most common questions about our platform.', 'Help', 'FAQ', 'published', 'en', 5, 8, NOW(), NOW());

-- Insert Georgian contents
INSERT INTO `contents` (`title`, `content`, `category`, `subcategory`, `status`, `language`, `category_id`, `subcategory_id`, `created_at`, `updated_at`) VALUES
('დაწყების სახელმძღვანელო', 'მოგესალმებით ჩვენს პლატფორმაზე! ეს სახელმძღვანელო დაგეხმარებათ ჩვენი სერვისების გამოყენებაში. პირველ რიგში, შეავსეთ თქვენი პროფილი და შემდეგ გაეცანით ხელმისაწვდომ ფუნქციებს.', 'დახმარება', 'დაწყება', 'published', 'ka', 6, 9, NOW(), NOW()),
('ანგარიშის მართვის დახმარება', 'აი, როგორ უნდა მართოთ თქვენი ანგარიშის პარამეტრები, განაახლოთ თქვენი პროფილი, შეცვალოთ პაროლი და მართოთ შეტყობინებების პარამეტრები.', 'დახმარება', 'ანგარიში', 'published', 'ka', 6, 10, NOW(), NOW()),
('პლატფორმის წესების მიმოხილვა', 'ეს არის ზოგადი წესები, რომლებსაც უნდა დაიცვათ ჩვენი პლატფორმის გამოყენებისას. წესების დარღვევამ შეიძლება გამოიწვიოს ანგარიშის შეზღუდვები ან შეჩერება.', 'წესები', 'ზოგადი', 'published', 'ka', 7, 11, NOW(), NOW()),
('კონტენტის განთავსების სახელმძღვანელოები', 'ჩვენს პლატფორმაზე კონტენტის განთავსებისას დარწმუნდით, რომ ის შეესაბამება ამ სახელმძღვანელოებს. არ არის ნებადართული შეუსაბამო შინაარსი.', 'წესები', 'კონტენტი', 'published', 'ka', 7, 12, NOW(), NOW()),
('AIRDROP წესები და პირობები', 'AIRDROP-ის მონაწილეებმა უნდა დაიცვან შემდეგი წესები: დაასრულეთ ყველა მოთხოვნილი დავალება, გააზიარეთ პლატფორმა სოციალურ ქსელებში, და მოიწვიეთ მეგობრები.', 'წესები', 'AIRDROP', 'published', 'ka', 7, 13, NOW(), NOW()),
('კონფიდენციალურობის პოლიტიკა', 'ეს კონფიდენციალურობის პოლიტიკა განმარტავს, როგორ ვაგროვებთ, ვიყენებთ და ვიცავთ თქვენს პერსონალურ ინფორმაციას ჩვენი პლატფორმის გამოყენებისას.', 'სამართლებრივი', 'კონფიდენციალურობა', 'published', 'ka', 8, 14, NOW(), NOW()),
('მომსახურების პირობები', 'ჩვენი პლატფორმის გამოყენებით თქვენ ეთანხმებით ამ მომსახურების პირობებს. გთხოვთ, ყურადღებით წაიკითხოთ ისინი გაგრძელებამდე.', 'სამართლებრივი', 'პირობები', 'published', 'ka', 8, 15, NOW(), NOW()),
('შესვლის პრობლემების გადაჭრა', 'გაქვთ პრობლემა შესვლასთან დაკავშირებით? აი, რამდენიმე ჩვეულებრივი პრობლემა და მათი გადაწყვეტის გზები.', 'მხარდაჭერა', 'შესვლა', 'published', 'ka', 9, 16, NOW(), NOW()),
('ხშირად დასმული კითხვები', 'აი, პასუხები ყველაზე ხშირ კითხვებზე ჩვენი პლატფორმის შესახებ.', 'დახმარება', 'ხშირი კითხვები', 'published', 'ka', 10, 17, NOW(), NOW());

-- ------------------------------------------------------
-- 8. INSERT SAMPLE RULES
-- ------------------------------------------------------

-- Insert English rules
INSERT INTO `rules` (`name`, `condition`, `priority`, `content_id`, `category_id`, `subcategory_id`, `response_template`, `language`, `is_active`, `tags`, `created_at`, `updated_at`) VALUES
('Getting Started Help', 'getting started, start, begin, new user, how to start', 100, 1, 1, 1, 'Welcome! Here\'s how to get started:\n\n{{content}}', 'en', 1, 'getting-started,help,beginner', NOW(), NOW()),
('Account Help', 'account, profile, settings, password, change password, update profile', 90, 2, 1, 2, 'Here\'s information about managing your account:\n\n{{content}}', 'en', 1, 'account,profile,settings', NOW(), NOW()),
('Rules Information', 'rules, regulations, guidelines, what are the rules, platform rules', 80, 3, 2, 3, 'Please read our platform rules:\n\n{{content}}', 'en', 1, 'rules,guidelines,regulations', NOW(), NOW()),
('Content Guidelines', 'content rules, posting rules, can I post, content guidelines', 75, 4, 2, 4, 'Here are our content posting guidelines:\n\n{{content}}', 'en', 1, 'content,posting,guidelines', NOW(), NOW()),
('Privacy Information', 'privacy, data, personal information, my data, data protection', 70, 5, 3, 5, 'Privacy Policy:\n\n{{content}}', 'en', 1, 'privacy,data,legal', NOW(), NOW()),
('Terms Info', 'terms, conditions, terms of service, legal terms', 65, 6, 3, 6, 'Terms of Service:\n\n{{content}}', 'en', 1, 'terms,legal,conditions', NOW(), NOW()),
('Login Help', 'login, sign in, cannot login, login problem, password reset', 60, 7, 4, 7, 'Having trouble logging in? Here\'s how to fix it:\n\n{{content}}', 'en', 1, 'login,signin,password,troubleshooting', NOW(), NOW()),
('General FAQ', 'faq, question, frequently asked questions, common questions', 50, 8, 5, 8, 'Here are answers to frequently asked questions:\n\n{{content}}', 'en', 1, 'faq,questions,help', NOW(), NOW());

-- Insert Georgian rules
INSERT INTO `rules` (`name`, `condition`, `priority`, `content_id`, `category_id`, `subcategory_id`, `response_template`, `language`, `is_active`, `tags`, `created_at`, `updated_at`) VALUES
('დაწყების დახმარება', 'დაწყება, როგორ დავიწყო, ახალი მომხმარებელი, საწყისი', 100, 9, 6, 9, 'მოგესალმებით! აი როგორ უნდა დაიწყოთ:\n\n{{content}}', 'ka', 1, 'getting-started,help,beginner,ka', NOW(), NOW()),
('ანგარიშის დახმარება', 'ანგარიში, პროფილი, პარამეტრები, პაროლი, პაროლის შეცვლა, პროფილის განახლება', 90, 10, 6, 10, 'აი ინფორმაცია თქვენი ანგარიშის მართვის შესახებ:\n\n{{content}}', 'ka', 1, 'account,profile,settings,ka', NOW(), NOW()),
('ინფორმაცია წესების შესახებ', 'წესები, რეგულაციები, სახელმძღვანელოები, რა არის წესები, პლატფორმის წესები', 80, 11, 7, 11, 'გთხოვთ, გაეცნოთ ჩვენი პლატფორმის წესებს:\n\n{{content}}', 'ka', 1, 'rules,guidelines,regulations,ka', NOW(), NOW()),
('კონტენტის სახელმძღვანელოები', 'კონტენტის წესები, განთავსების წესები, შემიძლია განვათავსო, კონტენტის სახელმძღვანელოები', 75, 12, 7, 12, 'აი ჩვენი კონტენტის განთავსების სახელმძღვანელოები:\n\n{{content}}', 'ka', 1, 'content,posting,guidelines,ka', NOW(), NOW()),
('AIRDROP დახმარება', 'airdrop, ეირდროპი, ბონუსი, საჩუქარი, ეირდროპის წესები, ეირდროპის პირობები', 85, 13, 7, 13, 'AIRDROP წესები და პირობები:\n\n{{content}}', 'ka', 1, 'airdrop,bonus,rewards,ka', NOW(), NOW()),
('ინფორმაცია კონფიდენციალურობის შესახებ', 'კონფიდენციალურობა, მონაცემები, პერსონალური ინფორმაცია, ჩემი მონაცემები, მონაცემთა დაცვა', 70, 14, 8, 14, 'კონფიდენციალურობის პოლიტიკა:\n\n{{content}}', 'ka', 1, 'privacy,data,legal,ka', NOW(), NOW()),
('პირობების ინფორმაცია', 'პირობები, მდგომარეობა, მომსახურების პირობები, სამართლებრივი პირობები', 65, 15, 8, 15, 'მომსახურების პირობები:\n\n{{content}}', 'ka', 1, 'terms,legal,conditions,ka', NOW(), NOW()),
('შესვლის დახმარება', 'შესვლა, ავტორიზაცია, ვერ შევდივარ, შესვლის პრობლემა, პაროლის აღდგენა', 60, 16, 9, 16, 'გაქვთ პრობლემა შესვლასთან დაკავშირებით? აი, როგორ უნდა გამოასწოროთ:\n\n{{content}}', 'ka', 1, 'login,signin,password,troubleshooting,ka', NOW(), NOW()),
('ხშირი კითხვები', 'ხშირი კითხვები, კითხვა, ხშირად დასმული კითხვები, ჩვეულებრივი კითხვები', 50, 17, 10, 17, 'აი პასუხები ხშირად დასმულ კითხვებზე:\n\n{{content}}', 'ka', 1, 'faq,questions,help,ka', NOW(), NOW());
