<?php

namespace Database\Seeders;

use App\Models\Siswa;
use App\Models\User;
use App\Models\Jurusan;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class SiswaSeeder extends Seeder
{
    public function run(): void
    {
        // 1. Bersihkan data lama agar tidak terjadi error Unique NISN saat seeding ulang
        // Menggunakan truncate atau delete agar ID auto-increment mulai dari awal lagi jika perlu
        DB::statement('SET FOREIGN_KEY_CHECKS=0;');
        Siswa::truncate();
        DB::statement('SET FOREIGN_KEY_CHECKS=1;');

        // 2. Ambil semua user dengan role siswa dan semua jurusan
        $users = User::where('role', 'siswa')->get();
        $jurusans = Jurusan::all();

        // Cek jika data master (User & Jurusan) tersedia
        if ($users->isEmpty() || $jurusans->isEmpty()) {
            $this->command->error("Data User atau Jurusan kosong! Silahkan jalankan UserSeeder dan JurusanSeeder terlebih dahulu.");
            return;
        }

        $siswaData = [
            [
                'nama_lengkap' => 'Galang Sefian Adji',
                'nisn' => '12345678912', // Sesuaikan dengan yang ada di gambar UI Anda
                'kelas' => 'XII-IPA-1',
                'peminatan' => 'Saintek',
                'minat_bakat' => 'Programming',
                'ekonomi' => 'Mampu'
            ],
            [
                'nama_lengkap' => 'Eka Putri',
                'nisn' => '1234567891',
                'kelas' => 'XII-IPS-2',
                'peminatan' => 'Soshum',
                'minat_bakat' => 'Menulis',
                'ekonomi' => 'Menengah'
            ],
            [
                'nama_lengkap' => 'Fajar Ramadhan',
                'nisn' => '1234567892',
                'kelas' => 'XII-IPA-2',
                'peminatan' => 'Saintek',
                'minat_bakat' => 'Robotik',
                'ekonomi' => 'Mampu'
            ],
            [
                'nama_lengkap' => 'alex',
                'nisn' => '1243254354',
                'kelas' => 'XII-IPA-1',
                'peminatan' => 'Saintek',
                'minat_bakat' => 'Musik',
                'ekonomi' => 'Mampu'
            ],
        ];

        foreach ($siswaData as $index => $data) {
            if (isset($users[$index])) {
                // Menggunakan Eloquent Create agar fungsi boot() di model Siswa terpanggil
                // Jangan memasukkan 'id_siswa' secara manual di sini, biarkan model yang membuatnya
                Siswa::create([
                    'user_id'      => $users[$index]->id,
                    'jurusan_id'   => $jurusans->random()->id,
                    'nama_lengkap' => $data['nama_lengkap'],
                    'nisn'         => $data['nisn'],
                    'kelas'        => $data['kelas'],
                    'peminatan'    => $data['peminatan'],
                    'minat_bakat'  => $data['minat_bakat'],
                    'ekonomi'      => $data['ekonomi'],
                ]);
            }
        }
        
        $this->command->info("Seeder Siswa berhasil dijalankan dengan ID otomatis.");
    }
}