<?php

namespace App\Http\Controllers\Admin;

use App\Core\Email\EmailManager;
use App\Http\Controllers\Controller;
use App\Models\Setting;
use App\Services\System\SystemHealthService;
use Illuminate\Http\Request;

/**
 * Kurulum-sonrası sistem sağlık paneli (PRC-869).
 * admin/system/health — yeşil/kırmızı kontroller + gerçek mail test gönderimi.
 */
class SystemHealthController extends Controller
{
    public function index(SystemHealthService $health)
    {
        $checks = $health->checks();

        return view('admin.system.health.index', [
            'checks' => $checks,
            'overall' => $health->overall($checks),
        ]);
    }

    /** Gerçek test e-postası gönderir (log-driver tuzağını + SMTP hatasını yakalar). */
    public function mailTest(Request $request, EmailManager $emailManager)
    {
        $admin = auth('admin')->user();
        $to = $admin?->email;

        if (! $to) {
            return back()->with('error', 'Yönetici e-postası bulunamadı.');
        }

        $fromEmail = Setting::getValue('mail_from_address', config('mail.from.address') ?? 'no-reply@localhost');
        $fromName = Setting::getValue('site_name', config('app.name', 'PROCP'));
        $html = '<p>PROCP sistem sağlık kontrolü — bu bir test e-postasıdır. Bu maili aldıysanız e-posta gönderimi çalışıyor.</p>';

        $result = $emailManager->sendEmail([
            'to' => $to,
            'subject' => 'PROCP — Test E-postası',
            'content' => strip_tags($html),
            'html_content' => $html,
            'from' => $fromEmail,
            'from_name' => $fromName,
            'is_html' => true,
        ]);

        if ($result['success'] ?? false) {
            return back()->with('success', "Test e-postası {$to} adresine gönderildi. Gelen kutunuzu (ve spam'i) kontrol edin.");
        }

        return back()->with('error', 'Gönderim başarısız: '.($result['error'] ?? 'bilinmeyen hata'));
    }
}
