<?php

namespace App\Console\Commands;

use App\Services\System\SystemHealthCheckService;
use Illuminate\Console\Command;

class DwDoctorCommand extends Command
{
    protected $signature = 'dw:doctor {--errors-only : Sadece hata ve uyarıları göster}';

    protected $description = 'DW Ads Reporter kurulum ve sistem sağlığı kontrollerini çalıştırır.';

    public function handle(SystemHealthCheckService $health): int
    {
        $groups = $health->groupedChecks();
        $summary = $health->summary();

        $this->info('DW Ads Reporter sistem kontrolü');
        $this->line('Toplam: '.$summary['total'].' | OK: '.$summary['ok'].' | Uyarı: '.$summary['warning'].' | Hata: '.$summary['error'].' | Bilgi: '.$summary['info']);
        $this->newLine();

        foreach ($groups as $groupName => $checks) {
            $rows = [];

            foreach ($checks as $check) {
                if ($this->option('errors-only') && in_array($check['status'], ['ok', 'info'], true)) {
                    continue;
                }

                $rows[] = [
                    strtoupper($check['status']),
                    $check['title'],
                    $check['message'],
                    $check['hint'] ?? '',
                ];
            }

            if (empty($rows)) {
                continue;
            }

            $this->line('<comment>'.$groupName.'</comment>');
            $this->table(['Durum', 'Kontrol', 'Sonuç', 'Not'], $rows);
        }

        if ($summary['error'] > 0) {
            return self::FAILURE;
        }

        return self::SUCCESS;
    }
}
