<?php
/**
 * فحص التثبيت - يتحقق من اكتمال إعداد النظام
 * احذف أو أعد تسمية هذا الملف بعد التثبيت لأسباب أمنية
 */

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

$checks = [];
$allOk = true;

// 1. PHP
$checks['php'] = [
    'name' => 'إصدار PHP',
    'ok' => version_compare(PHP_VERSION, '7.4', '>='),
    'msg' => PHP_VERSION
];

// 2. config.php
$configExists = file_exists(__DIR__ . '/config.php');
$runSetup = isset($_POST['run_setup']) || isset($_GET['run_setup']);
$setupResult = null;

if ($configExists) {
    require_once __DIR__ . '/config.php';
    if ($runSetup && isset($conn) && !$conn->connect_error) {
        $sqlFile = __DIR__ . '/database.sql';
        if (file_exists($sqlFile)) {
            $sql = file_get_contents($sqlFile);
            // إزالة CREATE DATABASE (قد يمتد لعدة أسطر) و USE
            $sql = preg_replace('/CREATE DATABASE\s+[^;]+;/s', '', $sql);
            $sql = preg_replace('/USE\s+maintenance_db\s*;/i', '', $sql);
            if ($conn->multi_query($sql)) {
                while ($conn->more_results() && $conn->next_result()) {;}
            }
            $setupResult = $conn->error ? ['ok' => false, 'msg' => $conn->error] : ['ok' => true, 'msg' => 'تم إنشاء الجداول بنجاح'];
        }
    }
}

$checks['config'] = [
    'name' => 'ملف config.php',
    'ok' => $configExists,
    'msg' => $configExists ? 'موجود' : 'مفقود - انسخ config.example.php'
];

// 3. Database connection
if ($configExists) {
    require_once __DIR__ . '/config.php';
    $dbOk = isset($conn) && !$conn->connect_error;
    $checks['database'] = [
        'name' => 'اتصال قاعدة البيانات',
        'ok' => $dbOk,
        'msg' => $dbOk ? 'متصل' : ($conn->connect_error ?? 'فشل')
    ];
    
    if ($dbOk) {
        // 4. Tables
        $tables = ['users', 'sectors', 'hospitals', 'clinics', 'devices', 'customers', 'governorates', 'companies', 'engineers'];
        $missing = [];
        foreach ($tables as $t) {
            $r = $conn->query("SHOW TABLES LIKE '$t'");
            if ($r->num_rows == 0) $missing[] = $t;
        }
        $checks['tables'] = [
            'name' => 'جداول قاعدة البيانات',
            'ok' => empty($missing),
            'msg' => empty($missing) ? 'جميع الجداول موجودة' : 'مفقود: ' . implode(', ', $missing)
        ];
        if (!empty($missing)) $allOk = false;
    } else {
        $allOk = false;
    }
} else {
    $checks['database'] = ['name' => 'اتصال قاعدة البيانات', 'ok' => false, 'msg' => 'يجب إنشاء config.php أولاً'];
    $checks['tables'] = ['name' => 'جداول قاعدة البيانات', 'ok' => false, 'msg' => '-'];
    $allOk = false;
    $dbOk = false;
}

// 5. uploads folder
$uploadsDir = __DIR__ . '/uploads';
$uploadsOk = is_dir($uploadsDir) || @mkdir($uploadsDir, 0755, true);
$checks['uploads'] = [
    'name' => 'مجلد uploads',
    'ok' => $uploadsOk && is_writable($uploadsDir),
    'msg' => $uploadsOk ? (is_writable($uploadsDir) ? 'جاهز' : 'بدون صلاحية كتابة') : 'لم يُنشأ'
];

// 6. Composer/PhpSpreadsheet
$spreadsheetOk = file_exists(__DIR__ . '/vendor/autoload.php');
$checks['excel'] = [
    'name' => 'تصدير Excel',
    'ok' => $spreadsheetOk,
    'msg' => $spreadsheetOk ? 'PhpSpreadsheet مثبت' : 'سيتم استخدام CSV - نفّذ composer install'
];
?>
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
    <meta charset="UTF-8">
    <?php include 'includes/favicon.php'; ?>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>فحص التثبيت - نظام صيانة</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="bg-light">
    <div class="container py-5">
        <div class="card shadow">
            <div class="card-header bg-primary text-white">
                <h4 class="mb-0"><i class="bi bi-gear"></i> فحص التثبيت - نظام صيانة الأجهزة</h4>
            </div>
            <div class="card-body">
                <?php if ($setupResult): ?>
                <div class="alert alert-<?= $setupResult['ok'] ? 'success' : 'danger' ?> mb-4">
                    <?= $setupResult['ok'] ? '✓ ' . $setupResult['msg'] . ' <a href="index.php">تسجيل الدخول</a>' : '✗ ' . htmlspecialchars($setupResult['msg']) ?>
                </div>
                <?php elseif ($allOk): ?>
                <div class="alert alert-success mb-4">
                    <strong>✓ التثبيت مكتمل.</strong> يمكنك <a href="index.php">تسجيل الدخول</a> الآن.
                </div>
                <?php else: ?>
                <div class="alert alert-warning mb-4">
                    <strong>يوجد مشكلات.</strong> راجع الدليل في <code>INSTALL.md</code>
                    <?php if (!empty($dbOk) && !empty($checks['tables']) && !$checks['tables']['ok']): ?>
                    <hr>
                    <p class="mb-2">الجداول غير موجودة. نفّذ <code>database.sql</code> من phpMyAdmin أو:</p>
                    <form method="post" class="d-inline">
                        <input type="hidden" name="run_setup" value="1">
                        <button type="submit" class="btn btn-primary btn-sm">إنشاء الجداول الآن</button>
                    </form>
                    <?php endif; ?>
                </div>
                <?php endif; ?>
                <table class="table table-bordered">
                    <thead><tr><th>الفحص</th><th>الحالة</th><th>التفاصيل</th></tr></thead>
                    <tbody>
                    <?php foreach ($checks as $c): ?>
                    <tr>
                        <td><?= htmlspecialchars($c['name']) ?></td>
                        <td><span class="badge bg-<?= $c['ok'] ? 'success' : 'danger' ?>"><?= $c['ok'] ? '✓' : '✗' ?></span></td>
                        <td><?= htmlspecialchars($c['msg']) ?></td>
                    </tr>
                    <?php endforeach; ?>
                    </tbody>
                </table>
                <div class="mt-4">
                    <a href="index.php" class="btn btn-primary">تسجيل الدخول</a>
                    <a href="INSTALL.md" class="btn btn-outline-secondary">دليل التثبيت</a>
                </div>
            </div>
        </div>
    </div>
</body>
</html>
