<?php
namespace App\Services\Contest;

/**
 * Resolve informações DXCC de um indicativo via arquivo cty.dat.
 * O caminho é lido de config('contest.cty_dat') — nunca hardcoded.
 *
 * TODO Fase 2: migrar a lógica completa de dxccdat.php / pontosqso.php
 */
class DxccResolver
{
    private array $prefixos = [];
    private bool  $carregado = false;

    public function resolver(string $callsign): ?array
    {
        if (!$this->carregado) {
            $this->carregar();
        }
        $callsign = strtoupper(trim($callsign));
        for ($len = strlen($callsign); $len > 0; $len--) {
            $pfx = substr($callsign, 0, $len);
            if (isset($this->prefixos[$pfx])) {
                return $this->prefixos[$pfx];
            }
        }
        return null;
    }

    private function carregar(): void
    {
        $path = config('contest.cty_dat');
        if (!file_exists($path)) {
            throw new \RuntimeException(
                "cty.dat não encontrado em: {$path}\n" .
                "Copie o arquivo para: storage/app/contest/cty.dat"
            );
        }
        // TODO: implementar parser completo
        $this->carregado = true;
    }
}
