<?php

namespace Database\Seeders;

use App\Models\TurebGuide;
use App\Services\Tureb\TurebGuideSyncService;
use Illuminate\Database\Seeder;

/**
 * TUREB rehber sicilini doldurur.
 *
 * Sicil dış kaynaktan gelen canlı bir aynadır; sabit demo verisi tutmak yerine
 * senkron servisi çağırır (php artisan tureb:sync ile aynı iş). Ağ yoksa veya
 * TUREB yanıt vermezse seed'in tamamını düşürmez — uyarı verip geçer.
 */
class TurebGuideSeeder extends Seeder
{
    public function run(): void
    {
        // Odalar sicildeki chamber_code'larla eşleşir; önce onlar olmalı.
        $this->call(GuideChamberSeeder::class);

        if (TurebGuide::exists()) {
            $this->command?->info('TUREB sicilinde kayıt var (' . TurebGuide::count() . '), senkron atlanıyor. Güncellemek için: php artisan tureb:sync');

            return;
        }

        $this->command?->info('TUREB rehber sicili çekiliyor (8 bölge, istekler arası 2sn)…');

        try {
            $result = app(TurebGuideSyncService::class)->sync(function (string $region, int $rows) {
                $this->command?->line(sprintf('  %-20s %6d satır', $region, $rows));
            });
        } catch (\Throwable $e) {
            $this->command?->warn('TUREB senkronu yapılamadı: ' . $e->getMessage());
            $this->command?->warn('Sicil boş bırakıldı. Bağlantı sağlanınca: php artisan tureb:sync');

            return;
        }

        $this->command?->info(sprintf(
            '%d satırdan %d benzersiz rehber yazıldı (%d yeni).',
            $result['fetched'],
            $result['unique'],
            $result['created'],
        ));
    }
}
