-- ==========================================================
-- Migration v2 — ماژول سرویس‌ها، فرم Dynamic، Pricing Formula، FAQ، کانال نمونه
-- بر روی schema.sql نسخهٔ ۱ اجرا شود (idempotent - قابل اجرای مجدد بدون خطا)
-- ==========================================================

SET NAMES utf8mb4;

-- ---------- تغییرات جداول موجود ----------
ALTER TABLE customers
    ADD COLUMN IF NOT EXISTS language VARCHAR(10) NOT NULL DEFAULT 'fa',
    ADD COLUMN IF NOT EXISTS is_vip TINYINT(1) NOT NULL DEFAULT 0,
    ADD COLUMN IF NOT EXISTS is_vip_manual TINYINT(1) NOT NULL DEFAULT 0
        COMMENT '1 یعنی مدیر دستی VIP کرده، مستقل از محاسبهٔ خودکار';

ALTER TABLE conversations
    ADD COLUMN IF NOT EXISTS mode ENUM('auto','human') NOT NULL DEFAULT 'auto';

-- ---------- سرویس‌های تبلیغاتی (Dynamic) ----------
CREATE TABLE IF NOT EXISTS advertising_types (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(191) NOT NULL,
    short_description VARCHAR(500) NULL,
    full_description TEXT NULL,
    pricing_type ENUM('fixed','calculated','custom') NOT NULL DEFAULT 'fixed',
    base_price DECIMAL(14,0) NULL,           -- به تومان
    base_price_label VARCHAR(100) NULL,      -- مثلاً "از" برای نمایش "از ۵,۰۰۰,۰۰۰ تومان"
    active TINYINT(1) NOT NULL DEFAULT 1,
    sort_order INT NOT NULL DEFAULT 0,
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- فیلدهای فرم سفارش هر سرویس (برای مرحلهٔ ۳ آماده می‌شود، از همین حالا تعریف می‌شود)
CREATE TABLE IF NOT EXISTS service_form_fields (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    advertising_type_id INT UNSIGNED NOT NULL,
    field_key VARCHAR(64) NOT NULL,     -- مثلاً quantity, channel_members, duration_days
    label VARCHAR(191) NOT NULL,
    field_type ENUM('text','number','url','textarea','select','date') NOT NULL DEFAULT 'text',
    options TEXT NULL,                  -- JSON لیست گزینه‌ها برای select
    required TINYINT(1) NOT NULL DEFAULT 1,
    sort_order INT NOT NULL DEFAULT 0,
    FOREIGN KEY (advertising_type_id) REFERENCES advertising_types(id) ON DELETE CASCADE,
    UNIQUE KEY uq_service_field (advertising_type_id, field_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- موتور فرمول قیمت عمومی (بدون eval - جمع جبری چند جمله‌ای امن)
-- قیمت نهایی = base_price + Σ ( coefficient × value(variable_a) × [value(variable_b) در صورت وجود] )
CREATE TABLE IF NOT EXISTS pricing_formula_terms (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    advertising_type_id INT UNSIGNED NOT NULL,
    label VARCHAR(191) NOT NULL,               -- برای نمایش در ریز قیمت، مثلاً "هزینهٔ بر اساس تعداد بازدید"
    variable_a_key VARCHAR(64) NOT NULL,       -- باید با یکی از service_form_fields.field_key برابر باشد
    variable_b_key VARCHAR(64) NULL,           -- اختیاری؛ برای حاصل‌ضرب دو متغیر (مثلاً تعداد × مدت)
    coefficient DECIMAL(14,4) NOT NULL DEFAULT 1,
    sort_order INT NOT NULL DEFAULT 0,
    FOREIGN KEY (advertising_type_id) REFERENCES advertising_types(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- FAQ (عمومی یا مخصوص یک سرویس)
CREATE TABLE IF NOT EXISTS faqs (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    advertising_type_id INT UNSIGNED NULL,
    category VARCHAR(100) NULL,
    question VARCHAR(500) NOT NULL,
    answer TEXT NOT NULL,
    enabled TINYINT(1) NOT NULL DEFAULT 1,
    sort_order INT NOT NULL DEFAULT 0,
    FOREIGN KEY (advertising_type_id) REFERENCES advertising_types(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- کانال‌های نمونه
CREATE TABLE IF NOT EXISTS showcase_channels (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(191) NOT NULL,
    username VARCHAR(191) NULL,
    url VARCHAR(255) NULL,
    description VARCHAR(500) NULL,
    image_file_id VARCHAR(255) NULL,
    active TINYINT(1) NOT NULL DEFAULT 1,
    sort_order INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- تنظیمات معیار VIP خودکار (کلید/مقدار در همان جدول settings موجود)
INSERT IGNORE INTO settings (setting_key, setting_value) VALUES
    ('vip_min_successful_orders', '5'),
    ('vip_min_total_spent', '0');
