-- ═════════════════════════════════════════════════════════════════
-- 🗄️ دیتابیس کامل ربات فروشگاهی تلگرام
-- Telegram Shop Bot - Full Database Installation
-- ═════════════════════════════════════════════════════════════════

-- تنظیم charset
SET CHARACTER SET utf8mb4;

-- ─────────────────────────────────────────────────────────────────
-- 👥 جدول کاربران
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS users (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    telegram_id BIGINT UNSIGNED NOT NULL UNIQUE,
    username VARCHAR(100),
    first_name VARCHAR(100),
    last_name VARCHAR(100),
    phone VARCHAR(20),
    language_code VARCHAR(10) DEFAULT 'fa',
    
    -- کیف پول
    wallet_balance DECIMAL(15, 2) DEFAULT 0.00,
    
    -- رفرال
    referrer_id BIGINT UNSIGNED NULL,
    referral_rewarded BOOLEAN DEFAULT FALSE,
    referral_code VARCHAR(20) UNIQUE,
    referral_count INT DEFAULT 0,
    referral_earnings DECIMAL(15, 2) DEFAULT 0.00,
    
    -- وضعیت و نقش
    role ENUM('user', 'admin', 'super_admin') DEFAULT 'user',
    status ENUM('active', 'banned', 'suspended') DEFAULT 'active',
    is_premium BOOLEAN DEFAULT FALSE,
    
    -- آمار
    total_orders INT DEFAULT 0,
    total_spent DECIMAL(15, 2) DEFAULT 0.00,
    
    -- سطح کاربری
    level INT DEFAULT 1,
    experience INT DEFAULT 0,
    
    -- زمان‌ها
    last_activity TIMESTAMP NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    INDEX idx_telegram_id (telegram_id),
    INDEX idx_username (username),
    INDEX idx_referrer_id (referrer_id),
    INDEX idx_status (status),
    INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 📦 جدول دسته‌بندی محصولات
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS categories (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    slug VARCHAR(100) NOT NULL UNIQUE,
    description TEXT,
    icon VARCHAR(50),
    sort_order INT DEFAULT 0,
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    INDEX idx_slug (slug),
    INDEX idx_is_active (is_active)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 🛍 جدول محصولات
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS products (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    category_id INT UNSIGNED NOT NULL,
    name VARCHAR(200) NOT NULL,
    slug VARCHAR(200) NOT NULL UNIQUE,
    description TEXT,
    
    -- قیمت
    price DECIMAL(15, 2) NOT NULL,
    discount_price DECIMAL(15, 2) NULL,
    
    -- موجودی
    stock INT DEFAULT 0,
    min_stock INT DEFAULT 5,
    max_purchase INT DEFAULT 10,
    
    -- تحویل
    delivery_type ENUM('auto', 'manual') DEFAULT 'auto',
    delivery_time VARCHAR(50) DEFAULT 'فوری',
    
    -- متا
    image_url VARCHAR(500),
    sort_order INT DEFAULT 0,
    is_active BOOLEAN DEFAULT TRUE,
    is_featured BOOLEAN DEFAULT FALSE,
    is_gift BOOLEAN DEFAULT FALSE,
    
    -- آمار
    view_count INT DEFAULT 0,
    purchase_count INT DEFAULT 0,
    
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE CASCADE,
    INDEX idx_category_id (category_id),
    INDEX idx_slug (slug),
    INDEX idx_is_active (is_active),
    INDEX idx_is_featured (is_featured),
    INDEX idx_is_gift (is_gift)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 📋 جدول موجودی محصولات (برای تحویل خودکار)
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS product_stock (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    product_id INT UNSIGNED NOT NULL,
    stock_data TEXT NOT NULL,
    status ENUM('available', 'sold', 'reserved') DEFAULT 'available',
    reserved_at TIMESTAMP NULL,
    sold_at TIMESTAMP NULL,
    order_id BIGINT UNSIGNED NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    
    FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE,
    INDEX idx_product_status (product_id, status),
    INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 🛒 جدول سبد خرید
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS cart (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT UNSIGNED NOT NULL,
    product_id INT UNSIGNED NOT NULL,
    quantity INT DEFAULT 1,
    price DECIMAL(15, 2) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE,
    UNIQUE KEY unique_cart_item (user_id, product_id),
    INDEX idx_user_id (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 📜 جدول سفارشات
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS orders (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT UNSIGNED NOT NULL,
    order_number VARCHAR(50) UNIQUE NOT NULL,
    
    -- مبالغ
    subtotal DECIMAL(15, 2) NOT NULL,
    discount_amount DECIMAL(15, 2) DEFAULT 0.00,
    total_amount DECIMAL(15, 2) NOT NULL,
    
    -- کد تخفیف
    discount_code_id INT UNSIGNED NULL,
    
    -- وضعیت
    status ENUM('pending', 'paid', 'processing', 'completed', 'cancelled', 'refunded') DEFAULT 'pending',
    payment_status ENUM('unpaid', 'paid', 'refunded') DEFAULT 'unpaid',
    payment_method ENUM('wallet', 'zarinpal', 'idpay', 'nextpay', 'crypto') NULL,
    
    -- تحویل
    delivery_status ENUM('pending', 'delivered', 'failed') DEFAULT 'pending',
    delivery_data TEXT NULL,
    
    -- ادمین مسئول
    assigned_admin_id BIGINT UNSIGNED NULL,
    
    -- یادداشت
    note TEXT,
    admin_note TEXT,
    
    -- زمان‌ها
    paid_at TIMESTAMP NULL,
    completed_at TIMESTAMP NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    INDEX idx_user_id (user_id),
    INDEX idx_order_number (order_number),
    INDEX idx_status (status),
    INDEX idx_payment_status (payment_status),
    INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 📦 جدول آیتم‌های سفارش
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS order_items (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    order_id BIGINT UNSIGNED NOT NULL,
    product_id INT UNSIGNED NOT NULL,
    product_name VARCHAR(200) NOT NULL,
    quantity INT NOT NULL,
    price DECIMAL(15, 2) NOT NULL,
    total DECIMAL(15, 2) NOT NULL,
    stock_id BIGINT UNSIGNED NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    
    FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE,
    FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE,
    INDEX idx_order_id (order_id),
    INDEX idx_product_id (product_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 💳 جدول تراکنش‌ها
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS transactions (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT UNSIGNED NOT NULL,
    order_id BIGINT UNSIGNED NULL,
    
    -- نوع تراکنش
    type ENUM('deposit', 'withdraw', 'purchase', 'refund', 'referral_bonus', 'admin_adjustment') NOT NULL,
    
    -- مبلغ
    amount DECIMAL(15, 2) NOT NULL,
    balance_before DECIMAL(15, 2) NOT NULL,
    balance_after DECIMAL(15, 2) NOT NULL,
    
    -- روش پرداخت
    payment_method VARCHAR(50),
    gateway_transaction_id VARCHAR(200),
    
    -- وضعیت
    status ENUM('pending', 'completed', 'failed', 'cancelled') DEFAULT 'pending',
    
    -- توضیحات
    description TEXT,
    metadata JSON,
    
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE SET NULL,
    INDEX idx_user_id (user_id),
    INDEX idx_order_id (order_id),
    INDEX idx_type (type),
    INDEX idx_status (status),
    INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 🎁 جدول کدهای تخفیف
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS discount_codes (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    code VARCHAR(50) UNIQUE NOT NULL,
    
    -- نوع تخفیف
    type ENUM('percentage', 'fixed') NOT NULL,
    value DECIMAL(15, 2) NOT NULL,
    
    -- محدودیت‌ها
    min_purchase DECIMAL(15, 2) DEFAULT 0.00,
    max_discount DECIMAL(15, 2) NULL,
    usage_limit INT NULL,
    usage_per_user INT DEFAULT 1,
    usage_count INT DEFAULT 0,
    
    -- محدودیت محصول
    applies_to_product_id INT UNSIGNED NULL,
    applies_to_category_id INT UNSIGNED NULL,
    
    -- زمان‌ها
    valid_from TIMESTAMP NULL,
    valid_until TIMESTAMP NULL,
    
    -- وضعیت
    is_active BOOLEAN DEFAULT TRUE,
    
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    INDEX idx_code (code),
    INDEX idx_is_active (is_active)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 🎫 جدول استفاده از کد تخفیف
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS discount_usage (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    discount_code_id INT UNSIGNED NOT NULL,
    user_id BIGINT UNSIGNED NOT NULL,
    order_id BIGINT UNSIGNED NULL,
    discount_amount DECIMAL(15, 2) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    
    FOREIGN KEY (discount_code_id) REFERENCES discount_codes(id) ON DELETE CASCADE,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE SET NULL,
    INDEX idx_discount_code_id (discount_code_id),
    INDEX idx_user_id (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 💳 جدول پرداخت کارت به کارت
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS card_payments (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT UNSIGNED NOT NULL,
    order_id BIGINT UNSIGNED NULL,
    amount DECIMAL(15, 2) NOT NULL,
    tracking_code VARCHAR(50) UNIQUE NOT NULL,
    
    -- رسید پرداخت
    receipt_file_id VARCHAR(200) NULL,
    receipt_uploaded_at TIMESTAMP NULL,
    
    -- وضعیت
    status ENUM('pending', 'waiting_approval', 'approved', 'rejected') DEFAULT 'pending',
    payment_method VARCHAR(50) DEFAULT 'card_to_card',
    
    -- تایید/رد
    approved_by BIGINT UNSIGNED NULL,
    approved_at TIMESTAMP NULL,
    reject_reason TEXT NULL,
    
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE SET NULL,
    INDEX idx_user_id (user_id),
    INDEX idx_tracking_code (tracking_code),
    INDEX idx_status (status),
    INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 🎫 جدول تیکت‌های پشتیبانی
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS tickets (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT UNSIGNED NOT NULL,
    ticket_number VARCHAR(50) UNIQUE NOT NULL,
    subject VARCHAR(200) NOT NULL,
    priority ENUM('low', 'medium', 'high', 'urgent') DEFAULT 'medium',
    status ENUM('open', 'pending', 'answered', 'closed') DEFAULT 'open',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    closed_at TIMESTAMP NULL,
    
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    INDEX idx_user_id (user_id),
    INDEX idx_status (status),
    INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 💬 جدول پیام‌های تیکت
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS ticket_messages (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    ticket_id BIGINT UNSIGNED NOT NULL,
    user_id BIGINT UNSIGNED NOT NULL,
    message TEXT NOT NULL,
    is_admin BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    
    FOREIGN KEY (ticket_id) REFERENCES tickets(id) ON DELETE CASCADE,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    INDEX idx_ticket_id (ticket_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 📊 جدول آمار روزانه
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS daily_stats (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    date DATE UNIQUE NOT NULL,
    new_users INT DEFAULT 0,
    total_orders INT DEFAULT 0,
    completed_orders INT DEFAULT 0,
    total_revenue DECIMAL(15, 2) DEFAULT 0.00,
    wallet_charges DECIMAL(15, 2) DEFAULT 0.00,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    INDEX idx_date (date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 🔔 جدول اعلان‌ها
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS notifications (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT UNSIGNED NULL,
    title VARCHAR(200) NOT NULL,
    message TEXT NOT NULL,
    type ENUM('info', 'success', 'warning', 'error') DEFAULT 'info',
    is_read BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    INDEX idx_user_id (user_id),
    INDEX idx_is_read (is_read),
    INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- ⚙️ جدول تنظیمات
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS settings (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    setting_key VARCHAR(100) UNIQUE NOT NULL,
    setting_value TEXT,
    setting_type VARCHAR(50) DEFAULT 'string',
    description VARCHAR(500),
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    INDEX idx_setting_key (setting_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 📝 جدول لاگ‌ها
-- ─────────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS logs (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT UNSIGNED NULL,
    level ENUM('debug', 'info', 'warning', 'error') DEFAULT 'info',
    message TEXT NOT NULL,
    context JSON,
    ip_address VARCHAR(45),
    user_agent TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL,
    INDEX idx_user_id (user_id),
    INDEX idx_level (level),
    INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ═════════════════════════════════════════════════════════════════
-- 🐛 سیستم Bug Bounty (گزارش باگ)
-- ═════════════════════════════════════════════════════════════════

CREATE TABLE IF NOT EXISTS bug_reports (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT UNSIGNED NOT NULL,
    
    -- اطلاعات باگ
    title VARCHAR(255) NOT NULL,
    description TEXT NOT NULL,
    steps_to_reproduce TEXT,
    severity ENUM('low', 'medium', 'high', 'critical') NOT NULL DEFAULT 'low',
    category ENUM('security', 'functionality', 'ui_ux', 'performance', 'other') NOT NULL,
    
    -- فایل‌های ضمیمه
    attachments JSON,
    
    -- وضعیت
    status ENUM('pending', 'reviewing', 'accepted', 'rejected', 'duplicate', 'fixed') DEFAULT 'pending',
    priority ENUM('low', 'medium', 'high', 'urgent') DEFAULT 'medium',
    
    -- پاداش
    reward_amount DECIMAL(15, 2) DEFAULT 0.00,
    is_rewarded BOOLEAN DEFAULT FALSE,
    rewarded_at TIMESTAMP NULL,
    
    -- بررسی ادمین
    admin_id BIGINT UNSIGNED NULL,
    admin_notes TEXT,
    reviewed_at TIMESTAMP NULL,
    fixed_at TIMESTAMP NULL,
    
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    INDEX idx_user_id (user_id),
    INDEX idx_status (status),
    INDEX idx_severity (severity),
    INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS bug_bounty_rewards (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    severity ENUM('low', 'medium', 'high', 'critical') NOT NULL UNIQUE,
    reward_amount DECIMAL(15, 2) NOT NULL,
    description TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS bug_report_history (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    bug_report_id INT UNSIGNED NOT NULL,
    admin_id BIGINT UNSIGNED NOT NULL,
    action ENUM('status_change', 'severity_change', 'reward_given', 'comment_added') NOT NULL,
    old_value VARCHAR(100),
    new_value VARCHAR(100),
    notes TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    
    FOREIGN KEY (bug_report_id) REFERENCES bug_reports(id) ON DELETE CASCADE,
    INDEX idx_bug_report_id (bug_report_id),
    INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ═════════════════════════════════════════════════════════════════
-- 👨‍💼 سیستم ادمین‌های سفارش (Order Admins)
-- ═════════════════════════════════════════════════════════════════

CREATE TABLE IF NOT EXISTS order_admins (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT UNSIGNED NOT NULL UNIQUE,
    telegram_id BIGINT UNSIGNED NOT NULL UNIQUE,
    name VARCHAR(100) NOT NULL,
    username VARCHAR(100),
    
    -- وضعیت
    is_active BOOLEAN DEFAULT TRUE,
    
    -- آمار
    total_orders_handled INT DEFAULT 0,
    active_orders INT DEFAULT 0,
    
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    INDEX idx_telegram_id (telegram_id),
    INDEX idx_is_active (is_active)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ═════════════════════════════════════════════════════════════════
-- 🎖️ سیستم سطح کاربری (User Level System)
-- ═════════════════════════════════════════════════════════════════

CREATE TABLE IF NOT EXISTS user_levels (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    level INT NOT NULL UNIQUE,
    name VARCHAR(100) NOT NULL,
    min_experience INT NOT NULL,
    max_experience INT NULL,
    discount_percentage DECIMAL(5, 2) DEFAULT 0.00,
    badge_emoji VARCHAR(10),
    perks TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    INDEX idx_level (level)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ─────────────────────────────────────────────────────────────────
-- 🎯 درج داده‌های اولیه
-- ─────────────────────────────────────────────────────────────────

-- دسته‌بندی‌های پیش‌فرض
INSERT INTO categories (name, slug, icon, sort_order) VALUES
('پریمیوم تلگرام', 'telegram-premium', '⭐️', 1),
('استارز تلگرام', 'telegram-stars', '✨', 2),
('تون (TON)', 'ton-crypto', '💎', 3),
('گیفت کد', 'gift-codes', '🎁', 4),
('اکانت', 'accounts', '👤', 5),
('بوست', 'boost', '🚀', 6);

-- تنظیمات پیش‌فرض
INSERT INTO settings (setting_key, setting_value, setting_type, description) VALUES
('shop_name', 'فروشگاه رمزینو', 'string', 'نام فروشگاه'),
('maintenance_mode', '0', 'boolean', 'حالت تعمیر و نگهداری'),
('min_wallet_charge', '10000', 'integer', 'حداقل مبلغ شارژ کیف پول'),
('max_wallet_charge', '10000000', 'integer', 'حداکثر مبلغ شارژ کیف پول'),
('referral_bonus', '5000', 'integer', 'پاداش دعوت دوستان'),
('currency', 'تومان', 'string', 'واحد پول');

-- کد تخفیف نمونه
INSERT INTO discount_codes (code, type, value, min_purchase, usage_limit, valid_until) VALUES
('WELCOME10', 'percentage', 10, 50000, 100, DATE_ADD(NOW(), INTERVAL 30 DAY)),
('FIRST20', 'percentage', 20, 100000, 50, DATE_ADD(NOW(), INTERVAL 15 DAY));

-- پاداش‌های Bug Bounty
INSERT INTO bug_bounty_rewards (severity, reward_amount, description) VALUES
('low', 50000, 'باگ‌های جزئی و مشکلات UI/UX که تاثیر کمی دارند'),
('medium', 150000, 'باگ‌های متوسط که عملکرد را تحت تاثیر قرار می‌دهند'),
('high', 500000, 'باگ‌های مهم و مشکلات امنیتی جدی'),
('critical', 2000000, 'باگ‌های بحرانی امنیتی که می‌توانند سیستم را به خطر بیندازند');

-- سطوح کاربری
INSERT INTO user_levels (level, name, min_experience, max_experience, discount_percentage, badge_emoji, perks) VALUES
(1, 'کاربر تازه‌کار', 0, 999, 0.00, '🌱', 'دسترسی پایه به محصولات'),
(2, 'کاربر برنزی', 1000, 4999, 2.00, '🥉', '2% تخفیف در خریدها'),
(3, 'کاربر نقره‌ای', 5000, 14999, 5.00, '🥈', '5% تخفیف در خریدها'),
(4, 'کاربر طلایی', 15000, 49999, 7.00, '🥇', '7% تخفیف + پشتیبانی اولویت‌دار'),
(5, 'کاربر الماسی', 50000, 99999, 10.00, '💎', '10% تخفیف + پشتیبانی VIP'),
(6, 'کاربر افسانه‌ای', 100000, NULL, 15.00, '👑', '15% تخفیف + تمام امکانات VIP');

-- ═════════════════════════════════════════════════════════════════
-- ✅ نصب کامل شد!
-- ═════════════════════════════════════════════════════════════════
