@extends('layouts.admin') @section('title', 'Rekapitulasi Kehadiran') @section('content') @php $type = request('type', 'siswa'); $daftar_kelas = [ 'VII-A','VII-B','VII-C','VII-D', 'VIII-A','VIII-B','VIII-C','VIII-D', 'IX-A','IX-B','IX-C','IX-D', ]; // ⚠️ FIX: SEBELUMNYA di sini ada kode yang menghitung ulang $tahun/$bulan // sendiri dari request('periode') secara mentah (explode('-', ...)), // terpisah dari $tahun/$bulan yang sudah divalidasi & di-fallback oleh // resolvePeriode() di controller. Akibatnya kalau ada query string yang // aneh (mis. ?periode=abc atau bulan di luar 1-12), TEKS JUDUL di // halaman ini bisa sempat menampilkan nilai mentah yang belum tervalidasi, // padahal DATA ($data_rekap) yang ditampilkan tetap pakai versi yang // sudah di-fallback controller — jadi bisa beda antara judul & isi tabel. // // Sekarang blade ini TIDAK menghitung ulang apa-apa. $tahun, $bulan, dan // $minggu dipakai persis seperti yang dikirim controller (rekapBulanan()), // supaya satu-satunya sumber kebenaran ada di controller. $namaBulan = [ '01'=>'Januari','02'=>'Februari','03'=>'Maret','04'=>'April', '05'=>'Mei','06'=>'Juni','07'=>'Juli','08'=>'Agustus', '09'=>'September','10'=>'Oktober','11'=>'November','12'=>'Desember', ]; // Batas maksimal minggu yang boleh dipilih, dikirim controller. Fallback // ke 5 kalau entah kenapa tidak dikirim, supaya view tetap tidak error. $mingguMaksimal = $mingguMaksimal ?? 5; $ambangAlpaMingguan = $ambangAlpaMingguan ?? 4; // $minggu di sini adalah properti yang DIKIRIM CONTROLLER (sudah // divalidasi & di-null-kan kalau minggunya belum boleh dipilih), // BUKAN request('minggu') mentah — supaya label & isi tabel selalu // menunjukkan periode yang sama persis. $labelMinggu = $minggu ? "Minggu ke-$minggu" : 'Full sebulan'; @endphp
{{-- Header --}}
Rekapitulasi {{ ucfirst($type) }}

Periode: {{ $namaBulan[sprintf('%02d', $bulan)] }} {{ $tahun }} {{ $labelMinggu }}

{{-- Filter --}}
@if($type === 'siswa')
@else
@endif
{{-- Value pakai $tahun/$bulan HASIL VALIDASI CONTROLLER, bukan request('periode') mentah — supaya kalau periode di URL invalid, input ini menampilkan periode fallback yang benar (bulan berjalan), bukan nilai mentah yang salah. --}}
{{-- Dropdown minggu: SEKARANG dibatasi. Hanya minggu yang sudah mulai/berjalan yang muncul sebagai opsi. Kalau bulan yang dipilih adalah bulan berjalan dan baru minggu ke-1, opsi minggu 2-5 tidak akan tampil sama sekali sampai waktunya tiba. Opsi "selected" juga pakai $minggu (hasil validasi controller), bukan request('minggu') mentah — supaya kalau server menolak minggu yang diminta (misal minta minggu 3 padahal baru minggu 1), dropdown ikut balik ke "Full Sebulan", bukan tetap nampilin pilihan yang sudah ditolak. --}}
{{-- Flag legend + toggle --}}
Perlu Perhatian = Alpa ≥ {{ $ambangAlpaMingguan }} kali dalam satu minggu yang sudah selesai (minggu yang masih berjalan tidak dihitung). Berulang = terjadi >1 minggu bulan ini. Perlu Tindak Lanjut = sudah pernah ditandai dievaluasi tapi tetap terulang lagi.
{{-- Table --}}
@if($type === 'siswa') @endif @forelse($data_rekap ?? [] as $i => $d) @php $flag = ($d['minggu_kena_flag'] ?? 0) > 0; $eskalasi = $d['perlu_tindak_lanjut'] ?? false; @endphp @if($type === 'siswa') @endif @empty @endforelse
No Nama IdentitasKelasHadir Izin/Sakit Alpa Persentase
{{ $i + 1 }} {{ $d['nama'] }} @if($eskalasi) Perlu Tindak Lanjut @elseif($flag) {{ ($d['minggu_kena_flag'] ?? 0) > 1 ? 'Berulang ' . $d['minggu_kena_flag'] . 'x' : 'Perlu Perhatian' }} @endif @if(!empty($d['minggu_dalam_pemantauan']))
Pemantauan (minggu ke-{{ implode(', ', $d['minggu_dalam_pemantauan']) }} berjalan) @endif {{-- Untuk tiap minggu yang kena flag: tombol tandai kalau belum dievaluasi, atau badge hijau kalau sudah. --}} @foreach($d['minggu_kena_flag_list'] ?? [] as $w) @php $eval = $d['evaluasi_per_minggu'][$w] ?? ['status' => 'belum']; @endphp @if($eval['status'] === 'sudah')
Mg-{{ $w }}: dievaluasi ({{ $eval['tanggal_evaluasi'] }}) @else
@endif @endforeach
{{ $type === 'siswa' ? 'NISN' : ($d['jenis_identitas'] ?? 'Identitas') }}
{{ $type === 'siswa' ? ($d['nisn'] ?? '-') : ($d['nomor_identitas'] ?? '-') }}
{{ $d['kelas'] }} {{ $d['hadir'] }} hr {{ $d['izin_sakit'] ?? 0 }} hr {{ $d['alpa'] }} hr {{ $d['skor'] }}%

Data tidak ditemukan

Tidak ada rekap kehadiran pada periode ini.

{{-- Modal tandai evaluasi (satu modal dipakai bareng untuk semua baris) --}} @push('scripts') @endpush @endsection