-- ==========================================================
-- Migration v6 — درگاه پرداخت آنلاین Modular (IDPay/Zibal/PayPing/FAM/NextPay) + پرداخت دستی + رسید
-- بعد از migration_v5.sql اجرا شود.
-- ==========================================================

SET NAMES utf8mb4;

-- رسیدهای پرداخت دستی (کارت‌به‌کارت). یک Payment می‌تواند چند بار رسید بگیرد
-- (مثلاً اگر ادمین رسید اول را رد کرد و درخواست ارسال مجدد کرد).
CREATE TABLE IF NOT EXISTS payment_receipts (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    payment_id INT UNSIGNED NOT NULL,
    order_id INT UNSIGNED NOT NULL,
    file_id VARCHAR(255) NOT NULL,
    file_type ENUM('photo','document') NOT NULL DEFAULT 'photo',
    caption VARCHAR(500) NULL,
    status ENUM('pending','approved','rejected') NOT NULL DEFAULT 'pending',
    reviewed_by_admin_id INT UNSIGNED NULL,
    review_note VARCHAR(255) NULL,
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    reviewed_at DATETIME NULL,
    FOREIGN KEY (payment_id) REFERENCES payments(id) ON DELETE CASCADE,
    FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE,
    FOREIGN KEY (reviewed_by_admin_id) REFERENCES admins(id) ON DELETE SET NULL,
    INDEX idx_payment (payment_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- تنظیمات درگاه/پرداخت (همه از پنل قابل تغییرند، بدون نیاز به تغییر کد).
-- توجه: هیچ درگاهی به‌صورت پیش‌فرض انتخاب نشده (online_gateway_provider خالی)؛
-- Credential هر Provider جداگانه و به‌صورت JSON در gateway_credentials_<provider> ذخیره می‌شود
-- (مثلاً gateway_credentials_idpay) تا افزودن Provider جدید نیازی به تغییر ساختار جدول نداشته باشد.
INSERT IGNORE INTO settings (setting_key, setting_value) VALUES
    ('app_base_url', ''),
    ('online_gateway_enabled', '0'),
    ('online_gateway_provider', ''),
    ('gateway_credentials_idpay', ''),
    ('gateway_credentials_zibal', ''),
    ('gateway_credentials_payping', ''),
    ('gateway_credentials_fam', ''),
    ('gateway_credentials_nextpay', ''),
    ('manual_payment_enabled', '1'),
    ('manual_payment_account_holder', ''),
    ('manual_payment_card_number', ''),
    ('manual_payment_description', 'لطفاً مبلغ را دقیقاً به شماره کارت زیر واریز کرده و رسید را ارسال کنید.'),
    ('manual_payment_deadline_hours', '24'),
    ('manual_payment_receipt_guide', 'لطفاً عکس یا فایل رسید پرداخت را همین‌جا ارسال کنید.');
