<?php

namespace Database\Seeders;

use App\Models\Company;
use App\Models\Document;
use App\Models\User;
use Illuminate\Database\Seeder;

class DocumentSeeder extends Seeder
{
    public function run(): void
    {
        $company = Company::query()->first();
        $uploader = User::query()
            ->when($company, fn ($q) => $q->where('company_id', $company->id))
            ->first();

        if (! $company || ! $uploader) {
            return;
        }

        $samples = [
            ['name' => 'Offer Letter - Rahul Sharma', 'category' => 'appointment_letter', 'expires_on' => null, 'status' => 'active'],
            ['name' => 'PAN Card - Priya Verma', 'category' => 'pan_card', 'expires_on' => null, 'status' => 'active'],
            ['name' => 'Aadhaar Card - Akash Kumar', 'category' => 'aadhaar_card', 'expires_on' => null, 'status' => 'active'],
            ['name' => 'Bank Account Proof - Neha Singh', 'category' => 'bank_account_proof', 'expires_on' => now()->addDays(14)->toDateString(), 'status' => 'expiring_soon'],
            ['name' => 'Experience Letter - Mohit Rao', 'category' => 'experience_letter', 'expires_on' => now()->subDays(8)->toDateString(), 'status' => 'expired'],
            ['name' => 'Education Certificate - Sample', 'category' => 'educational_certificate', 'expires_on' => now()->addMonths(10)->toDateString(), 'status' => 'active'],
            ['name' => 'NDA Agreement - Sales Team', 'category' => 'other', 'expires_on' => now()->addMonths(6)->toDateString(), 'status' => 'active'],
        ];

        foreach ($samples as $index => $sample) {
            Document::query()->updateOrCreate(
                ['company_id' => $company->id, 'name' => $sample['name']],
                [
                    'type' => $sample['category'],
                    'category' => $sample['category'],
                    'document_number' => 'SAMPLE-' . str_pad((string) ($index + 1), 4, '0', STR_PAD_LEFT),
                    'issued_on' => now()->subMonths(3)->toDateString(),
                    'expires_on' => $sample['expires_on'],
                    'status' => $sample['status'],
                    'visibility' => 'company',
                    'is_mandatory' => in_array($sample['category'], ['appointment_letter', 'pan_card', 'aadhaar_card', 'bank_account_proof'], true),
                    'notes' => 'Seeded HRMS sample document for module demo.',
                    'path' => 'documents/sample-' . ($index + 1) . '.pdf',
                    'uploaded_by' => $uploader->id,
                ]
            );
        }
    }
}
