<?php
/**
 * Fix IoT System - Complete Database Update
 * يصلح جميع مشاكل قاعدة البيانات دفعة واحدة
 */

error_reporting(E_ALL);
ini_set('display_errors', 1);

require_once '../config/database.php';

?>
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>إصلاح نظام IoT</title>
    <link href="https://fonts.googleapis.com/css2?family=Tajawal:wght@400;600;700&display=swap" rel="stylesheet">
    <style>
        * { font-family: 'Tajawal', sans-serif; margin: 0; padding: 0; box-sizing: border-box; }
        body { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; padding: 20px; }
        .container { max-width: 900px; margin: 0 auto; background: white; border-radius: 20px; padding: 40px; box-shadow: 0 20px 60px rgba(0,0,0,0.3); }
        h1 { color: #1f2937; margin-bottom: 10px; font-size: 2.5rem; }
        .subtitle { color: #6b7280; margin-bottom: 30px; font-size: 1.1rem; }
        .step { background: #f9fafb; border-radius: 15px; padding: 20px; margin: 15px 0; border-right: 5px solid #667eea; }
        .step-title { font-size: 1.3rem; font-weight: 700; color: #1f2937; margin-bottom: 10px; }
        .success { background: #d1fae5; border-color: #10b981; color: #065f46; }
        .error { background: #fee2e2; border-color: #ef4444; color: #991b1b; }
        .warning { background: #fef3c7; border-color: #f59e0b; color: #92400e; }
        .info { background: #dbeafe; border-color: #3b82f6; color: #1e40af; }
        .icon { font-size: 1.5rem; margin-left: 10px; }
        .btn { display: inline-block; padding: 15px 30px; background: linear-gradient(135deg, #667eea, #764ba2); color: white; text-decoration: none; border-radius: 10px; margin-top: 20px; font-weight: bold; font-size: 1.1rem; transition: transform 0.3s; }
        .btn:hover { transform: scale(1.05); }
        .code { background: #1f2937; color: #10b981; padding: 15px; border-radius: 10px; margin: 10px 0; font-family: 'Courier New', monospace; overflow-x: auto; }
        .progress { background: #e5e7eb; height: 30px; border-radius: 15px; overflow: hidden; margin: 20px 0; }
        .progress-bar { background: linear-gradient(90deg, #10b981, #059669); height: 100%; transition: width 0.5s; display: flex; align-items: center; justify-content: center; color: white; font-weight: bold; }
    </style>
</head>
<body>
<div class="container">
    <h1>🔧 إصلاح نظام IoT الشامل</h1>
    <p class="subtitle">سيتم فحص وإصلاح جميع مشاكل قاعدة البيانات تلقائياً</p>
    
    <div class="progress">
        <div class="progress-bar" id="progressBar" style="width: 0%">0%</div>
    </div>

<?php

$steps = 0;
$total_steps = 5;

function updateProgress($current, $total) {
    $percent = round(($current / $total) * 100);
    echo "<script>
        document.getElementById('progressBar').style.width = '{$percent}%';
        document.getElementById('progressBar').textContent = '{$percent}%';
    </script>";
    flush();
    ob_flush();
}

try {
    $database = new Database();
    $db = $database->getConnection();
    
    if (!$db) {
        throw new Exception('فشل الاتصال بقاعدة البيانات');
    }
    
    // Step 1: Check iot_devices table
    echo "<div class='step info'>";
    echo "<div class='step-title'><span class='icon'>1️⃣</span>فحص جدول iot_devices</div>";
    
    $check_table = $db->query("SHOW TABLES LIKE 'iot_devices'");
    if ($check_table->rowCount() == 0) {
        echo "<p>❌ الجدول غير موجود - يجب تشغيل run_iot_setup.php أولاً</p>";
        echo "</div>";
        throw new Exception('جدول iot_devices غير موجود');
    }
    
    echo "<p>✅ الجدول موجود</p>";
    echo "</div>";
    $steps++;
    updateProgress($steps, $total_steps);
    
    // Step 2: Add missing columns to iot_devices
    echo "<div class='step'>";
    echo "<div class='step-title'><span class='icon'>2️⃣</span>إضافة الأعمدة المفقودة</div>";
    
    $columns_query = $db->query("SHOW COLUMNS FROM iot_devices");
    $existing_columns = $columns_query->fetchAll(PDO::FETCH_COLUMN);
    
    $added_columns = [];
    
    if (!in_array('status', $existing_columns)) {
        $db->exec("ALTER TABLE iot_devices ADD COLUMN status ENUM('online', 'offline') DEFAULT 'offline' AFTER ip_address");
        $added_columns[] = 'status';
        echo "<p>✅ تم إضافة عمود 'status'</p>";
    }
    
    if (!in_array('port', $existing_columns)) {
        $db->exec("ALTER TABLE iot_devices ADD COLUMN port INT DEFAULT 80 AFTER ip_address");
        $added_columns[] = 'port';
        echo "<p>✅ تم إضافة عمود 'port'</p>";
    }
    
    if (empty($added_columns)) {
        echo "<p class='warning'>⚠️ جميع الأعمدة موجودة بالفعل</p>";
    } else {
        echo "<p class='success'>✅ تم إضافة " . count($added_columns) . " عمود جديد</p>";
    }
    
    echo "</div>";
    $steps++;
    updateProgress($steps, $total_steps);
    
    // Step 3: Update existing records
    echo "<div class='step'>";
    echo "<div class='step-title'><span class='icon'>3️⃣</span>تحديث السجلات الموجودة</div>";
    
    $updated = 0;
    
    $stmt = $db->exec("UPDATE iot_devices SET status = 'offline' WHERE status IS NULL");
    $updated += $stmt;
    
    $stmt = $db->exec("UPDATE iot_devices SET port = 80 WHERE port IS NULL OR port = 0");
    $updated += $stmt;
    
    echo "<p>✅ تم تحديث {$updated} سجل</p>";
    echo "</div>";
    $steps++;
    updateProgress($steps, $total_steps);
    
    // Step 4: Update iot_logs table
    echo "<div class='step'>";
    echo "<div class='step-title'><span class='icon'>4️⃣</span>تحديث جدول iot_logs</div>";
    
    $check_logs = $db->query("SHOW TABLES LIKE 'iot_logs'");
    if ($check_logs->rowCount() > 0) {
        $logs_columns = $db->query("SHOW COLUMNS FROM iot_logs");
        $logs_existing = $logs_columns->fetchAll(PDO::FETCH_COLUMN);
        
        if (!in_array('gpio', $logs_existing)) {
            $db->exec("ALTER TABLE iot_logs ADD COLUMN gpio INT AFTER device_id");
            echo "<p>✅ تم إضافة عمود 'gpio'</p>";
        }
        
        if (!in_array('state', $logs_existing)) {
            $db->exec("ALTER TABLE iot_logs ADD COLUMN state TINYINT DEFAULT 0 AFTER gpio");
            echo "<p>✅ تم إضافة عمود 'state'</p>";
        }
        
        echo "<p class='success'>✅ جدول iot_logs محدث</p>";
    } else {
        echo "<p class='warning'>⚠️ جدول iot_logs غير موجود</p>";
    }
    
    echo "</div>";
    $steps++;
    updateProgress($steps, $total_steps);
    
    // Step 5: Add indexes
    echo "<div class='step'>";
    echo "<div class='step-title'><span class='icon'>5️⃣</span>إضافة الفهارس للأداء</div>";
    
    try {
        $db->exec("ALTER TABLE iot_devices ADD INDEX idx_status (status)");
        echo "<p>✅ تم إضافة فهرس status</p>";
    } catch (Exception $e) {
        echo "<p class='warning'>⚠️ فهرس status موجود بالفعل</p>";
    }
    
    try {
        $db->exec("ALTER TABLE iot_logs ADD INDEX idx_device_gpio (device_id, gpio)");
        echo "<p>✅ تم إضافة فهرس device_gpio</p>";
    } catch (Exception $e) {
        echo "<p class='warning'>⚠️ فهرس device_gpio موجود بالفعل</p>";
    }
    
    echo "</div>";
    $steps++;
    updateProgress($steps, $total_steps);
    
    // Final Summary
    echo "<div class='step success'>";
    echo "<div class='step-title'><span class='icon'>🎉</span>اكتمل الإصلاح بنجاح!</div>";
    echo "<p><strong>تم تنفيذ جميع الخطوات بنجاح</strong></p>";
    echo "<p>✅ جدول iot_devices محدث</p>";
    echo "<p>✅ جدول iot_logs محدث</p>";
    echo "<p>✅ جميع الفهارس مضافة</p>";
    echo "<p>✅ السجلات الموجودة محدثة</p>";
    echo "</div>";
    
    // Show current structure
    echo "<div class='step info'>";
    echo "<div class='step-title'><span class='icon'>📊</span>هيكل الجدول النهائي</div>";
    echo "<div class='code'>";
    $final_cols = $db->query("SHOW COLUMNS FROM iot_devices");
    while ($col = $final_cols->fetch(PDO::FETCH_ASSOC)) {
        echo htmlspecialchars($col['Field']) . " - " . htmlspecialchars($col['Type']) . "<br>";
    }
    echo "</div>";
    echo "</div>";
    
    echo "<a href='../admin/iot/index.php' class='btn'>🚀 الذهاب إلى لوحة التحكم IoT</a>";
    echo " ";
    echo "<a href='../admin/iot/devices.php' class='btn' style='background: linear-gradient(135deg, #10b981, #059669);'>➕ إضافة جهاز جديد</a>";
    
} catch (Exception $e) {
    echo "<div class='step error'>";
    echo "<div class='step-title'><span class='icon'>❌</span>حدث خطأ</div>";
    echo "<p><strong>الخطأ:</strong> " . htmlspecialchars($e->getMessage()) . "</p>";
    echo "<div class='code'>" . htmlspecialchars($e->getTraceAsString()) . "</div>";
    echo "</div>";
    
    echo "<a href='run_iot_setup.php' class='btn' style='background: linear-gradient(135deg, #f59e0b, #d97706);'>🔄 تشغيل الإعداد الأساسي</a>";
}

?>

</div>
</body>
</html>
