<?php

declare(strict_types=1);

namespace App\Domain\MailServer\Adapters;

use App\Domain\Sysapi\Contracts\SysapiBridge;
use Illuminate\Support\Facades\Log;

/**
 * Null adapter — mail gönderimini devre dışı bırakır.
 *
 * SADECE TEST/DEV: tüm gönderimler log'a yazılır, gerçek mail gitmez.
 * Production'da KULLANILMAZ — admin parola sıfırlama, fatura, 2FA setup
 * gibi kritik akışlar bozulur. UI'da kırmızı uyarı ile gösterilir.
 */
class NoneAdapter extends AbstractMailServerAdapter
{
    public function __construct(?SysapiBridge $sysapi = null)
    {
        if ($sysapi) {
            parent::__construct($sysapi);
        }
    }

    public function name(): string
    {
        return 'Devre Dışı (sadece log)';
    }

    public function key(): string
    {
        return 'none';
    }

    public function description(): string
    {
        return 'SADECE TEST ortamı için. Mail gönderimini devre dışı bırakır, "gönderilen" maillerin '
            . 'içeriği log\'a yazılır. Production\'da kritik akışları bozar.';
    }

    public function packageName(): string
    {
        return '';
    }

    public function serviceName(): string
    {
        return '';
    }

    public function strengths(): array
    {
        return [
            'Mail trafiği yok (DDoS önleme test)',
            'Dev makinede istem dışı mail gönderme önlenir',
            'Log\'da görmek için yeterli',
            '⚠ Production\'da KULLANMAYIN',
        ];
    }

    public function performanceScore(): int
    {
        return 0;  // Mail göndermez = performance yok
    }

    public function isInstalled(): bool
    {
        return true;  // Her zaman mevcut (driver-level)
    }

    public function isRunning(): bool
    {
        return true;
    }

    public function isEnabled(): bool
    {
        return true;
    }

    public function version(): string
    {
        return 'log-driver';
    }

    public function install(): array
    {
        return ['ok' => true, 'output' => 'Devre dışı driver kurulum gerektirmez.'];
    }

    public function uninstall(): array
    {
        return ['ok' => true, 'output' => '—'];
    }

    public function start(): void {}
    public function stop(): void {}
    public function reload(): void {}
    public function restart(): void {}
    public function enable(): void {}
    public function disable(): void {}

    public function sendTestMail(string $to, string $from): void
    {
        Log::channel('single')->info('[MAIL DISABLED] Test mail simulated', [
            'to' => $to,
            'from' => $from,
            'sent_at' => now()->toIso8601String(),
        ]);
    }

    public function laravelConfig(): array
    {
        return [
            'mailer' => 'log',
            'host' => null,
            'port' => null,
        ];
    }
}
