<?php

namespace App\Http\Controllers;

use App\Models\Siswa;
use App\Models\AnggotaPerpustakaan;
use Illuminate\Http\Request;
use Barryvdh\DomPDF\Facade\Pdf;

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

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

    /**
     * Menyimpan data siswa
     */
    public function store(Request $request)
    {
        $request->validate([
            'nis'    => 'required|max:20',
            'nama'   => 'required|max:100',
            'kelas'  => 'required|max:20',
            'alamat' => 'required',
            'no_hp'  => 'required',
        ]);

        Siswa::create($request->all());

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

    /**
     * Menampilkan detail siswa (SHOW)
     */
    public function show($id)
    {
        $siswa = Siswa::with('anggota')->findOrFail($id);
        return view('siswa.show', compact('siswa'));
    }

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

    /**
     * Mengupdate data siswa
     */
    public function update(Request $request, $id)
    {
        $request->validate([
            'nis'    => 'required|max:20',
            'nama'   => 'required|max:100',
            'kelas'  => 'required|max:20',
            'alamat' => 'required',
            'no_hp'  => 'required',
        ]);

        $siswa = Siswa::findOrFail($id);
        $siswa->update($request->all());

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

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

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

    /**
     * MENDAFTARKAN SISWA SEBAGAI ANGGOTA PERPUSTAKAAN
     */
    public function daftar($id)
    {
        $siswa = Siswa::findOrFail($id);

        // Cegah pendaftaran ganda
        if ($siswa->anggota) {
            return redirect()->back()
                ->with('error', 'Siswa ini sudah terdaftar sebagai anggota');
        }

        AnggotaPerpustakaan::create([
            'siswa_id' => $siswa->id,
            'tanggal_daftar' => now(),
            'status' => 'aktif',
        ]);

        return redirect()->back()
            ->with('success', 'Siswa berhasil didaftarkan sebagai anggota perpustakaan');
    }
    public function nonaktif($id)
{
    $siswa = Siswa::findOrFail($id);

    if (!$siswa->anggota) {
        return back()->with('error', 'Siswa belum terdaftar sebagai anggota');
    }

    $siswa->anggota->update([
        'status' => 'nonaktif'
    ]);

    return back()->with('success', 'Status anggota berhasil dinonaktifkan');
}
public function aktifkan($id)
{
    $siswa = Siswa::findOrFail($id);

    if (!$siswa->anggota) {
        return redirect()->back()->with('error', 'Siswa belum terdaftar');
    }

    $siswa->anggota->update([
        'status' => 'aktif'
    ]);

    return redirect()->back()
        ->with('success', 'Anggota berhasil diaktifkan kembali');
}
/**
 * CETAK KTA ANGGOTA PERPUSTAKAAN (AKTIF / NONAKTIF)
 */
public function cetakKTA($id)
{
    $siswa = Siswa::with('anggota')->findOrFail($id);

    if (!$siswa->anggota) {
        return redirect()->back()
            ->with('error', 'Siswa belum terdaftar sebagai anggota perpustakaan');
    }

    // Status boleh aktif atau nonaktif
    if (!in_array($siswa->anggota->status, ['aktif', 'nonaktif'])) {
        return redirect()->back()
            ->with('error', 'Status anggota tidak valid');
    }

    $pdf = Pdf::loadView('siswa.kta', compact('siswa'))
        ->setPaper([0, 0, 242, 153], 'portrait'); // ukuran KTA (seperti kartu)

    return $pdf->download('KTA-'.$siswa->nama.'.pdf');
}

}
