<?php
/**
 * بررسی کامل سیستم
 * این فایل تمام فایل‌ها و توابع را بررسی می‌کند
 */

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

echo "<!DOCTYPE html>
<html lang='fa' dir='rtl'>
<head>
    <meta charset='UTF-8'>
    <title>بررسی کامل سیستم</title>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        body { padding: 20px; background: #f5f7fa; }
        .card { margin-bottom: 20px; }
        .success { color: green; }
        .error { color: red; }
        .warning { color: orange; }
    </style>
</head>
<body>
    <div class='container'>
        <h1 class='mb-4'>بررسی کامل سیستم</h1>";

$errors = [];
$warnings = [];
$success = [];

// 1. بررسی config.php
echo "<div class='card'><div class='card-header'><h5>1. بررسی config.php</h5></div><div class='card-body'>";
try {
    require_once 'config.php';
    $success[] = "config.php لود شد";
    
    // بررسی توابع
    $functions = ['hashPassword', 'verifyPassword', 'isLoggedIn', 'isAdmin', 'isRepresentative', 
                  'updateRepresentativeActivity', 'redirect', 'setMessage', 'getMessage'];
    foreach ($functions as $func) {
        if (function_exists($func)) {
            $success[] = "تابع $func موجود است";
        } else {
            $errors[] = "تابع $func موجود نیست";
        }
    }
    
    // بررسی متغیرها
    if (isset($pdo)) {
        $success[] = "اتصال به دیتابیس موفق";
    } else {
        $errors[] = "اتصال به دیتابیس ناموفق";
    }
    
} catch (Exception $e) {
    $errors[] = "خطا در config.php: " . $e->getMessage();
}
echo "</div></div>";

// 2. بررسی فایل‌های اصلی
echo "<div class='card'><div class='card-header'><h5>2. بررسی فایل‌های اصلی</h5></div><div class='card-body'>";
$main_files = [
    'index.php',
    'login.php',
    'logout.php',
    'admin/dashboard.php',
    'admin/panels.php',
    'admin/representatives.php',
    'representative/dashboard.php',
    'representative/users.php',
    'api/XrayAPI.php',
    'includes/header.php',
    'includes/footer.php'
];

foreach ($main_files as $file) {
    if (file_exists($file)) {
        $syntax = shell_exec("php -l $file 2>&1");
        if (strpos($syntax, 'No syntax errors') !== false) {
            $success[] = "$file - Syntax صحیح";
        } else {
            $errors[] = "$file - خطای Syntax: " . htmlspecialchars($syntax);
        }
    } else {
        $errors[] = "$file - فایل موجود نیست";
    }
}
echo "</div></div>";

// 3. بررسی جداول دیتابیس
echo "<div class='card'><div class='card-header'><h5>3. بررسی جداول دیتابیس</h5></div><div class='card-body'>";
if (isset($pdo)) {
    $tables = ['panels', 'representatives', 'reseller_users', 'admins', 
               'representative_inbounds', 'representative_logs'];
    foreach ($tables as $table) {
        try {
            $result = $pdo->query("SHOW TABLES LIKE '$table'");
            if ($result->rowCount() > 0) {
                $success[] = "جدول $table موجود است";
                
                // بررسی فیلدهای مهم
                if ($table === 'representatives') {
                    $columns = $pdo->query("SHOW COLUMNS FROM $table")->fetchAll(PDO::FETCH_COLUMN);
                    $required = ['traffic_limit', 'used_traffic', 'expiry_date', 'last_activity'];
                    foreach ($required as $col) {
                        if (in_array($col, $columns)) {
                            $success[] = "  ✓ فیلد $col در جدول $table موجود است";
                        } else {
                            $warnings[] = "  ⚠ فیلد $col در جدول $table موجود نیست";
                        }
                    }
                }
            } else {
                $errors[] = "جدول $table موجود نیست";
            }
        } catch (Exception $e) {
            $errors[] = "خطا در بررسی جدول $table: " . $e->getMessage();
        }
    }
} else {
    $errors[] = "اتصال به دیتابیس برقرار نیست";
}
echo "</div></div>";

// 4. بررسی مسیرها
echo "<div class='card'><div class='card-header'><h5>4. بررسی مسیرها</h5></div><div class='card-body'>";
$path_checks = [
    'admin/dashboard.php' => '../config.php',
    'representative/dashboard.php' => '../config.php',
    'includes/header.php' => '../config.php',
];

foreach ($path_checks as $file => $expected_path) {
    if (file_exists($file)) {
        $content = file_get_contents($file);
        if (strpos($content, $expected_path) !== false) {
            $success[] = "$file از مسیر صحیح استفاده می‌کند";
        } else {
            $warnings[] = "$file ممکن است از مسیر اشتباه استفاده کند";
        }
    }
}
echo "</div></div>";

// نمایش نتایج
echo "<div class='card'><div class='card-header'><h5>خلاصه نتایج</h5></div><div class='card-body'>";
echo "<h6 class='success'>موفقیت‌ها (" . count($success) . ")</h6><ul>";
foreach ($success as $msg) {
    echo "<li class='success'>✓ $msg</li>";
}
echo "</ul>";

if (!empty($warnings)) {
    echo "<h6 class='warning'>هشدارها (" . count($warnings) . ")</h6><ul>";
    foreach ($warnings as $msg) {
        echo "<li class='warning'>⚠ $msg</li>";
    }
    echo "</ul>";
}

if (!empty($errors)) {
    echo "<h6 class='error'>خطاها (" . count($errors) . ")</h6><ul>";
    foreach ($errors as $msg) {
        echo "<li class='error'>✗ $msg</li>";
    }
    echo "</ul>";
} else {
    echo "<div class='alert alert-success'><strong>✓ همه چیز درست است!</strong></div>";
}
echo "</div></div>";

echo "</div></body></html>";
?>
