# Task Breakdown: 15 - Manajemen Alur Izin Absen

**Referensi Dokumen:** FR-15, FR-16, Tech Spec 2.5
**Tujuan:** Modul pengesahan persetujuan (bertingkat status manual / diakselerasi) bagi absensi tipe sakti (*Sakit* & *Izin*), menggantikan *Flow* harian pemindai. Berbagi fitur antara guru mengajukan dan anak murid mengajukan.

## 1. Controller Pendaftaran Pengajuan
- [ ] Buat dua pendaftaran mandiri: `TeacherLeaveController` dan `StudentLeaveController`
  - Diakses masing-masing role untuk melampirkan berkas dan form `alasan` dan Enum tipe (`permission`, `sick`).
  - **Lampiran Files**: Upload aman via form, lalu dihubungkan penanda path nya pada Storage `/app/leave-attachments/...`. URL ditolak dari folder Publik!

## 2. Logika Persetujuan Admin / Operator
- [ ] Bangun halaman Approval queue, dengan *button trigger endpoint*: `/admin/teacher-leaves/{id}/approve` & `reject`.
- [ ] Implementasikan `LeaveApprovalAction` (Single action handler file):
  - Ketika sebuah *ID Request Izin* diverifikasi (*Approve*):
    - *Foreach looping* pada setiap urutan hari mulai dari rentang *tanggal start* sampai ke *tanggal end* absennya dia.
    - Cek dengan perisai `isHoliday()`. *SKip* di loop peng-update-an kalau jatuhnya merayapi hari Ahad atau Libur Nasional.
    - Tulis / tumpuk baris absensi hariannya menjadi beralih status secara absolut menyesuaikan enum tipe keperluannya (misal: "Izin"). Terapkan logika yang sama atas porsi absen mapel sesi bila dia murid.
    
## 3. Acceptance Criteria
- [ ] Bukti lampiran dokumen pdf/foto dikunci sistem Laravel secara mutlak di Storage Internal, dicegah ter-listing pada publik eksternal (diakses melalui *Protected URL Wrapper* Controller tersembunyi `Storage::download()`).
- [ ] Status yang `approved` secara sukses merombak / memanipulasi *Record Kehadiran* secara instan.
