<?php

namespace Database\Factories;

use App\Models\Document;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;

/**
 * @extends Factory<Document>
 */
class DocumentFactory extends Factory
{
    protected $model = Document::class;

    public function definition(): array
    {
        $categories = array_keys(config('employee_documents.upload_categories', []));
        $category = $this->faker->randomElement($categories ?: ['other']);
        $issuedOn = $this->faker->dateTimeBetween('-12 months', '-2 weeks');
        $expiresOn = $this->faker->boolean(75) ? $this->faker->dateTimeBetween('+1 week', '+10 months') : null;

        return [
            'company_id' => null,
            'name' => $this->faker->sentence(3),
            'type' => $category,
            'category' => $category,
            'document_number' => strtoupper($this->faker->bothify('DOC-####-??')),
            'issued_on' => $issuedOn,
            'expires_on' => $expiresOn,
            'status' => 'active',
            'visibility' => $this->faker->randomElement(['company', 'team', 'private']),
            'is_mandatory' => $this->faker->boolean(30),
            'notes' => $this->faker->optional()->sentence(),
            'path' => 'documents/sample-' . $this->faker->uuid() . '.pdf',
            'documentable_type' => null,
            'documentable_id' => null,
            'uploaded_by' => User::query()->value('id'),
        ];
    }
}
