<?php
// إصلاح طارئ لمشكلة الأعمدة المفقودة في جدول locations (باستخدام PDO)
require 'config.php';

echo "بدء الإصلاح الطارئ لجدول locations...\n";
echo "=====================================\n";

try {
    // إضافة الأعمدة المفقودة
    $columns_to_add = [
        'speed' => 'DECIMAL(10,2) NULL',
        'accuracy' => 'DECIMAL(10,2) NULL',
        'altitude' => 'DECIMAL(10,2) NULL', 
        'heading' => 'DECIMAL(10,2) NULL'
    ];
    
    foreach ($columns_to_add as $column_name => $column_definition) {
        // استخدام PDO لتنفيذ الاستعلامات
        try {
            $conn->exec("ALTER TABLE locations ADD COLUMN $column_name $column_definition");
            echo "✅ تم إضافة العمود: $column_name\n";
        } catch (PDOException $e) {
            echo "⚠️ العمود $column_name موجود بالفعل أو حدث خطأ: " . $e->getMessage() . "\n";
        }
    }
    
    // إضافة فهارس لتحسين الأداء (مع التحقق من وجودها)
    $indexes = [
        'idx_device_timestamp' => 'CREATE INDEX idx_device_timestamp ON locations(device_id, timestamp DESC)',
        'idx_timestamp' => 'CREATE INDEX idx_timestamp ON locations(timestamp DESC)',
        'idx_device_name' => 'CREATE INDEX idx_device_name ON locations(device_name)'
    ];
    
    foreach ($indexes as $index_name => $index_sql) {
        // التحقق من وجود الفهرس أولاً
        $stmt = $conn->prepare("SHOW INDEX FROM locations WHERE Key_name = ?");
        $stmt->execute([$index_name]);
        if ($stmt->rowCount() == 0) {
            try {
                $conn->exec($index_sql);
                echo "✅ تم إنشاء فهرس: $index_name\n";
            } catch (PDOException $e) {
                echo "❌ خطأ في إنشاء فهرس $index_name: " . $e->getMessage() . "\n";
            }
        } else {
            echo "ℹ️ الفهرس $index_name موجود بالفعل\n";
        }
    }
    echo "\n🎉 تم الإصلاح بنجاح! الآن يمكن للأجهزة إرسال البيانات بشكل طبيعي.\n";
    
    // عرض بنية الجدول المحدثة
    echo "\nبنية جدول locations المحدثة:\n";
    echo "==============================\n";
    $result = $conn->query("DESCRIBE locations");
    while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
        echo $row['Field'] . " - " . $row['Type'] . "\n"; // عرض بنية الجدول
    }
    
} catch (Exception $e) {
    echo "❌ خطأ في الإصلاح: " . $e->getMessage() . "\n";
}

// لا حاجة لإغلاق الاتصال يدوياً مع PDO، سيتم إغلاقه تلقائياً عند انتهاء السكربت
?>