<?php
// লারাভেল বুটস্ট্র্যাপ
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';

// HTTP কার্নেল বাদ দিয়ে সরাসরি অ্যাপ্লিকেশন চালু
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$kernel->bootstrap();

echo "<h2>🛠 সিস্টেম ডায়াগনস্টিক টুল</h2>";

// 1. PHP তথ্য
echo "<h3>1. PHP ভার্সন</h3>";
echo PHP_VERSION . "<br>";

// 2. ডাটাবেস সংযোগ
echo "<h3>2. ডাটাবেস সংযোগ</h3>";
try {
    $db = $app->make('db');
    $pdo = $db->connection()->getPdo();
    echo "✅ সংযোগ সফল<br>";
    echo "ডাটাবেস: " . $db->connection()->getDatabaseName() . "<br>";
} catch (\Exception $e) {
    echo "❌ সংযোগ ব্যর্থ: " . $e->getMessage() . "<br>";
    echo "ফাইল: " . $e->getFile() . "<br>";
    echo "লাইন: " . $e->getLine() . "<br>";
}

// 3. টেবিল চেক
echo "<h3>3. টেবিল চেক</h3>";
$tables = ['incomes', 'expenses', 'members', 'users'];
foreach ($tables as $table) {
    try {
        $exists = $db->connection()->getSchemaBuilder()->hasTable($table);
        if ($exists) {
            $count = $db->connection()->table($table)->count();
            echo "✅ $table টেবিল আছে (রেকর্ড: $count)<br>";
        } else {
            echo "❌ $table টেবিল নেই<br>";
        }
    } catch (\Exception $e) {
        echo "❌ $table চেক করতে সমস্যা: " . $e->getMessage() . "<br>";
    }
}

// 4. ইনকাম মডেল
echo "<h3>4. ইনকাম মডেল</h3>";
try {
    if (class_exists('App\Models\Income')) {
        $incomeModel = new \App\Models\Income();
        echo "✅ ইনকাম মডেল লোড হয়েছে<br>";
        
        // রিলেশন চেক
        try {
            $first = \App\Models\Income::with(['receiver', 'creator'])->first();
            if ($first) {
                echo "✅ রিলেশন কাজ করছে<br>";
            } else {
                echo "⚠️ কোনো ডাটা নেই<br>";
            }
        } catch (\Exception $e) {
            echo "❌ রিলেশন error: " . $e->getMessage() . "<br>";
        }
    } else {
        echo "❌ ইনকাম মডেল নেই<br>";
    }
} catch (\Exception $e) {
    echo "❌ ইনকাম মডেল error: " . $e->getMessage() . "<br>";
}

// 5. ব্যয় মডেল
echo "<h3>5. ব্যয় মডেল</h3>";
try {
    if (class_exists('App\Models\Expense')) {
        echo "✅ ব্যয় মডেল লোড হয়েছে<br>";
    } else {
        echo "❌ ব্যয় মডেল নেই<br>";
    }
} catch (\Exception $e) {
    echo "❌ ব্যয় মডেল error: " . $e->getMessage() . "<br>";
}

// 6. ইউজার মডেল
echo "<h3>6. ইউজার মডেল</h3>";
try {
    if (class_exists('App\Models\User')) {
        $userCount = \App\Models\User::count();
        echo "✅ ইউজার মডেল লোড হয়েছে (মোট: $userCount)<br>";
    } else {
        echo "❌ ইউজার মডেল নেই<br>";
    }
} catch (\Exception $e) {
    echo "❌ ইউজার মডেল error: " . $e->getMessage() . "<br>";
}

// 7. .env ফাইল চেক
echo "<h3>7. .env ফাইল</h3>";
$envFile = __DIR__.'/../.env';
if (file_exists($envFile)) {
    echo "✅ .env ফাইল আছে<br>";
    // নিরাপদে .env পড়া (পাসওয়ার্ড ছাড়া)
    $env = file_get_contents($envFile);
    preg_match('/APP_ENV=(.*)/', $env, $matches);
    echo "APP_ENV: " . ($matches[1] ?? 'N/A') . "<br>";
    preg_match('/APP_DEBUG=(.*)/', $env, $matches);
    echo "APP_DEBUG: " . ($matches[1] ?? 'N/A') . "<br>";
} else {
    echo "❌ .env ফাইল নেই<br>";
}

// 8. স্টোরেজ পারমিশন
echo "<h3>8. স্টোরেজ পারমিশন</h3>";
$storagePath = __DIR__.'/../storage';
if (is_writable($storagePath)) {
    echo "✅ স্টোরেজ ফোল্ডার লেখাযোগ্য<br>";
} else {
    echo "❌ স্টোরেজ ফোল্ডার লেখাযোগ্য নয়<br>";
}

$logPath = __DIR__.'/../storage/logs';
if (is_writable($logPath)) {
    echo "✅ লগ ফোল্ডার লেখাযোগ্য<br>";
} else {
    echo "❌ লগ ফোল্ডার লেখাযোগ্য নয়<br>";
}

// 9. লারাভেল লগ
echo "<h3>9. সাম্প্রতিক লগ</h3>";
$logFile = __DIR__.'/../storage/logs/laravel.log';
if (file_exists($logFile)) {
    $logs = file($logFile);
    $lastLogs = array_slice($logs, -10);
    echo "<pre style='background:#f5f5f5; padding:10px; max-height:300px; overflow:auto'>";
    foreach ($lastLogs as $log) {
        // শুধু error লাইন দেখান
        if (strpos($log, 'ERROR') !== false || strpos($log, 'Exception') !== false) {
            echo htmlspecialchars($log) . "<br>";
        }
    }
    echo "</pre>";
} else {
    echo "লগ ফাইল নেই<br>";
}

echo "<hr>";
echo "<p>✅ ডায়াগনস্টিক সম্পন্ন</p>";
?>