<?php

declare(strict_types=1);

namespace Database\Factories;

use App\Models\TenantReview;
use App\Models\TenantReviewSection;
use App\Support\TenantReviewCompletenessState;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

/**
 * @extends Factory<TenantReviewSection>
 */
class TenantReviewSectionFactory extends Factory
{
    protected $model = TenantReviewSection::class;

    /**
     * @return array<string, mixed>
     */
    public function definition(): array
    {
        return [
            'tenant_review_id' => TenantReview::factory(),
            'workspace_id' => function (array $attributes): int {
                $review = TenantReview::query()->whereKey((int) $attributes['tenant_review_id'])->firstOrFail();

                return (int) $review->workspace_id;
            },
            'tenant_id' => function (array $attributes): int {
                $review = TenantReview::query()->whereKey((int) $attributes['tenant_review_id'])->firstOrFail();

                return (int) $review->tenant_id;
            },
            'section_key' => Str::snake(fake()->words(2, true)),
            'title' => fake()->sentence(3),
            'sort_order' => fake()->numberBetween(0, 50),
            'required' => true,
            'completeness_state' => TenantReviewCompletenessState::Complete->value,
            'source_snapshot_fingerprint' => fake()->sha256(),
            'summary_payload' => [
                'summary' => fake()->sentence(),
            ],
            'render_payload' => [
                'highlights' => [],
            ],
            'measured_at' => now(),
        ];
    }
}
