-- ============================================================
--  Vehicle Verify — Admin Module Migration  (v3.0)
--  NameHero / cPanel MySQL 5.7+ / MariaDB 10+
--  phpMyAdmin: Database -> Import -> schema_admin.sql
--  استورد هذا الملف بعد schema.sql الأصلي
-- ============================================================

-- ------------------------------------------------------------
-- 1) إضافة دور "admin" إلى جدول المستخدمين
--    (آمن: لا يمسّ البيانات الموجودة)
-- ------------------------------------------------------------
ALTER TABLE users
  MODIFY COLUMN role ENUM('owner','driver','officer','admin')
  NOT NULL DEFAULT 'driver';

-- ------------------------------------------------------------
-- 2) تحويل نوع الوثيقة من ENUM إلى VARCHAR
--    حتى تُقبل أنواع/قوالب الوثائق الجديدة التي يضيفها المدير
--    (متوافق مع القيم القديمة: insurance/gray_card/technical/license)
-- ------------------------------------------------------------
ALTER TABLE documents
  MODIFY COLUMN type VARCHAR(50) NOT NULL;

-- ------------------------------------------------------------
-- 3) جدول قوالب الوثائق (Document Templates)
--    المصدر الديناميكي لأنواع الوثائق في كامل المنصة
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS document_templates (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    code            VARCHAR(50)  NOT NULL UNIQUE,   -- معرّف برمجي (slug)
    name_ar         VARCHAR(120) NOT NULL,
    name_en         VARCHAR(120) NOT NULL,
    name_fr         VARCHAR(120) NOT NULL,
    icon            VARCHAR(16)  DEFAULT '📄',
    scope           ENUM('vehicle','driver') NOT NULL DEFAULT 'vehicle',
    requires_expiry TINYINT(1)   NOT NULL DEFAULT 1,
    is_active       TINYINT(1)   NOT NULL DEFAULT 1,
    sort_order      INT          NOT NULL DEFAULT 0,
    created_by      INT UNSIGNED DEFAULT NULL,
    created_at      TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at      TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    CONSTRAINT fk_tpl_admin FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL
) ENGINE=InnoDB;

-- زرع القوالب الأربعة الموجودة أصلاً حتى يبقى النظام متناسقاً
INSERT IGNORE INTO document_templates
  (code, name_ar, name_en, name_fr, icon, scope, requires_expiry, sort_order) VALUES
  ('insurance', 'التأمين',        'Insurance',            'Assurance',          '🛡️', 'vehicle', 1, 1),
  ('gray_card', 'البطاقة الرمادية','Gray Card',            'Carte grise',        '📋', 'vehicle', 1, 2),
  ('technical', 'الفحص التقني',    'Technical Inspection', 'Contrôle technique', '🔧', 'vehicle', 1, 3),
  ('license',   'رخصة السياقة',    'Driving License',      'Permis de conduire', '🪪', 'driver',  1, 4);

-- ------------------------------------------------------------
-- 4) سجل النشاطات (Activity Logs) — لتتبّع إجراءات المدير
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS activity_logs (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    admin_id    INT UNSIGNED DEFAULT NULL,
    action      VARCHAR(120) NOT NULL,
    entity      VARCHAR(60)  DEFAULT NULL,
    entity_id   INT UNSIGNED DEFAULT NULL,
    details     TEXT         DEFAULT NULL,
    ip          VARCHAR(45)  DEFAULT NULL,
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT fk_log_admin FOREIGN KEY (admin_id) REFERENCES users(id) ON DELETE SET NULL,
    KEY idx_log_created (created_at)
) ENGINE=InnoDB;

-- ------------------------------------------------------------
-- 5) إعدادات المنصة (Settings) — مفتاح/قيمة
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS settings (
    setting_key   VARCHAR(80)  NOT NULL PRIMARY KEY,
    setting_value TEXT         DEFAULT NULL,
    updated_at    TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

INSERT IGNORE INTO settings (setting_key, setting_value) VALUES
  ('platform_name',     'Vehicle Verify'),
  ('default_lang',      'ar'),
  ('registration_open', '1'),
  ('expiry_warn_days',  '30');

-- ------------------------------------------------------------
-- 6) زرع حساب المدير
--    كلمة المرور: demo123  (نفس هاش الحسابات التجريبية)
--    ⚠️ غيّر البريد وكلمة المرور بعد أول تسجيل دخول
-- ------------------------------------------------------------
INSERT IGNORE INTO users (name, email, password, role, phone) VALUES
  ('Administrator', 'admin@demo.com',
   '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi',
   'admin', '0500000000');
