-- این فایل را در phpMyAdmin (از طریق cPanel) روی دیتابیس خودتان اجرا کنید

CREATE TABLE IF NOT EXISTS users (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    telegram_id BIGINT UNSIGNED NOT NULL UNIQUE,
    username VARCHAR(255) DEFAULT NULL,
    first_name VARCHAR(255) DEFAULT NULL,
    wallet_balance BIGINT NOT NULL DEFAULT 0,
    referral_code VARCHAR(20) NOT NULL UNIQUE,
    referred_by BIGINT UNSIGNED DEFAULT NULL,
    used_test_account TINYINT(1) NOT NULL DEFAULT 0,
    is_banned TINYINT(1) NOT NULL DEFAULT 0,
    state VARCHAR(50) DEFAULT NULL,        -- برای مدیریت مراحل مکالمه (مثلاً منتظر عکس رسید)
    state_data TEXT DEFAULT NULL,          -- داده‌ی کمکی مرحله (JSON)
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS plans (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    days INT UNSIGNED NOT NULL,
    gb INT UNSIGNED NOT NULL,
    price BIGINT UNSIGNED NOT NULL,
    is_active TINYINT(1) NOT NULL DEFAULT 1,
    sort_order INT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS services (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    user_id BIGINT UNSIGNED NOT NULL,
    plan_id INT UNSIGNED DEFAULT NULL,
    pg_username VARCHAR(255) NOT NULL,      -- یوزرنیم کاربر در پنل PasarGuard
    subscription_url TEXT DEFAULT NULL,
    expires_at DATETIME DEFAULT NULL,
    data_limit_gb INT UNSIGNED DEFAULT NULL,
    is_test TINYINT(1) NOT NULL DEFAULT 0,
    status VARCHAR(20) NOT NULL DEFAULT 'active',  -- active / expired / disabled
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS orders (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    user_id BIGINT UNSIGNED NOT NULL,
    plan_id INT UNSIGNED DEFAULT NULL,
    amount BIGINT UNSIGNED NOT NULL,
    type VARCHAR(20) NOT NULL DEFAULT 'purchase',  -- purchase / renew / wallet_charge
    payment_method VARCHAR(20) NOT NULL DEFAULT 'card',
    receipt_file_id VARCHAR(255) DEFAULT NULL,      -- file_id عکس رسید در تلگرام
    status VARCHAR(20) NOT NULL DEFAULT 'pending',  -- pending / approved / rejected
    admin_note VARCHAR(255) DEFAULT NULL,
    related_service_id BIGINT UNSIGNED DEFAULT NULL,
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    reviewed_at DATETIME DEFAULT NULL,
    FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS wallet_transactions (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    user_id BIGINT UNSIGNED NOT NULL,
    amount BIGINT NOT NULL,                -- مثبت = واریز، منفی = برداشت
    reason VARCHAR(100) NOT NULL,          -- charge / purchase / referral_bonus / admin_adjust
    ref_id BIGINT UNSIGNED DEFAULT NULL,
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS support_tickets (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    user_id BIGINT UNSIGNED NOT NULL,
    message TEXT NOT NULL,
    status VARCHAR(20) NOT NULL DEFAULT 'open',  -- open / answered / closed
    admin_reply TEXT DEFAULT NULL,
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS reseller_requests (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    user_id BIGINT UNSIGNED NOT NULL,
    message TEXT DEFAULT NULL,
    status VARCHAR(20) NOT NULL DEFAULT 'pending',  -- pending / accepted / rejected
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- چند پلن نمونه؛ بعداً از پنل مدیریت داخل ربات یا مستقیم اینجا ویرایش کنید
INSERT INTO plans (title, days, gb, price, sort_order) VALUES
('۱ ماهه - ۳۰ گیگ', 30, 30, 150000, 1),
('۱ ماهه - ۶۰ گیگ', 30, 60, 250000, 2),
('۳ ماهه - ۱۰۰ گیگ', 90, 100, 600000, 3);
