<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\User;
use App\Models\Divisi;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Hash;

class UserSeeder extends Seeder
{
    public function run()
    {
        // 1. Daftar divisi sesuai dengan DivisiSeeder Anda
        $daftarDivisi = [
            'Dalduk KB',
            'PPA',
            'PUG-PHA',
            'Sekretariat',
            'UPTD PPA'
        ];

        foreach ($daftarDivisi as $namaDivisi) {
            // Ambil data divisi dari database (atau buat jika belum ada)
            $divisi = Divisi::firstOrCreate(['nama' => $namaDivisi]);
            
            // Buat slug untuk format email yang valid (contoh: 'Dalduk KB' -> 'dalduk-kb')
            $slug = Str::slug($namaDivisi);

            // ====================================================
            // SKENARIO KHUSUS: SEKRETARIAT
            // ====================================================
            if ($namaDivisi === 'Sekretariat') {
                // Akun Admin Utama
                User::updateOrCreate(
                    ['email' => 'sekretariat@example.com'],
                    [
                        'name' => 'Admin Sekretariat',
                        'password' => Hash::make('password'),
                        'divisi_id' => $divisi->id,
                        'role' => 'sekretariat',
                    ]
                );
            } 
            
            // ====================================================
            // SKENARIO UMUM: BUAT KABID & STAFF UNTUK SEMUA DIVISI
            // ====================================================
            // (Kecuali Sekretariat jika tidak diperlukan, tapi biasanya tetap dibuatkan)
            if ($namaDivisi !== 'Sekretariat') {
                
                // 1. Buat Kepala Bidang
                User::updateOrCreate(
                    ['email' => "kabid.{$slug}@example.com"], // Email unik: kabid.dalduk-kb@example.com
                    [
                        'name' => "Kepala {$namaDivisi}",
                        'password' => Hash::make('password'),
                        'divisi_id' => $divisi->id,
                        'role' => 'kepala_bidang',
                    ]
                );

                // 2. Buat Staff Bidang
                User::updateOrCreate(
                    ['email' => "staff.{$slug}@example.com"], // Email unik: staff.dalduk-kb@example.com
                    [
                        'name' => "Staff {$namaDivisi}",
                        'password' => Hash::make('password'),
                        'divisi_id' => $divisi->id,
                        'role' => 'staff_bidang',
                    ]
                );
            }
        }

        // ====================================================
        // USER BIASA (CONTOH)
        // ====================================================
        // Contoh user biasa yang terdaftar di divisi PPA
        $divisiPPA = Divisi::where('nama', 'PPA')->first();
        
        if ($divisiPPA) {
            User::updateOrCreate(
                ['email' => 'user@example.com'], 
                [
                    'name' => 'Demo User Peminjam',
                    'password' => Hash::make('password'),
                    'divisi_id' => $divisiPPA->id,
                    'role' => 'user',
                ]
            );
        }
    }
}
