<?php
session_start();

// حماية الملف: فقط المدير العام (Admin) يمكنه تشغيل الفحص
if (!isset($_SESSION['user_id']) || $_SESSION['role'] !== 'admin') {
    die("<div style='font-family:Cairo; text-align:center; padding:100px;'><h2>عذراً، هذا الملف للمديرين فقط.</h2><a href='dashboard.php'>العودة للرئيسية</a></div>");
}

require_once 'db.php';

// جلب بيانات المدير الحالي
$logged_user_id = $_SESSION['user_id'];

// إدارة اللغة
$lang = $_SESSION['lang'] ?? 'ar';
$is_ar = ($lang === 'ar');
$dir = $is_ar ? 'rtl' : 'ltr';

$message = '';
$error = '';

// --- [جديد]: معالجة طلبات الإصلاح التلقائي ---
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['repair_type'])) {
    $type = $_POST['repair_type'];
    try {
        if ($type === 'fix_duplicates') {
            // جلب أرقام الاشتراك المكررة
            $dups = $pdo->query("SELECT sub_no FROM customers GROUP BY sub_no HAVING COUNT(*) > 1 AND sub_no IS NOT NULL")->fetchAll(PDO::FETCH_COLUMN);
            foreach ($dups as $sub) {
                // جلب كل السجلات التي تحمل هذا الرقم
                $records = $pdo->prepare("SELECT id FROM customers WHERE sub_no = ?");
                $records->execute([$sub]);
                $i = 1;
                while ($row = $records->fetch()) {
                    // تحديث الرقم بإضافة لاحقة فريدة (مثل: 101-1, 101-2)
                    $new_sub = $sub . "-" . $i;
                    $upd = $pdo->prepare("UPDATE customers SET sub_no = ? WHERE id = ?");
                    $upd->execute([$new_sub, $row['id']]);
                    $i++;
                }
            }
            $message = "تمت معالجة التكرارات بنجاح وتوليد أرقام فريدة.";
        } 
        elseif ($type === 'assign_to_me') {
            // تعيين الموظف الحالي كمسؤول عن كل الزبائن الذين ليس لهم مسؤول
            $stmt = $pdo->prepare("UPDATE customers SET created_by = ? WHERE created_by IS NULL");
            $stmt->execute([$logged_user_id]);
            $count = $stmt->rowCount();
            $message = "تم ربط $count مشترك بحسابك الشخصي بنجاح.";
        }
    } catch (Exception $e) {
        $error = "فشل الإصلاح: " . $e->getMessage();
    }
}

// مصفوفة لتخزين نتائج الاختبارات
$tests = [];
$total_tests = 0;
$passed_tests = 0;

function addTest($category, $name, $status, $message, $repair_action = null) {
    global $tests, $passed_tests, $total_tests;
    $total_tests++;
    if ($status == 'success') $passed_tests++;
    $tests[] = [
        'category' => $category, 
        'name' => $name, 
        'status' => $status, 
        'message' => $message,
        'repair' => $repair_action
    ];
}

// --- 1. فحص بيئة السيرفر ---
addTest("البيئة", "إصدار PHP", "success", "إصدار السيرفر الحالي: " . PHP_VERSION);

// --- 2. فحص الاتصال ---
if ($pdo) {
    addTest("القاعدة", "الاتصال بقاعدة البيانات", "success", "تم الاتصال بنجاح.");
} else {
    addTest("القاعدة", "الاتصال بقاعدة البيانات", "error", "فشل الاتصال! يرجى فحص db.php.");
}

// --- 3. فحص الجداول ---
$required_tables = ['users', 'customers', 'bills', 'expenses', 'monthly_pricing', 'meter_readings'];
foreach ($required_tables as $table) {
    $check = $pdo->query("SHOW TABLES LIKE '$table'")->rowCount();
    if ($check > 0) {
        addTest("الجداول", "جدول [$table]", "success", "موجود.");
    } else {
        addTest("الجداول", "جدول [$table]", "error", "مفقود!");
    }
}

// --- 4. فحص الأعمدة المضافة حديثاً مع إصلاح هيكلي تلقائي ---
$column_checks = [
    'users' => ['permissions', 'is_primary'],
    'customers' => ['sub_no', 'box_no', 'created_by', 'is_exempt'],
    'expenses' => ['created_by']
];

foreach ($column_checks as $table => $columns) {
    foreach ($columns as $column) {
        $check = $pdo->query("SHOW COLUMNS FROM `$table` LIKE '$column'")->rowCount();
        if ($check > 0) {
            addTest("الهيكل", "عمود [$column] في [$table]", "success", "موجود.");
        } else {
            try {
                if ($column == 'is_primary') $pdo->exec("ALTER TABLE `users` ADD COLUMN `is_primary` TINYINT(1) DEFAULT 0");
                if ($column == 'created_by') $pdo->exec("ALTER TABLE `$table` ADD COLUMN `created_by` INT NULL");
                if ($column == 'permissions') $pdo->exec("ALTER TABLE `users` ADD COLUMN `permissions` TEXT NULL");
                addTest("الهيكل", "عمود [$column] في [$table]", "warning", "تم إصلاح الهيكل تلقائياً.");
            } catch (Exception $e) {
                addTest("الهيكل", "عمود [$column] في [$table]", "error", "مفقود وفشل الإصلاح.");
            }
        }
    }
}

// --- 5. فحص جودة البيانات (Data Integrity) مع خيارات الإصلاح ---
try {
    // فحص أرقام الاشتراك المكررة
    $dup_subs = $pdo->query("SELECT COUNT(*) FROM (SELECT sub_no FROM customers GROUP BY sub_no HAVING COUNT(*) > 1 AND sub_no IS NOT NULL) as t")->fetchColumn();
    if ($dup_subs == 0) {
        addTest("جودة البيانات", "تكرار أرقام الاشتراك", "success", "لا توجد أرقام مكررة.");
    } else {
        addTest("جودة البيانات", "تكرار أرقام الاشتراك", "warning", "يوجد $dup_subs أرقام مكررة.", "fix_duplicates");
    }

    // فحص تبعية المشتركين (المشتركين بدون موظف مسؤول)
    $no_creator = $pdo->query("SELECT COUNT(*) FROM customers WHERE created_by IS NULL")->fetchColumn();
    if ($no_creator == 0) {
        addTest("جودة البيانات", "تبعية المشتركين", "success", "جميع المشتركين مرتبطين بموظف.");
    } else {
        addTest("جودة البيانات", "تبعية المشتركين", "warning", "يوجد $no_creator مشترك بدون مسؤول.", "assign_to_me");
    }
} catch (Exception $e) {}

$score = $total_tests > 0 ? round(($passed_tests / $total_tests) * 100) : 0;
?>

<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>تشخيص وإصلاح النظام | أسامة إلكتريك</title>
    <script src="https://cdn.tailwindcss.com"></script>
    <link href="https://fonts.googleapis.com/css2?family=Cairo:wght@400;600;700;900&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        body { font-family: 'Cairo', sans-serif; background-color: #f1f5f9; }
        .score-circle { 
            background: conic-gradient(#10b981 <?= $score ?>%, #e2e8f0 0);
            border-radius: 50%; width: 100px; height: 100px; display: flex; align-items: center; justify-content: center;
        }
    </style>
</head>
<body class="pb-12 text-slate-800">

    <div class="container mx-auto px-4 py-8 max-w-5xl">
        <!-- Header -->
        <div class="bg-white p-8 rounded-[2.5rem] shadow-sm mb-8 flex flex-col md:flex-row justify-between items-center gap-6 border border-slate-100">
            <div class="flex items-center gap-5">
                <div class="w-16 h-16 bg-slate-900 text-white rounded-2xl flex items-center justify-center text-3xl shadow-xl italic font-black">ST</div>
                <div>
                    <h1 class="text-2xl font-black text-slate-800 italic">مركز الصيانة الذكي</h1>
                    <p class="text-sm text-slate-400 font-bold">System Diagnostics & Auto-Repair v3.0</p>
                </div>
            </div>
            
            <div class="flex items-center gap-4 bg-slate-50 p-4 rounded-3xl border border-slate-100">
                <div class="score-circle">
                    <div class="w-20 h-20 bg-white rounded-full flex flex-col items-center justify-center shadow-inner">
                        <span class="text-xl font-black text-slate-800"><?= $score ?>%</span>
                    </div>
                </div>
                <div>
                    <h4 class="font-black text-slate-700 italic">سلامة النظام</h4>
                    <p class="text-[10px] font-bold text-slate-400"><?= $passed_tests ?> / <?= $total_tests ?> اختبارات ناجحة</p>
                </div>
            </div>
        </div>

        <?php if($message): ?>
            <div class="bg-emerald-500 text-white p-5 rounded-2xl mb-8 font-black shadow-lg flex items-center gap-3 italic">
                <i class="fas fa-magic"></i> <?= $message ?>
            </div>
        <?php endif; ?>

        <!-- Results Table -->
        <div class="bg-white rounded-[2.5rem] shadow-sm border border-slate-100 overflow-hidden">
            <div class="p-8 bg-slate-50 border-b border-slate-100 flex justify-between items-center">
                <h3 class="font-black italic text-slate-700">نتائج الفحص وخيارات الإصلاح:</h3>
                <button onclick="window.location.reload()" class="bg-blue-600 text-white px-6 py-2 rounded-xl font-black text-xs shadow-lg italic">تحديث الفحص</button>
            </div>
            <div class="overflow-x-auto">
                <table class="w-full text-right font-bold italic">
                    <thead class="bg-slate-50 text-slate-400 text-[10px] font-black uppercase tracking-widest border-b">
                        <tr>
                            <th class="p-6">الفئة</th>
                            <th class="p-6">الاختبار</th>
                            <th class="p-6">الحالة والرسالة</th>
                            <th class="p-6 text-center">الإجراء المتاح</th>
                        </tr>
                    </thead>
                    <tbody class="divide-y divide-slate-50">
                        <?php foreach ($tests as $test): ?>
                            <tr class="hover:bg-slate-50 transition">
                                <td class="p-6 text-[10px] text-slate-400 uppercase font-black"><?= $test['category'] ?></td>
                                <td class="p-6 text-slate-800 font-black"><?= $test['name'] ?></td>
                                <td class="p-6">
                                    <div class="flex items-center gap-2">
                                        <?php if ($test['status'] == 'success'): ?>
                                            <i class="fas fa-check-circle text-emerald-500"></i>
                                            <span class="text-xs text-slate-500"><?= $test['message'] ?></span>
                                        <?php elseif ($test['status'] == 'warning'): ?>
                                            <i class="fas fa-exclamation-triangle text-amber-500"></i>
                                            <span class="text-xs text-amber-600"><?= $test['message'] ?></span>
                                        <?php else: ?>
                                            <i class="fas fa-times-circle text-rose-500"></i>
                                            <span class="text-xs text-rose-600"><?= $test['message'] ?></span>
                                        <?php endif; ?>
                                    </div>
                                </td>
                                <td class="p-6 text-center">
                                    <?php if ($test['repair']): ?>
                                        <form method="POST">
                                            <input type="hidden" name="repair_type" value="<?= $test['repair'] ?>">
                                            <button type="submit" class="bg-emerald-500 hover:bg-black text-white px-4 py-1.5 rounded-lg text-[10px] font-black shadow-sm transition">
                                                تنفيذ إصلاح ذكي <i class="fas fa-tools ms-1"></i>
                                            </button>
                                        </form>
                                    <?php else: ?>
                                        <span class="text-[9px] text-slate-300 font-black uppercase tracking-tighter">لا يتطلب إجراء</span>
                                    <?php endif; ?>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        </div>

        <div class="mt-8 flex justify-center">
            <a href="dashboard.php" class="bg-slate-900 text-white px-12 py-4 rounded-3xl font-black shadow-2xl hover:bg-blue-600 transition italic">
                العودة للوحة التحكم
            </a>
        </div>
    </div>

</body>
</html>