# Task Breakdown: 14 - Manajemen Kalender & Libur

**Referensi Dokumen:** FR-14, Tech Spec 4.7
**Tujuan:** Manajemen rentang tanggal yang dibebaskan atas seluruh / sebagian pemindai. Tanggal ini akan dirujuk terus-menerus ke serangkaian validasi fungsional di hampir seluruh komponen sistem.

## 1. Controller Pengelola
- [ ] `HolidayController` (`super_admin`):
  - Form pendataan libur. Cakupan fields: `start_date`, `end_date`, tipe (`holiday` & `school_event`), Scope cakupan globalisasi: `whole_school` atau target partikular `per_class`.
  - Form ceklist boolean *Sesi Absensi Pemindai Dinyalakan/Dimatikan* (`is_daily_attendance_active`).

## 2. Scope Ekstrem (Pivot Table)
- [ ] Sisipkan alur manipulasi ke dalam Pivot tabel `CLASSROOM_HOLIDAYS` di relasi ManyToMany, ini hanya tereksekusi pada rekaman inputan bila option scope menargetkan "Per Kelas" tertentu.

## 3. Global Helper: *isHoliday(Date)*
- [ ] Konstruksikan *method global* (sebaiknya masuk di utilitas Helper file, atau Statik fungsi kelas Model), `Holiday::isHoliday($date, $classroomId = null)`
  - Parameter menerima Tanggal yang akan divonis.
  - Melakukan kueri apakah Tanggal tersebut jatuh di pertengahan (*BETWEEN*) rentang `start_date` menuju `end_date` yang bertanda non-aktif *daily attendance*?.
  - Menyambungkannya kepada kepemilikan filter Classroom jika ia tertarget spesifik.

## 4. Acceptance Criteria
- [ ] Operator dapat mewujudkan hari libur nasional untuk dicatat kalendernya dan hari libur study-tour angkatan kelas I saja.
- [ ] Helper `isHoliday()` sanggup di-ekstrak kemanapun yang memerlukan perisai *Skip* operasi (seperti file logic `ScanProcessingService`).
