# Dokumentasi Fitur Input Data PSAJ

## Overview
Fitur untuk mengelola data peserta PSAJ (Peserta Didik Satuan Pendidikan Anak Jalanan) dengan jenjang SDLB, SMPLB, dan SMALB.

## 🔄 Alur Kerja

### 1. Input Data Siswa (Termasuk Foto)
- Admin sekolah membuka form input peserta
- Mengisi data lengkap peserta termasuk upload foto
- Data yang diinput:
  - NISN
  - Foto Peserta (JPG/PNG, max 2MB)
  - Nama Lengkap
  - Jenis Kelamin
  - Tempat & Tanggal Lahir
  - Alamat
  - Nama Orang Tua/Wali
  - Telepon Orang Tua
  - Kelas
  - Program (Tunanetra, Tunarungu, dll)

### 2. Generate Nomor Peserta (Otomatis)
- Setelah klik "Simpan Data", sistem **otomatis generate** nomor peserta
- Format: `PSAJ-[JENJANG]-[NPSN]-[TAHUN]-[URUTAN]`
- Contoh: `PSAJ-SDLB-12345678-2026-001`
- **Tidak perlu klik generate manual** - langsung tersimpan dengan nomor unik

### 3. Generate Kartu Peserta (A4 - 6 Kartu)
Dua opsi cetak kartu:

**a. Cetak Kartu Individual**
- Klik ikon printer pada baris data peserta
- Kartu dibuka di tab baru
- Siap dicetak

**b. Cetak Batch 6 Kartu (Format A4)** ⭐
- Klik tombol "Cetak 6 Kartu (A4)" di bagian header
- Sistem generate halaman A4 berisi 6 kartu peserta
- Layout 2 kolom x 3 baris
- Optimized untuk printer A4
- Hemat kertas dan waktu

## Fitur yang Tersedia

### 1. Menu Navigasi
- **Lokasi**: Sidebar Admin Sekolah → DATA PSAJ
- **Sub Menu**:
  - SDLB (Sekolah Dasar Luar Biasa)
  - SMPLB (Sekolah Menengah Pertama Luar Biasa)
  - SMALB (Sekolah Menengah Atas Luar Biasa)

### 2. Input Data Peserta
Setiap halaman jenjang memiliki fitur input data dengan field:
- NISN
- **Foto Peserta** (Upload foto JPG/PNG max 2MB)
- Nama Lengkap
- Jenis Kelamin
- Tempat & Tanggal Lahir
- Alamat
- Nama Orang Tua/Wali
- Telepon Orang Tua
- Kelas (disesuaikan per jenjang)
- Program (contoh: Tunanetra, Tunarungu, dll)

> **Catatan**: Nomor peserta akan **otomatis di-generate** setelah data disimpan

### 3. Auto-Generate Nomor Peserta
- **Format**: `PSAJ-[JENJANG]-[NPSN]-[TAHUN]-[URUTAN]`
- **Contoh**: `PSAJ-SDLB-12345678-2026-001`
- **Proses**: Otomatis saat data disimpan (tidak perlu klik generate manual)
- Unik untuk setiap peserta

### 4. Cetak Kartu Peserta

#### A. Kartu Individual
- **Fitur**: Kartu peserta yang dapat dicetak per individu
- **Konten Kartu**:
  - Header sekolah dengan logo
  - Foto peserta (jika diupload)
  - Nomor peserta (dengan badge)
  - Data lengkap peserta
  - QR Code placeholder
  - Footer dengan tanggal cetak
- **Cara Menggunakan**:
  1. Klik tombol printer (ikon 🖨️) pada baris data peserta
  2. Halaman kartu akan terbuka di tab baru
  3. Klik tombol "Cetak Kartu Peserta" atau gunakan Ctrl+P
  4. Pilih printer dan cetak

#### B. Cetak Batch 6 Kartu (Format A4) ⭐ **BARU!**
- **Fitur**: Cetak 6 kartu peserta sekaligus dalam 1 halaman A4
- **Layout**: Grid 2 kolom x 3 baris
- **Keuntungan**:
  - Hemat kertas
  - Hemat waktu cetak
  - Format standard A4
  - Mudah dipotong
- **Konten per Kartu**:
  - Header mini dengan logo
  - Foto peserta (jika ada)
  - Badge nomor peserta
  - Data lengkap ringkas
  - QR Code
- **Cara Menggunakan**:
  1. Klik tombol "Cetak 6 Kartu (A4)" di bagian header halaman
  2. Halaman A4 dengan 6 kartu akan terbuka
  3. Klik "Cetak Kartu" atau Ctrl+P
  4. Cetak di kertas A4
  5. Potong kartu sesuai garis

### 5. Upload dan Manajemen Foto
- **Format**: JPG, PNG
- **Ukuran Max**: 2MB
- **Validasi**: Otomatis saat submit form
- **Storage**: Disimpan di `storage/app/public/psaj_photos/`
- **Display**: Otomatis tampil di kartu peserta
### 6. Statistik Dashboard
Setiap halaman menampilkan statistik:
- Total Peserta
- Jumlah Laki-laki
- Jumlah Perempuan
- Program Aktif

## File yang Dibuat

### Controllers
- `app/Http/Controllers/AdminSekolah/PsajController.php`
  - `sdlb()` - Tampil halaman SDLB
  - `smplb()` - Tampil halaman SMPLB
  - `smalb()` - Tampil halaman SMALB
  - `autoGenerateNoPeserta()` - ⭐ Auto-generate nomor peserta saat save
  - `store()` - Simpan data peserta dengan upload foto
  - `generateKartu()` - Generate kartu peserta individual
  - `generateBatchKartu()` - ⭐ Generate 6 kartu dalam A4

### Views
- `resources/views/admin-sekolah/psaj/sdlb.blade.php`
- `resources/views/admin-sekolah/psaj/smplb.blade.php`
- `resources/views/admin-sekolah/psaj/smalb.blade.php`
- `resources/views/admin-sekolah/psaj/kartu-peserta.blade.php` - Kartu individual
- `resources/views/admin-sekolah/psaj/kartu-batch.blade.php` - ⭐ Batch 6 kartu A4

### Routes
```php
Route::prefix('psaj')->name('psaj.')->group(function () {
    Route::get('/sdlb', [PsajController::class, 'sdlb'])->name('sdlb');
    Route::get('/smplb', [PsajController::class, 'smplb'])->name('smplb');
    Route::get('/smalb', [PsajController::class, 'smalb'])->name('smalb');
    Route::post('/store', [PsajController::class, 'store'])->name('store');
    Route::get('/kartu/{jenjang}/{noPeserta}', [PsajController::class, 'generateKartu'])->name('kartu');
    Route::get('/kartu-batch/{jenjang}', [PsajController::class, 'generateBatchKartu'])->name('kartu-batch'); // ⭐ NEW
});
```

## Cara Penggunaan

### Menambah Data Peserta Baru
1. Login sebagai Admin Sekolah
2. Klik menu "DATA PSAJ" di sidebar
3. Pilih jenjang (SDLB/SMPLB/SMALB)
4. Klik tombol "Tambah Data"
5. Isi semua data yang diperlukan:
   - NISN
   - Upload foto peserta (opsional, maks 2MB)
   - Nama, tempat & tanggal lahir
   - Alamat
   - Data orang tua
   - Kelas dan program
6. Klik "Simpan Data"
7. ⭐ Sistem otomatis generate nomor peserta
8. Notifikasi sukses menampilkan nomor peserta yang ter-generate

### Mencetak Kartu Peserta Individual
1. Pada tabel data peserta
2. Klik ikon printer pada kolom Aksi
3. Kartu peserta akan terbuka di tab baru
4. Klik "Cetak Kartu Peserta" atau tekan Ctrl+P
5. Sesuaikan pengaturan printer
6. Cetak

### Mencetak 6 Kartu Sekaligus (A4) ⭐ **REKOMENDASI**
1. Di halaman SDLB/SMPLB/SMALB
2. Klik tombol "Cetak 6 Kartu (A4)" (warna biru) di header
3. Halaman A4 dengan 6 kartu terbuka di tab baru
4. Preview untuk memastikan layout
5. Klik "Cetak Kartu" atau Ctrl+P
6. Pilih printer dan kertas A4
7. Cetak
8. Potong kartu sesuai garis pembatas

**Tips Cetak Batch:**
- Gunakan kertas A4 berkualitas baik (80gsm atau lebih)
- Setting printer ke "Best Quality"
- Pastikan orientasi kertas: Portrait
- Gunakan gunting atau paper cutter untuk hasil rapi
- Setiap halaman berisi 6 kartu peserta terbaru

## Catatan Penting

### Storage Foto
Pastikan storage link sudah dibuat:
```bash
php artisan storage:link
```

Folder foto akan tersimpan di: `storage/app/public/psaj_photos/`

### Database
⚠️ **Perlu dibuat migration dan model** untuk tabel `psaj_participants`:
```php
Schema::create('psaj_participants', function (Blueprint $table) {
    $table->id();
    $table->foreignId('school_id')->constrained()->onDelete('cascade');
    $table->enum('jenjang', ['sdlb', 'smplb', 'smalb']);
    $table->string('no_peserta')->unique();
    $table->string('nisn');
    $table->string('nama_lengkap');
    $table->enum('jenis_kelamin', ['L', 'P']);
    $table->string('tempat_lahir');
    $table->date('tanggal_lahir');
    $table->text('alamat');
    $table->string('nama_ortu');
    $table->string('telepon_ortu')->nullable();
    $table->string('kelas');
    $table->string('program');
    $table->string('foto')->nullable(); // ⭐ Path to photo
    $table->enum('status', ['aktif', 'nonaktif'])->default('aktif');
    $table->timestamps();
    $table->softDeletes();
    
    // Indexes
    $table->index(['school_id', 'jenjang']);
    $table->index('no_peserta');
});
```

### Fitur yang Akan Dikembangkan
- [ ] Database integration (saat ini masih dummy data)
- [ ] Edit & Delete data peserta
- [ ] Import Excel dengan foto
- [ ] Export PDF/Excel
- [ ] QR Code generator untuk kartu peserta
- [ ] Filter & Search advanced
- [ ] Validasi NISN
- [ ] Crop/resize foto otomatis
- [ ] Print preview sebelum cetak
- [ ] Custom template kartu per sekolah

## Testing
1. Akses: `http://localhost/appsuper/admin-sekolah/psaj/sdlb`
2. Test input data dengan upload foto
3. Cek nomor peserta auto-generated
4. Test cetak kartu individual
5. ⭐ Test cetak batch 6 kartu (A4)
6. Verifikasi layout dan kualitas cetak

## Keunggulan Fitur

✅ **Alur Kerja yang Logical**
- Input data dulu → Generate nomor otomatis → Cetak kartu
- Tidak perlu klik generate manual

✅ **Upload Foto Terintegrasi**
- Support JPG/PNG hingga 2MB
- Validasi otomatis
- Langsung tampil di kartu

✅ **Cetak Batch Efisien** ⭐
- 6 kartu dalam 1 halaman A4
- Hemat kertas 6x lipat
- Layout profesional dan rapi
- Mudah dipotong

✅ **User Friendly**
- Form sederhana dan jelas
- Notifikasi informatif
- Preview kartu sebelum cetak

✅ **Production Ready**
- Template sudah responsive
- Print-optimized CSS
- Error handling
- File validation

## Screenshot Fitur
- ✅ Menu di Sidebar
- ✅ Halaman SDLB/SMPLB/SMALB
- ✅ Modal Input Data dengan Upload Foto
- ✅ Auto-generate No. Peserta
- ✅ Kartu Peserta Individual
- ✅ Kartu Batch A4 (6 kartu) ⭐

---
**Tanggal Dibuat**: 30 Januari 2026  
**Developer**: GitHub Copilot  
**Status**: ✅ Ready for Testing (Database belum terintegrasi)  
**Versi**: 2.0 - Improved Workflow with Photo Upload & Batch Print
