<?php
// ملف إصلاح قاعدة البيانات على الخادم الفعلي
// يجب تشغيل هذا الملف على الخادم مرة واحدة فقط

require_once 'config.php';
require_once 'db_connect.php';

echo "<h2>🔧 إصلاح قاعدة البيانات</h2>";
echo "<pre>";

// التحقق من الاتصال
if (!$conn) {
    die("❌ فشل الاتصال بقاعدة البيانات: " . mysqli_connect_error());
}
echo "✅ تم الاتصال بقاعدة البيانات بنجاح\n";

// التحقق من بنية الجدول الحالية
echo "\n📋 فحص بنية جدول locations الحالية...\n";
$result = $conn->query("DESCRIBE locations");
if ($result) {
    $existing_columns = [];
    while ($row = $result->fetch_assoc()) {
        $existing_columns[] = $row['Field'];
        echo "   - {$row['Field']} ({$row['Type']})\n";
    }
} else {
    die("❌ خطأ في فحص بنية الجدول: " . $conn->error);
}

// قائمة الأعمدة المطلوبة
$required_columns = [
    'speed' => 'DECIMAL(10,2) NULL COMMENT "سرعة الجهاز"',
    'accuracy' => 'DECIMAL(10,2) NULL COMMENT "دقة الموقع"',
    'altitude' => 'DECIMAL(10,2) NULL COMMENT "الارتفاع"',
    'heading' => 'DECIMAL(10,2) NULL COMMENT "الاتجاه"'
];

echo "\n🔨 إضافة الأعمدة المفقودة...\n";
$columns_added = 0;

foreach ($required_columns as $column_name => $column_definition) {
    if (!in_array($column_name, $existing_columns)) {
        $sql = "ALTER TABLE locations ADD COLUMN $column_name $column_definition";
        echo "   إضافة عمود: $column_name...";
        
        if ($conn->query($sql) === TRUE) {
            echo " ✅ تم\n";
            $columns_added++;
        } else {
            echo " ❌ فشل: " . $conn->error . "\n";
        }
    } else {
        echo "   العمود $column_name موجود بالفعل ✓\n";
    }
}

echo "\n📊 النتائج:\n";
echo "   - تم إضافة $columns_added عمود جديد\n";

// التحقق من النتيجة النهائية
echo "\n🔍 فحص البنية النهائية للجدول...\n";
$result = $conn->query("DESCRIBE locations");
if ($result) {
    $final_columns = [];
    while ($row = $result->fetch_assoc()) {
        $final_columns[] = $row['Field'];
    }
    
    echo "   الأعمدة الموجودة الآن: " . implode(', ', $final_columns) . "\n";
    
    // التحقق من وجود جميع الأعمدة المطلوبة
    $all_present = true;
    foreach (array_keys($required_columns) as $required_column) {
        if (!in_array($required_column, $final_columns)) {
            echo "   ❌ العمود المفقود: $required_column\n";
            $all_present = false;
        }
    }
    
    if ($all_present) {
        echo "\n🎉 تم إصلاح قاعدة البيانات بنجاح!\n";
        echo "   جميع الأعمدة المطلوبة موجودة الآن.\n";
    } else {
        echo "\n⚠️ لا تزال هناك أعمدة مفقودة.\n";
    }
} else {
    echo "❌ خطأ في فحص البنية النهائية: " . $conn->error . "\n";
}

// اختبار إدراج البيانات
echo "\n🧪 اختبار إدراج البيانات...\n";
$test_sql = "INSERT INTO locations (device_id, device_name, latitude, longitude, timestamp, status, battery, speed, accuracy, altitude, heading) 
             VALUES ('test-fix-123', 'جهاز اختبار الإصلاح', '31.0000', '47.0000', '" . date('Y-m-d h:i:s A') . "', 'اختبار', '100', '0.00', '10.0', '50.0', '0.0')";

if ($conn->query($test_sql) === TRUE) {
    echo "   ✅ تم اختبار الإدراج بنجاح\n";
    
    // حذف البيانات التجريبية
    $conn->query("DELETE FROM locations WHERE device_id = 'test-fix-123'");
    echo "   🗑️ تم حذف البيانات التجريبية\n";
} else {
    echo "   ❌ فشل اختبار الإدراج: " . $conn->error . "\n";
}

echo "\n✨ انتهى الإصلاح!\n";
echo "   يمكن الآن للأجهزة إرسال البيانات بنجاح.\n";

$conn->close();
echo "</pre>";
?>