<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Siswa;

class SiswaController extends Controller
{
    /**
     * READ: Menampilkan daftar semua siswa.
     */
    public function index()
    {
        $siswas = Siswa::orderBy('nama')->get();
        return view('siswa.index', compact('siswas'));
    }

    /**
     * CREATE: Menampilkan halaman form tambah siswa.
     */
    public function create()
    {
        return view('siswa.create');
    }

    /**
     * CREATE: Menyimpan data siswa baru ke database.
     */
    public function store(Request $request)
    {
        // 1. Validasi input disesuaikan dengan struktur kolom tabel migration kamu
        $request->validate([
            'nisn'          => ['required', 'string', 'unique:siswas,nisn'],
            'nama'          => ['required', 'string', 'max:255'],
            'kelas'         => ['required', 'string', 'max:50'],
            'jenis_kelamin' => ['required', 'in:Laki-laki,Perempuan'],
            'alamat'        => ['required', 'string'],
        ]);

        // 2. Simpan ke database
        Siswa::create($request->all());

        // 3. Redirect ke halaman utama siswa dengan pesan sukses
        return redirect()->route('siswa.index')
            ->with('success', 'Data siswa berhasil ditambahkan!');
    }

    /**
     * READ DETAIL: Menampilkan detail satu siswa berdasarkan ID.
     */
    public function show($id)
    {
        $siswa = Siswa::findOrFail($id);
        return view('siswa.show', compact('siswa'));
    }

    /**
     * UPDATE: Menampilkan halaman form edit siswa.
     */
    public function edit($id)
    {
        $siswa = Siswa::findOrFail($id);
        return view('siswa.edit', compact('siswa'));
    }

    /**
     * UPDATE: Menyimpan perubahan data siswa ke database.
     */
    public function update(Request $request, $id)
    {
        $siswa = Siswa::findOrFail($id);

        // 1. Validasi input update (abaikan keunikan NISN untuk ID siswa ini sendiri)
        $request->validate([
            'nisn'          => ['required', 'string', 'unique:siswas,nisn,' . $id],
            'nama'          => ['required', 'string', 'max:255'],
            'kelas'         => ['required', 'string', 'max:50'],
            'jenis_kelamin' => ['required', 'in:Laki-laki,Perempuan'],
            'alamat'        => ['required', 'string'],
        ]);

        // 2. Update data di database
        $siswa->update($request->all());

        return redirect()->route('siswa.index')
            ->with('success', 'Data siswa berhasil diperbarui!');
    }

    /**
     * DELETE: Menghapus data siswa dari database.
     */
    public function destroy($id)
    {
        $siswa = Siswa::findOrFail($id);
        $siswa->delete();

        return redirect()->route('siswa.index')
            ->with('success', 'Data siswa berhasil dihapus!');
    }
}