-- تحديث نظام إرسال عروض التوصيل للمناديب
-- يضيف حالة أونلاين للمندوب ووقت آخر نشاط داخل النظام
-- شغّل الملف مرة واحدة من phpMyAdmin على قاعدة بيانات المتجر.

SET @db_name := DATABASE();

-- إضافة is_online إذا غير موجود
SET @sql := (
    SELECT IF(
        COUNT(*) = 0,
        'ALTER TABLE driver_profiles ADD COLUMN is_online TINYINT(1) NOT NULL DEFAULT 0 AFTER is_available',
        'SELECT "column is_online already exists"'
    )
    FROM information_schema.COLUMNS
    WHERE TABLE_SCHEMA = @db_name
      AND TABLE_NAME = 'driver_profiles'
      AND COLUMN_NAME = 'is_online'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- إضافة last_seen_at إذا غير موجود
SET @sql := (
    SELECT IF(
        COUNT(*) = 0,
        'ALTER TABLE driver_profiles ADD COLUMN last_seen_at DATETIME DEFAULT NULL AFTER last_location_at',
        'SELECT "column last_seen_at already exists"'
    )
    FROM information_schema.COLUMNS
    WHERE TABLE_SCHEMA = @db_name
      AND TABLE_NAME = 'driver_profiles'
      AND COLUMN_NAME = 'last_seen_at'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- فهرس لحالة الأونلاين والتوفر
SET @sql := (
    SELECT IF(
        COUNT(*) = 0,
        'ALTER TABLE driver_profiles ADD INDEX idx_driver_profiles_online_available (is_online, is_available, last_seen_at)',
        'SELECT "index idx_driver_profiles_online_available already exists"'
    )
    FROM information_schema.STATISTICS
    WHERE TABLE_SCHEMA = @db_name
      AND TABLE_NAME = 'driver_profiles'
      AND INDEX_NAME = 'idx_driver_profiles_online_available'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- فهرس لتحديث الموقع
SET @sql := (
    SELECT IF(
        COUNT(*) = 0,
        'ALTER TABLE driver_profiles ADD INDEX idx_driver_profiles_last_location (last_location_at)',
        'SELECT "index idx_driver_profiles_last_location already exists"'
    )
    FROM information_schema.STATISTICS
    WHERE TABLE_SCHEMA = @db_name
      AND TABLE_NAME = 'driver_profiles'
      AND INDEX_NAME = 'idx_driver_profiles_last_location'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- تصفير حالة الأونلاين القديمة حتى لا يظهر مندوب إلا بعد دخوله للنظام من جديد
UPDATE driver_profiles
SET is_online = 0,
    last_seen_at = NULL;
