<?php

namespace Database\Seeders;

use App\Models\Brand;
use App\Models\Client;
use App\Models\ClientGroup;
use App\Models\ProductGroup;
use App\Models\Reseller;
use Illuminate\Database\Seeder;

/**
 * PRC-840 — whitelabel QA fixture'ı: demo reseller + doğrulanmış brand.
 *
 * Çift-domain browser testi için: /etc/hosts'a `127.0.0.1 brand.test` ekleyin
 * (sunucu-taraflı test için `curl -H "Host: brand.test"` yeterli).
 * Brand: starter tema + kısıtlı katalog (yalnız QA Hosting grubu + .com/.com.tr)
 * → tema switch + katalog enforcement + sızıntı kapatma tek fixture'la test edilir.
 */
class ResellerBrandSeeder extends Seeder
{
    public function run(): void
    {
        // FK'ler lookup ile (seeder kuralı — hardcoded id YOK)
        $trLang = \DB::table('languages')->where('a2_iso', 'tr')->value('id');
        $turkeyId = \DB::table('countries')->where('a2_iso', 'TR')->value('id') ?? 1;
        $tryCurrency = \DB::table('currencies')->where('code', 'TRY')->value('id');

        // Komisyonlu QA client group'u (reseller'ın müşterileri bu gruba düşer)
        $group = ClientGroup::firstOrCreate(
            ['group_name' => 'QA Reseller'],
            [
                'commission_enabled' => true,
                'commission_type' => 'percentage',
                'commission_rate' => 10,
                'description' => 'PRC-840 QA — reseller komisyon grubu (%10)',
            ]
        );

        // Reseller'ın sahip müşterisi (ana site hesabı)
        $client = Client::firstOrCreate(
            ['email' => 'reseller@email.com'],
            [
                'type' => 'individual',
                'first_name' => 'DEMO',
                'last_name' => 'RESELLER',
                'password' => bcrypt('asdasdasd'),
                'language_id' => $trLang,
                'currency_id' => $tryCurrency,
                'country_id' => $turkeyId,
                'status' => 'active',
            ]
        );

        $reseller = Reseller::firstOrCreate(
            ['client_id' => $client->id],
            [
                'group_id' => $group->id,
                'brand_name' => 'Demo Reseller',
                'status' => 'active',
                'commission_type' => 'percentage',
                'commission_rate' => 10,
                'approved_at' => now(),
            ]
        );

        // Kısıtlı vitrin: yalnız QA Hosting grubu + .com/.com.tr
        $hostingGroupId = ProductGroup::where('name', 'QA Hosting')->value('id');

        $brand = Brand::firstOrCreate(
            ['domain' => 'brand.test'],
            [
                'reseller_id' => $reseller->id,
                'name' => 'Demo Brand',
                'slug' => 'demo-brand',
                'theme' => 'starter',
                'primary_color' => '#0ea5e9',
                'secondary_color' => '#0369a1',
                'footer_text' => '© Demo Brand — QA whitelabel fixture',
                'contact_email' => 'info@brand.test',
                'visible_product_groups' => $hostingGroupId ? [$hostingGroupId] : null,
                'visible_tlds' => ['.com', '.com.tr'],
                'default_language' => 'tr',
                'default_currency' => 'TRY',
                'domain_verified' => true,
                'domain_verified_at' => now(),
                'is_default' => false,
                'is_active' => true,
            ]
        );

        // PRC-844 — reseller-authored brand anasayfası (brand.test kök adresinde
        // gösterilir). ResellerPageController'ın ürettiği tek-html_embed şeklinde
        // seed'lenir; created_by_reseller_id audit izi dolu, admin null.
        \App\Models\Page::firstOrCreate(
            ['brand_id' => $brand->id, 'locale' => 'tr', 'slug' => 'anasayfa'],
            [
                'title' => 'Demo Brand',
                'status' => 'published',
                'is_home' => true,
                'meta_title' => 'Demo Brand — Hosting & Domain',
                'content' => ['blocks' => [[
                    'type' => 'html_embed',
                    'id' => (string) \Illuminate\Support\Str::uuid(),
                    'data' => ['html' => '<div class="container py-5 text-center"><h1>Demo Brand\'e Hoş Geldiniz</h1><p class="lead">Bu sayfa bayi tarafından oluşturulmuş brand-scoped bir anasayfadır.</p></div>'],
                    'options' => [],
                ]]],
                'created_by_reseller_id' => $reseller->id,
                'published_at' => now(),
            ]
        );
    }
}
