<?php

namespace Database\Factories;

use App\Models\OperationalControlActivation;
use App\Models\PlatformUser;
use App\Models\Workspace;
use Illuminate\Database\Eloquent\Factories\Factory;

/**
 * @extends Factory<OperationalControlActivation>
 */
class OperationalControlActivationFactory extends Factory
{
    protected $model = OperationalControlActivation::class;

    /**
     * @return array<string, mixed>
     */
    public function definition(): array
    {
        return [
            'control_key' => 'restore.execute',
            'scope_type' => 'global',
            'workspace_id' => null,
            'reason_text' => fake()->sentence(),
            'expires_at' => null,
            'created_by_platform_user_id' => PlatformUser::factory(),
            'updated_by_platform_user_id' => null,
        ];
    }

    public function forControl(string $controlKey): static
    {
        return $this->state(fn (): array => [
            'control_key' => $controlKey,
        ]);
    }

    public function forGlobalScope(): static
    {
        return $this->state(fn (): array => [
            'scope_type' => 'global',
            'workspace_id' => null,
        ]);
    }

    public function workspaceScoped(): static
    {
        return $this->state(fn (): array => [
            'scope_type' => 'workspace',
            'workspace_id' => Workspace::factory(),
        ]);
    }
}