# Update Fitur PSAJ - 1 Februari 2026

## Perubahan yang Dilakukan

### 1. Format Nomor Peserta Baru
- **Format Lama**: `SD-2026-0001`, `SMP-2026-0001`, `SMA-2026-0001`
- **Format Baru**: `Ktunaan-VI-NPSN-Tahun-NoUrut`
  - Contoh: `A-VI-20301234-2026-0001`
  - Ktunaan: Kode ketunaan dari tabel disability_types (A, B, C, D, E, dll.)
  - VI/IX/XII: Kelas sesuai jenjang (SDLB=VI, SMPLB=IX, SMALB=XII)
  - NPSN: Nomor NPSN sekolah
  - Tahun: Tahun pembuatan
  - NoUrut: Nomor urut 4 digit

### 2. Fitur Kirim Data Final
- Tombol **"Kirim Data Final"** di halaman index
- Menggunakan checkbox untuk memilih peserta yang akan difinalisasi
- Status peserta berubah dari "Draft" menjadi "Final"
- Data yang sudah final akan **TERKUNCI** (is_locked = true)
- Data terkunci **tidak dapat diedit atau dihapus**
- Timestamp submitted_at dicatat saat finalisasi

### 3. Fitur Generate Kartu Peserta (Batch)
- Tombol **"Generate Kartu Peserta (Batch)"** di halaman index
- Mencetak kartu peserta dengan format **4 kartu per halaman A4**
- Layout kartu mencakup:
  - Header: Logo/Judul KARTU PESERTA PSAJ
  - Data lengkap peserta (Nama, NIK, NISN, TTL, Kelas, Ketunaan, Nama Ibu)
  - Foto peserta (3x4)
  - Nomor peserta dengan format baru
  - Tanda tangan peserta dan kepala sekolah
- Bisa difilter berdasarkan jenjang (SDLB/SMPLB/SMALB)
- Siap cetak langsung ke printer

## File yang Diubah/Dibuat

### Database
1. **Migration**: `2026_02_01_000001_add_status_to_psaj_participants_table.php`
   - Menambahkan kolom `status` (enum: draft/final)
   - Menambahkan kolom `is_locked` (boolean)
   - Menambahkan kolom `submitted_at` (timestamp)

### Model
2. **app/Models/PsajParticipant.php**
   - Update fillable untuk status, is_locked, submitted_at
   - Update casts untuk submitted_at dan is_locked
   - Method `generateNoPeserta()` dengan format baru
   - Method `updateNoPesertaWithDisability()` untuk update nomor peserta dengan kode ketunaan

### Controller
3. **app/Http/Controllers/AdminSekolah/PsajController.php**
   - Method `submit()` untuk finalisasi data peserta
   - Method `generateKartuBatch()` untuk cetak kartu batch (4 per halaman)
   - Update method `store()` untuk update nomor peserta setelah create

### View
4. **resources/views/admin-sekolah/psaj/index.blade.php**
   - Tambah tombol "Kirim Data Final" dan "Generate Kartu Peserta (Batch)"
   - Tambah checkbox untuk select peserta
   - Tambah kolom Status (Draft/Final dengan icon lock)
   - Update tampilan tombol aksi (disable edit/hapus untuk data final)
   - Tambah modal konfirmasi submit
   - JavaScript untuk handle checkbox dan submit

5. **resources/views/admin-sekolah/psaj/kartu-batch.blade.php**
   - Layout cetak 4 kartu per halaman A4
   - Grid 2 kolom x 2 baris
   - Responsive print layout
   - Support foto peserta
   - Format nomor peserta baru

### Routes
6. **routes/web.php**
   - `POST /admin-sekolah/psaj/submit` → submit data final
   - `GET /admin-sekolah/psaj/kartu-batch/print` → generate kartu batch

## Cara Penggunaan

### Finalisasi Data Peserta
1. Buka halaman PSAJ di `/admin-sekolah/psaj`
2. Centang checkbox pada peserta yang akan difinalisasi
3. Klik tombol **"Kirim Data Final"** (kuning)
4. Konfirmasi di modal yang muncul
5. Data akan terkunci dan tidak bisa diubah lagi

### Cetak Kartu Peserta (Batch)
1. Buka halaman PSAJ di `/admin-sekolah/psaj`
2. (Opsional) Filter berdasarkan jenjang (SDLB/SMPLB/SMALB)
3. Klik tombol **"Generate Kartu Peserta (Batch)"** (hijau)
4. Halaman preview kartu akan terbuka di tab baru
5. Klik tombol "Cetak Kartu" atau tekan Ctrl+P
6. Pilih printer dan cetak

## Status Peserta

| Status | Icon | Warna | Deskripsi | Aksi yang Bisa Dilakukan |
|--------|------|-------|-----------|--------------------------|
| Draft | ✏️ Pencil | Warning (Kuning) | Data masih bisa diedit | View, Edit, Cetak Kartu, Hapus |
| Final | 🔒 Lock | Success (Hijau) | Data sudah final & terkunci | View, Cetak Kartu |

## Catatan Penting

1. **Data yang sudah final TIDAK BISA dikembalikan ke draft**
2. **Data final tidak bisa diedit atau dihapus** - pastikan data sudah benar sebelum submit
3. Nomor peserta akan otomatis di-generate dengan format baru saat menambah peserta
4. Format kartu sudah disesuaikan untuk cetak 4 kartu per halaman A4
5. Foto peserta (jika ada) akan tampil di kartu, jika tidak ada akan tampil placeholder

## Testing

Untuk testing fitur ini:
1. Tambah minimal 4 peserta PSAJ
2. Pastikan ada peserta dengan foto dan tanpa foto
3. Test submit data final untuk beberapa peserta
4. Verifikasi data terkunci (tombol edit/hapus disabled)
5. Test generate kartu batch
6. Cek layout cetak dengan print preview
