-- ============================================================
-- سایت‌ساز پرو - Database Schema (SQL)
-- جداول سفارشی پلاگین + جداول استاندارد وردپرس Multisite
-- ============================================================

-- نکته: جداول wp_blogs, wp_sites, wp_sitemeta, wp_users, wp_usermeta
-- توسط خود وردپرس Multisite هنگام فعال‌سازی ساخته می‌شوند.
-- ما فقط جداول سفارشی را در این فایل تعریف می‌کنیم.

-- ============================================================
-- ۱. متادیتای کاربران پلتفرم (اطلاعات کسب‌وکار، پلن، کیف پول)
-- ============================================================
CREATE TABLE IF NOT EXISTS {prefix}sbs_users_meta (
  id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  user_id BIGINT(20) UNSIGNED NOT NULL,
  business_name VARCHAR(255) NOT NULL DEFAULT '',
  business_slogan VARCHAR(255) NOT NULL DEFAULT '',
  business_description TEXT,
  business_category VARCHAR(100) NOT NULL DEFAULT '',
  business_phone VARCHAR(20) NOT NULL DEFAULT '',
  business_email VARCHAR(100) NOT NULL DEFAULT '',
  business_city VARCHAR(100) NOT NULL DEFAULT '',
  business_address TEXT,
  business_logo VARCHAR(255) NOT NULL DEFAULT '',
  social_instagram VARCHAR(100) NOT NULL DEFAULT '',
  social_telegram VARCHAR(100) NOT NULL DEFAULT '',
  social_whatsapp VARCHAR(20) NOT NULL DEFAULT '',
  wizard_data LONGTEXT, -- JSON: ذخیره موقت ویزارد
  current_plan VARCHAR(20) NOT NULL DEFAULT 'starter',
  plan_expires DATETIME DEFAULT NULL,
  wallet_balance BIGINT(20) NOT NULL DEFAULT 0, -- به تومان
  avatar_color VARCHAR(20) NOT NULL DEFAULT '#8B5CF6',
  total_sites INT(11) NOT NULL DEFAULT 0,
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  UNIQUE KEY user_id (user_id),
  KEY current_plan (current_plan),
  KEY business_category (business_category)
) {charset_collate};

-- ============================================================
-- ۲. سایت‌های ساخته‌شده توسط کاربران
-- ============================================================
CREATE TABLE IF NOT EXISTS {prefix}sbs_sites (
  id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  blog_id BIGINT(20) UNSIGNED NOT NULL, -- wp_blogs.blog_id
  user_id BIGINT(20) UNSIGNED NOT NULL,
  type ENUM('woocommerce', 'corporate') NOT NULL DEFAULT 'corporate',
  template_id VARCHAR(50) NOT NULL,
  name VARCHAR(255) NOT NULL,
  subdomain VARCHAR(100) NOT NULL,
  custom_domain VARCHAR(255) NOT NULL DEFAULT '',
  ssl_status ENUM('none', 'pending', 'active', 'failed') NOT NULL DEFAULT 'none',
  status ENUM('active', 'draft', 'suspended', 'deleted') NOT NULL DEFAULT 'draft',
  visits_total BIGINT(20) NOT NULL DEFAULT 0,
  sales_total BIGINT(20) NOT NULL DEFAULT 0,
  storage_used BIGINT(20) NOT NULL DEFAULT 0, -- بایت
  plan_id VARCHAR(20) NOT NULL DEFAULT 'starter',
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  UNIQUE KEY blog_id (blog_id),
  KEY user_id (user_id),
  KEY status (status),
  KEY custom_domain (custom_domain),
  KEY created_at (created_at)
) {charset_collate};

-- ============================================================
-- ۳. دامنه‌های اختصاصی کاربران
-- ============================================================
CREATE TABLE IF NOT EXISTS {prefix}sbs_domains (
  id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  domain VARCHAR(255) NOT NULL,
  blog_id BIGINT(20) UNSIGNED NOT NULL,
  user_id BIGINT(20) UNSIGNED NOT NULL,
  dns_a_record VARCHAR(20) NOT NULL DEFAULT '',
  dns_cname VARCHAR(255) NOT NULL DEFAULT '',
  dns_verified TINYINT(1) NOT NULL DEFAULT 0,
  ssl_provider VARCHAR(50) NOT NULL DEFAULT 'letsencrypt',
  ssl_certificate LONGTEXT,
  ssl_private_key LONGTEXT,
  ssl_expires DATETIME DEFAULT NULL,
  status ENUM('dns_pending', 'ssl_pending', 'active', 'failed', 'suspended') NOT NULL DEFAULT 'dns_pending',
  verification_token VARCHAR(64) NOT NULL DEFAULT '',
  error_message TEXT,
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  verified_at DATETIME DEFAULT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY domain (domain),
  KEY blog_id (blog_id),
  KEY user_id (user_id),
  KEY status (status)
) {charset_collate};

-- ============================================================
-- ۴. کتابخانه قالب‌های آماده (Elementor Kits)
-- ============================================================
CREATE TABLE IF NOT EXISTS {prefix}sbs_templates (
  id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  template_key VARCHAR(50) NOT NULL, -- شناسه کوتاه مثل tpl-gold-jewelry
  name VARCHAR(255) NOT NULL,
  category ENUM('shop', 'corporate', 'tech', 'medical', 'food', 'blog') NOT NULL DEFAULT 'corporate',
  type ENUM('woocommerce', 'corporate') NOT NULL DEFAULT 'corporate',
  description TEXT,
  long_description TEXT,
  pages_json LONGTEXT NOT NULL, -- JSON: لیست صفحات
  features_json LONGTEXT NOT NULL, -- JSON: امکانات
  kit_file VARCHAR(255) NOT NULL DEFAULT '', -- مسیر فایل Elementor Kit
  json_file VARCHAR(255) NOT NULL DEFAULT '', -- مسیر JSON Template
  preview_image VARCHAR(255) NOT NULL DEFAULT '',
  accent_color VARCHAR(20) NOT NULL DEFAULT '#8B5CF6',
  is_pro TINYINT(1) NOT NULL DEFAULT 0,
  rating DECIMAL(3, 2) NOT NULL DEFAULT 5.00,
  downloads INT(11) NOT NULL DEFAULT 0,
  sort_order INT(11) NOT NULL DEFAULT 0,
  status ENUM('active', 'draft', 'disabled') NOT NULL DEFAULT 'active',
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  UNIQUE KEY template_key (template_key),
  KEY category (category),
  KEY type (type),
  KEY status (status)
) {charset_collate};

-- ============================================================
-- ۵. اشتراک‌های کاربران (اتصال به ووکامرس Subscriptions)
-- ============================================================
CREATE TABLE IF NOT EXISTS {prefix}sbs_subscriptions (
  id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  user_id BIGINT(20) UNSIGNED NOT NULL,
  blog_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
  plan_id VARCHAR(20) NOT NULL,
  wc_subscription_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
  wc_order_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
  status ENUM('active', 'cancelled', 'expired', 'suspended', 'pending') NOT NULL DEFAULT 'pending',
  amount BIGINT(20) NOT NULL DEFAULT 0,
  period ENUM('monthly', 'yearly') NOT NULL DEFAULT 'monthly',
  starts_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  expires_at DATETIME DEFAULT NULL,
  auto_renew TINYINT(1) NOT NULL DEFAULT 1,
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  KEY user_id (user_id),
  KEY blog_id (blog_id),
  KEY status (status),
  KEY wc_subscription_id (wc_subscription_id),
  KEY expires_at (expires_at)
) {charset_collate};

-- ============================================================
-- ۶. تراکنش‌های کیف پول ووکامرس
-- ============================================================
CREATE TABLE IF NOT EXISTS {prefix}sbs_wallet_transactions (
  id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  user_id BIGINT(20) UNSIGNED NOT NULL,
  type ENUM('deposit', 'subscription', 'domain', 'addon', 'refund', 'withdrawal') NOT NULL,
  amount BIGINT(20) NOT NULL, -- مثبت: واریز، منفی: برداشت
  balance_after BIGINT(20) NOT NULL DEFAULT 0,
  title VARCHAR(255) NOT NULL,
  description TEXT,
  wc_order_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
  status ENUM('pending', 'completed', 'failed', 'refunded') NOT NULL DEFAULT 'pending',
  gateway VARCHAR(50) NOT NULL DEFAULT '',
  transaction_ref VARCHAR(100) NOT NULL DEFAULT '',
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  KEY user_id (user_id),
  KEY type (type),
  KEY status (status),
  KEY created_at (created_at)
) {charset_collate};

-- ============================================================
-- ۷. لاگ‌های رویداد پلتفرم (امنیت + فعالیت)
-- ============================================================
CREATE TABLE IF NOT EXISTS {prefix}sbs_logs (
  id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  type ENUM('security', 'system', 'site_created', 'subscription', 'domain', 'wallet', 'backup', 'error') NOT NULL DEFAULT 'system',
  level ENUM('info', 'warning', 'error', 'success', 'critical') NOT NULL DEFAULT 'info',
  user_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
  blog_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
  message TEXT NOT NULL,
  context LONGTEXT, -- JSON
  ip_address VARCHAR(45) NOT NULL DEFAULT '',
  user_agent VARCHAR(255) NOT NULL DEFAULT '',
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  KEY type (type),
  KEY level (level),
  KEY user_id (user_id),
  KEY blog_id (blog_id),
  KEY created_at (created_at)
) {charset_collate};

-- ============================================================
-- ۸. پیشرفت تور ادمین (ذخیره موقت برای هر کاربر)
-- ============================================================
CREATE TABLE IF NOT EXISTS {prefix}sbs_tours (
  id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  user_id BIGINT(20) UNSIGNED NOT NULL,
  tour_id VARCHAR(50) NOT NULL DEFAULT 'admin_main',
  current_step INT(11) NOT NULL DEFAULT 0,
  completed TINYINT(1) NOT NULL DEFAULT 0,
  skipped TINYINT(1) NOT NULL DEFAULT 0,
  started_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  completed_at DATETIME DEFAULT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY user_tour (user_id, tour_id),
  KEY completed (completed)
) {charset_collate};

-- ============================================================
-- ۹. تنظیمات پلتفرم (key-value)
-- ============================================================
CREATE TABLE IF NOT EXISTS {prefix}sbs_settings (
  setting_key VARCHAR(100) NOT NULL,
  setting_value LONGTEXT,
  autoload TINYINT(1) NOT NULL DEFAULT 1,
  updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (setting_key)
) {charset_collate};

-- ============================================================
-- داده‌های پیش‌فرض قالب‌ها (Insert 8 قالب نمونه)
-- ============================================================
INSERT INTO {prefix}sbs_templates
(template_key, name, category, type, description, long_description, pages_json, features_json, accent_color, is_pro, rating, downloads)
VALUES
('tpl-gold-jewelry', 'طلا و جواهر زرین', 'shop', 'woocommerce',
 'قالب فروشگاهی لوکس برای طلا و جواهر',
 'قالب کامل با محاسبه زنده قیمت، گالری ۳۶۰ درجه، کیف پول ووکامرس',
 '["خانه","فروشگاه","دسته طلا","محصول","درباره ما","تماس","وبلاگ","سوالات"]',
 '["هیرو ویدیویی","گالری ۳۶۰","محاسبه قیمت زنده","کیف پول","مقایسه عیار"]',
 '#D4AF37', 1, 4.90, 1240),

('tpl-fruit-market', 'میوه و سبزی تازه', 'food', 'woocommerce',
 'قالب فروشگاه میوه و سبزیجات ارگانیک',
 'طراحی سرسبز با صفحه محصولات روزانه و اشتراک سفارش هفتگی',
 '["خانه","محصولات روزانه","فروشگاه","سبد خرید","تسویه","حساب کاربری","تماس"]',
 '["اسلایدر فصلی","بدج تخفیف","ارسال منطقه‌ای","اشتراک هفتگی","گرید موزاییکی"]',
 '#22C55E', 0, 4.80, 2340),

('tpl-mobile-computer', 'دیجیتال موبایل و کامپیوتر', 'tech', 'woocommerce',
 'قالب فروشگاه لوازم دیجیتال با حالت دارک',
 'مدرن تکنولوژیکال با تم دارک، مقایسه محصول و خرید اقساطی',
 '["خانه","موبایل","لپ‌تاپ","قطعات","مقایسه","اقساط","وبلاگ","تماس"]',
 '["تم دارک/روشن","مقایسه مواج","فیلتر پیشرفته","خرید اقساطی","نمودار قیمت"]',
 '#6366F1', 1, 4.90, 3120),

('tpl-tools-paint', 'ابزارآلات و رنگ', 'shop', 'woocommerce',
 'قالب فروشگاه ابزارآلات صنعتی و رنگ',
 'کاتالوگ فنی با محاسبه رنگ متراژی و سفارش عمده',
 '["خانه","ابزار","رنگ","مصالح","کاتالوگ","عمده","تماس"]',
 '["کاتالوگ PDF","محاسبه متراژ","سفارش عمده","فیلتر برند","توضیحات فنی"]',
 '#F97316', 1, 4.70, 890),

('tpl-corporate-pro', 'شرکتی حرفه‌ای', 'corporate', 'corporate',
 'قالب سایت شرکتی با ظاهر مدرن',
 'کامل برای شرکت‌های خدماتی، مهندسی و مشاوره',
 '["خانه","درباره ما","خدمات","نمونه کارها","تیم","وبلاگ","تماس"]',
 '["هیرو Lottie","گرید خدمات","گالری نمونه کار","پروفایل تیم","فرم تماس چندمرحله"]',
 '#0EA5E9', 0, 4.80, 1890),

('tpl-agency-creative', 'آژانس خلاقانه', 'corporate', 'corporate',
 'قالب آژانس دیجیتال مارکتینگ',
 'گرافیک بولد و تایپوگرافی بزرگ با انیمیشن‌های نرم',
 '["خانه","خدمات","نمونه کارها","فرآیند","تیم","بلاگ","درخواست پروژه"]',
 '["تایپوگرافی بولد","اسکرول انیمیشن","ماسونری","فرم پروژه","تایم‌لاین"]',
 '#EC4899', 1, 4.90, 1560),

('tpl-medical-clinic', 'کلینیک پزشکی', 'medical', 'corporate',
 'قالب کلینیک با نوبت‌دهی آنلاین',
 'سیستم نوبت‌دهی، پروفایل پزشکان، مقالات سلامت',
 '["خانه","دکترها","نوبت‌دهی","خدمات","مقالات","تماس"]',
 '["نوبت‌دهی آنلاین","پروفایل پزشکان","بخش‌های تخصصی","مقالات سلامت","نقشه"]',
 '#14B8A6', 1, 4.90, 760),

('tpl-restaurant-cafe', 'رستوران و کافه', 'food', 'woocommerce',
 'قالب رستوران با منوی دیجیتال و سفارش آنلاین',
 'منوی دیجیتال، سفارش آنلاین، رزرو میز و گالری فضا',
 '["خانه","منو","سفارش آنلاین","رزرو میز","گالری","نظرات","تماس"]',
 '["منوی دیجیتال","سفارش آنلاین","رزرو میز","گالری","نقشه موقعیت"]',
 '#EF4444', 0, 4.70, 980);

-- ============================================================
-- تنظیمات پیش‌فرض پلتفرم
-- ============================================================
INSERT INTO {prefix}sbs_settings (setting_key, setting_value) VALUES
('platform_name', 'سایت‌ساز پرو'),
('platform_version', '3.2.0'),
('default_timezone', 'Asia/Tehran'),
('default_language', 'fa_IR'),
('ssl_auto_issue', '1'),
('ssl_provider', 'letsencrypt'),
('backup_frequency', 'daily'),
('max_sites_starter', '1'),
('max_sites_pro', '3'),
('max_sites_business', '10'),
('notification_email_admin', 'admin@sitesaz.pro'),
('mailchimp_api_key', ''),
('zarinpal_merchant_id', ''),
('smtp_host', ''),
('wallet_min_charge', '50000'),
('domain_registration_price', '180000'),
('tour_auto_start', '1')
ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value);
