<?php

namespace Database\Factories;

use App\Models\Tenant;
use App\Models\Workspace;
use Illuminate\Database\Eloquent\Factories\Factory;

/**
 * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Tenant>
 */
class TenantFactory extends Factory
{
    public function configure(): static
    {
        return $this->afterCreating(function (Tenant $tenant): void {
            if ($tenant->workspace_id !== null) {
                return;
            }

            $workspace = Workspace::factory()->create();

            $tenant->forceFill([
                'workspace_id' => (int) $workspace->getKey(),
            ])->save();
        });
    }

    /**
     * Define the model's default state.
     *
     * @return array<string, mixed>
     */
    public function definition(): array
    {
        return [
            'name' => fake()->company(),
            'external_id' => fake()->uuid(),
            'tenant_id' => fake()->uuid(),
            'app_client_id' => fake()->uuid(),
            'app_client_secret' => null, // Skip encryption in tests
            'app_certificate_thumbprint' => null,
            'app_status' => 'ok',
            'app_notes' => null,
            'status' => 'active',
            'environment' => 'other',
            'is_current' => false,
            'metadata' => [],
            'rbac_status' => 'ok',
            'rbac_last_checked_at' => now(),
        ];
    }
}
