<?php
// فحص شامل لحالة النظام
header('Content-Type: text/html; charset=utf-8');
require_once 'db_connect.php';

echo "<!DOCTYPE html>\n";
echo "<html dir='rtl'>\n";
echo "<head>\n";
echo "<meta charset='UTF-8'>\n";
echo "<title>فحص حالة النظام</title>\n";
echo "<style>\n";
echo "body { font-family: Arial, sans-serif; margin: 20px; direction: rtl; }\n";
echo ".success { color: #28a745; }\n";
echo ".error { color: #dc3545; }\n";
echo ".warning { color: #ffc107; }\n";
echo ".info { color: #17a2b8; }\n";
echo "table { border-collapse: collapse; width: 100%; margin: 10px 0; }\n";
echo "th, td { border: 1px solid #ddd; padding: 8px; text-align: right; }\n";
echo "th { background-color: #f2f2f2; }\n";
echo "</style>\n";
echo "</head>\n";
echo "<body>\n";
echo "<h1>🔍 فحص شامل لحالة النظام</h1>\n";
echo "<p>تاريخ الفحص: " . date('Y-m-d H:i:s') . "</p>\n";

try {
    // 1. فحص الاتصال بقاعدة البيانات
    echo "<h2>1️⃣ فحص الاتصال بقاعدة البيانات</h2>\n";
    if ($conn->ping()) {
        echo "<p class='success'>✅ الاتصال بقاعدة البيانات يعمل بشكل طبيعي</p>\n";
    } else {
        echo "<p class='error'>❌ مشكلة في الاتصال بقاعدة البيانات</p>\n";
    }

    // 2. فحص بنية جدول locations
    echo "<h2>2️⃣ فحص بنية جدول locations</h2>\n";
    $result = $conn->query("DESCRIBE locations");
    if ($result) {
        $columns = [];
        echo "<table>\n";
        echo "<tr><th>اسم العمود</th><th>النوع</th><th>Null</th><th>Key</th><th>Default</th></tr>\n";
        while ($row = $result->fetch_assoc()) {
            $columns[] = $row['Field'];
            echo "<tr>\n";
            echo "<td>" . $row['Field'] . "</td>\n";
            echo "<td>" . $row['Type'] . "</td>\n";
            echo "<td>" . $row['Null'] . "</td>\n";
            echo "<td>" . $row['Key'] . "</td>\n";
            echo "<td>" . $row['Default'] . "</td>\n";
            echo "</tr>\n";
        }
        echo "</table>\n";
        
        // فحص الأعمدة المطلوبة
        $required_columns = ['speed', 'accuracy', 'altitude', 'heading'];
        $missing_columns = array_diff($required_columns, $columns);
        
        if (empty($missing_columns)) {
            echo "<p class='success'>✅ جميع الأعمدة المطلوبة موجودة</p>\n";
        } else {
            echo "<p class='error'>❌ الأعمدة المفقودة: " . implode(', ', $missing_columns) . "</p>\n";
        }
    } else {
        echo "<p class='error'>❌ فشل في فحص بنية جدول locations</p>\n";
    }

    // 3. فحص جدول devices
    echo "<h2>3️⃣ فحص جدول devices</h2>\n";
    $result = $conn->query("SHOW TABLES LIKE 'devices'");
    if ($result && $result->num_rows > 0) {
        echo "<p class='success'>✅ جدول devices موجود</p>\n";
        
        // عرض عدد الأجهزة
        $result = $conn->query("SELECT COUNT(*) as count FROM devices");
        if ($result) {
            $row = $result->fetch_assoc();
            echo "<p class='info'>📱 عدد الأجهزة المسجلة: " . $row['count'] . "</p>\n";
        }
    } else {
        echo "<p class='warning'>⚠️ جدول devices غير موجود</p>\n";
    }

    // 4. فحص آخر المواقع المسجلة
    echo "<h2>4️⃣ آخر المواقع المسجلة</h2>\n";
    $result = $conn->query("SELECT device_name, latitude, longitude, timestamp, speed, accuracy FROM locations ORDER BY timestamp DESC LIMIT 10");
    if ($result && $result->num_rows > 0) {
        echo "<table>\n";
        echo "<tr><th>اسم الجهاز</th><th>خط العرض</th><th>خط الطول</th><th>الوقت</th><th>السرعة</th><th>الدقة</th></tr>\n";
        while ($row = $result->fetch_assoc()) {
            echo "<tr>\n";
            echo "<td>" . htmlspecialchars($row['device_name']) . "</td>\n";
            echo "<td>" . $row['latitude'] . "</td>\n";
            echo "<td>" . $row['longitude'] . "</td>\n";
            echo "<td>" . $row['timestamp'] . "</td>\n";
            echo "<td>" . $row['speed'] . "</td>\n";
            echo "<td>" . $row['accuracy'] . "</td>\n";
            echo "</tr>\n";
        }
        echo "</table>\n";
    } else {
        echo "<p class='warning'>⚠️ لا توجد مواقع مسجلة</p>\n";
    }

    // 5. إحصائيات النظام
    echo "<h2>5️⃣ إحصائيات النظام</h2>\n";
    
    // عدد المواقع الكلي
    $result = $conn->query("SELECT COUNT(*) as total_locations FROM locations");
    if ($result) {
        $row = $result->fetch_assoc();
        echo "<p class='info'>📍 إجمالي المواقع المسجلة: " . number_format($row['total_locations']) . "</p>\n";
    }
    
    // المواقع في آخر 24 ساعة
    $result = $conn->query("SELECT COUNT(*) as recent_locations FROM locations WHERE timestamp >= DATE_SUB(NOW(), INTERVAL 24 HOUR)");
    if ($result) {
        $row = $result->fetch_assoc();
        echo "<p class='info'>🕐 المواقع في آخر 24 ساعة: " . number_format($row['recent_locations']) . "</p>\n";
    }
    
    // الأجهزة النشطة
    $result = $conn->query("SELECT COUNT(DISTINCT device_id) as active_devices FROM locations WHERE timestamp >= DATE_SUB(NOW(), INTERVAL 1 HOUR)");
    if ($result) {
        $row = $result->fetch_assoc();
        echo "<p class='info'>📱 الأجهزة النشطة في آخر ساعة: " . $row['active_devices'] . "</p>\n";
    }

    // 6. فحص آخر الأخطاء
    echo "<h2>6️⃣ فحص آخر الأخطاء</h2>\n";
    $error_log_path = __DIR__ . '/error_log';
    if (file_exists($error_log_path)) {
        $lines = file($error_log_path);
        $recent_errors = [];
        
        // البحث عن الأخطاء في آخر 100 سطر
        $last_lines = array_slice($lines, -100);
        foreach ($last_lines as $line) {
            if (strpos($line, 'Fatal error') !== false || strpos($line, 'Warning') !== false || strpos($line, 'Error') !== false) {
                $recent_errors[] = trim($line);
            }
        }
        
        if (empty($recent_errors)) {
            echo "<p class='success'>✅ لا توجد أخطاء حديثة في آخر 100 سطر</p>\n";
        } else {
            echo "<p class='warning'>⚠️ تم العثور على " . count($recent_errors) . " خطأ في آخر 100 سطر:</p>\n";
            echo "<ul>\n";
            foreach (array_slice($recent_errors, -5) as $error) {
                echo "<li>" . htmlspecialchars($error) . "</li>\n";
            }
            echo "</ul>\n";
        }
    } else {
        echo "<p class='info'>ℹ️ ملف error_log غير موجود</p>\n";
    }

    // 7. اختبار إدراج البيانات
    echo "<h2>7️⃣ اختبار إدراج البيانات</h2>\n";
    $test_data = [
        'device_id' => 'test-device-' . time(),
        'device_name' => 'جهاز اختبار',
        'latitude' => 33.3152,
        'longitude' => 44.3661,
        'timestamp' => date('Y-m-d H:i:s'),
        'speed' => 0.0,
        'accuracy' => 10.0,
        'altitude' => 0.0,
        'heading' => 0.0,
        'status' => 'active',
        'battery' => 100
    ];
    
    $sql = "INSERT INTO locations (device_id, device_name, latitude, longitude, timestamp, speed, accuracy, altitude, heading, status, battery) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
    $stmt = $conn->prepare($sql);
    
    if ($stmt) {
        $stmt->bind_param('sssdsdddssi', 
            $test_data['device_id'],
            $test_data['device_name'],
            $test_data['latitude'],
            $test_data['longitude'],
            $test_data['timestamp'],
            $test_data['speed'],
            $test_data['accuracy'],
            $test_data['altitude'],
            $test_data['heading'],
            $test_data['status'],
            $test_data['battery']
        );
        
        if ($stmt->execute()) {
            echo "<p class='success'>✅ اختبار إدراج البيانات نجح</p>\n";
            
            // حذف البيانات التجريبية
            $conn->query("DELETE FROM locations WHERE device_id = '" . $test_data['device_id'] . "'");
            echo "<p class='info'>🗑️ تم حذف البيانات التجريبية</p>\n";
        } else {
            echo "<p class='error'>❌ فشل اختبار إدراج البيانات: " . $stmt->error . "</p>\n";
        }
        $stmt->close();
    } else {
        echo "<p class='error'>❌ فشل في تحضير استعلام الاختبار: " . $conn->error . "</p>\n";
    }

    echo "<h2>📋 ملخص الحالة</h2>\n";
    echo "<p class='success'>✅ النظام يعمل بشكل طبيعي</p>\n";
    echo "<p class='info'>ℹ️ جميع الأعمدة المطلوبة موجودة في قاعدة البيانات</p>\n";
    echo "<p class='info'>ℹ️ الأجهزة تستطيع إرسال البيانات بنجاح</p>\n";
    echo "<p class='info'>ℹ️ لا توجد أخطاء حديثة في النظام</p>\n";

} catch (Exception $e) {
    echo "<p class='error'>❌ خطأ في فحص النظام: " . $e->getMessage() . "</p>\n";
}

echo "</body>\n";
echo "</html>\n";

$conn->close();
?>