<?php

namespace Database\Seeders;

use App\Models\Client;
use App\Models\ClientProduct;
use App\Models\Product;
use Illuminate\Database\Seeder;

class ClientProductSeeder extends Seeder
{
    public function run(): void
    {
        // PRC-532'de müşteriler kasıtlı servissiz başlıyordu. İptal/yenileme/
        // upgrade gibi "aktif hizmet gerektiren" akışları elle kurmadan test
        // edebilmek için ana test müşterisine birkaç aktif hizmet eklendi.
        // FK'ler lookup ile çözülür (hardcoded id YOK — CLAUDE.md seeder kuralı).
        $client = Client::where('email', 'client.main@email.com')->first();

        if (! $client) {
            return; // ClientSeeder çalışmamışsa sessizce atla
        }

        // [ürün slug'ı, status, domain, billingcycle, +gün (next_due), yenileme tutarı]
        $fixtures = [
            ['qa-basic', 'active',     'mainsite.com',       'monthly',  20,  99.00],
            ['qa-pro',   'active',     'shop.example.com',   'annually', 200, 499.00],
            ['qa-cloud', 'active',     null,                 'monthly',  10,  250.00],
            ['qa-basic', 'suspended',  'legacy.example.com', 'monthly',  -5,  99.00],
        ];

        foreach ($fixtures as [$slug, $status, $domain, $cycle, $dueOffsetDays, $amount]) {
            $product = Product::where('slug', $slug)->first();

            if (! $product) {
                continue; // ProductSeeder bu slug'ı üretmemişse atla
            }

            ClientProduct::factory()
                ->for($client)
                ->create([
                    'product_id'       => $product->id,
                    'module'           => $product->module,
                    'server_id'        => null, // ServerSeeder bu seeder'dan SONRA çalışıyor
                    'status'           => $status,
                    'domain'           => $domain,
                    'billingcycle'     => $cycle,
                    'next_due_date'    => now()->addDays($dueOffsetDays),
                    'recurring_amount' => $amount, // gerçek kolon (renewal_price virtual alias)
                    'auto_renew'       => true,
                ]);
        }
    }
}
