<?php

namespace App\Http\Controllers\Agency;

use App\Http\Controllers\Controller;
use App\Models\Definition\Country;
use Illuminate\Http\JsonResponse;

/**
 * KISA KODLU ALANLARIN SEÇENEK LİSTELERİ — tek uç, çok liste.
 *
 * Uyruk / ülke gibi sütunlar veritabanında 2-3 karakterlik KOD tutar
 * (TR, DE, GB); kullanıcı ise ülke ADINI bilir. Ledger satırındaki
 * aranabilir seçici listeyi buradan bir kez çeker, süzmeyi istemcide
 * yapar — 250 kayıt için her tuşta sunucuya gitmek gereksiz.
 *
 * Uç bilerek GENEL tutuldu ({kind} parametreli): panelde aynı desende
 * doldurulması gereken başka kısa kodlu alanlar da var (para birimi
 * size:3, tedarikçi/kullanıcı ülkesi size:2). Yeni bir liste eklemek
 * aşağıdaki match'e tek satır yazmakla bitiyor; arayüz tarafında hiç
 * kod değişmiyor.
 */
class LookupController extends Controller
{
    /** Liste boş dönerse (seeder çalıştırılmamışsa) arayüzün göstereceği metin. */
    protected const EMPTY_MESSAGES = [
        'countries' => 'Ülke listesi yüklenmemiş. Yöneticinize başvurun.',
    ];

    public function show(string $kind): JsonResponse
    {
        $items = match ($kind) {
            'countries' => Country::pickerOptions(),
            default => null,
        };

        if ($items === null) {
            return response()->json(['success' => false, 'message' => 'Bilinmeyen liste.'], 404);
        }

        return response()->json([
            'success' => true,
            'kind' => $kind,
            'items' => $items,
            // Boş liste bir hata değil, eksik kurulumdur: arayüz alanı
            // düzenlemeye kapatıp bu metni gösterir, sessizce kırılmaz.
            'empty_message' => $items === [] ? (self::EMPTY_MESSAGES[$kind] ?? 'Liste boş.') : null,
        ]);
    }
}
