-- ═══════════════════════════════════════════════════════════════
--  نظام تراخيص تطبيقات الأعمال المصغّرة — بنية قاعدة البيانات
--  ثلاثة جداول فقط. MySQL / MariaDB.
-- ═══════════════════════════════════════════════════════════════

-- ملاحظة: لا تنشئ قاعدة بيانات من هنا.
-- في cPanel: أنشئ القاعدة والمستخدم واربطهما من "MySQL Databases"،
-- ثم في phpMyAdmin اختر القاعدة من القائمة اليمنى ونفّذ هذا الملف.
-- كل الجداول تُنشأ داخل القاعدة المختارة حالياً.

-- ١) العملاء
CREATE TABLE IF NOT EXISTS lic_customers (
  id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  name        VARCHAR(160) NOT NULL,
  phone       VARCHAR(24)  NOT NULL,
  email       VARCHAR(160) DEFAULT NULL,
  created_at  DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  UNIQUE KEY uq_phone (phone)
) ENGINE=InnoDB;

-- ٢) التراخيص  (الترخيص = جوال العميل + كود من 10 رموز)
--    max_products = عدد التطبيقات المتمايزة المسموح تفعيلها بهذا الترخيص
CREATE TABLE IF NOT EXISTS lic_licenses (
  id            INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  customer_id   INT UNSIGNED NOT NULL,
  code          CHAR(10) NOT NULL,               -- الكود العشري (أبجدية بلا حروف ملتبسة)
  max_products  TINYINT UNSIGNED NOT NULL DEFAULT 1,
  status        ENUM('active','suspended') NOT NULL DEFAULT 'active',
  note          VARCHAR(255) DEFAULT NULL,       -- مرجع الطلب / ملاحظة يدوية
  created_at    DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  UNIQUE KEY uq_code (code),
  KEY k_customer (customer_id),
  CONSTRAINT fk_lic_customer FOREIGN KEY (customer_id)
      REFERENCES lic_customers(id) ON DELETE CASCADE
) ENGINE=InnoDB;

-- ٣) التفعيلات  (سجل كل تفعيل: أي ترخيص، أي منتج، أي جهاز)
--    صف واحد لكل (ترخيص + منتج + جهاز). المنتج المتمايز يستهلك رصيداً؛
--    إعادة تفعيل نفس المنتج على جهاز جديد لا تزيد عدد المنتجات المتمايزة.
CREATE TABLE IF NOT EXISTS lic_activations (
  id            INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  license_id    INT UNSIGNED NOT NULL,
  product       VARCHAR(64) NOT NULL,            -- productId مثل clients-register
  install_id    VARCHAR(80) NOT NULL,            -- معرّف تثبيت مولّد في التطبيق
  activated_at  DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  last_seen_at  DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  UNIQUE KEY uq_lic_prod_install (license_id, product, install_id),
  KEY k_license (license_id),
  CONSTRAINT fk_act_license FOREIGN KEY (license_id)
      REFERENCES lic_licenses(id) ON DELETE CASCADE
) ENGINE=InnoDB;

-- عرض مساعد: رصيد كل ترخيص (المنتجات المتمايزة المستهلكة مقابل الحد)
CREATE OR REPLACE VIEW v_lic_usage AS
SELECT l.id AS license_id,
       l.code,
       l.max_products,
       COUNT(DISTINCT a.product) AS products_used
FROM lic_licenses l
LEFT JOIN lic_activations a ON a.license_id = l.id
GROUP BY l.id, l.code, l.max_products;
