{{-- resources/views/admin/siswa/absensi.blade.php --}} @php $taAktifTbl = \App\Models\TahunAjaran::where('status_akademik', 'aktif')->first(); $semAktifTbl = \App\Models\Semester::where('is_active', true)->first(); $filterAbsenTa = request('absensi_ta_id', request('jadwal_ta_id', $taAktifTbl->id ?? null)); $filterAbsenSem = request('absensi_sem_id', request('jadwal_sem_id', $semAktifTbl->id ?? null)); $filterBulan = request('bulan', date('m')); $mapelSiswa = collect(); if ($siswa->kelas_id && $filterAbsenTa && $filterAbsenSem) { $jadwalSiswa = \App\Models\JadwalMapel::with(['guruMapel.mapel', 'guruMapel.guru']) ->where('kelas_id', $siswa->kelas_id) ->where('tahun_ajaran_id', $filterAbsenTa) ->where('semester_id', $filterAbsenSem) ->whereNotNull('guru_mapel_id') ->get(); $siswaGenderAlias = ($siswa->jenis_kelamin == 'L') ? 'Putra' : 'Putri'; $mapelSiswa = $jadwalSiswa->filter(function($j) use ($siswaGenderAlias) { $tgt = $j->target_gender; if(empty($tgt) || $tgt == 'Campur') return true; $tgtAlias = ($tgt == 'Laki-laki' || $tgt == 'Putra') ? 'Putra' : (($tgt == 'Perempuan' || $tgt == 'Putri') ? 'Putri' : $tgt); return $tgtAlias == $siswaGenderAlias; })->unique('guru_mapel_id'); } $dataAbsensi = \App\Models\Absensi::with(['guruMapel.mapel', 'guruMapel.guru']) ->where('siswa_id', $siswa->id) ->where('tahun_ajaran_id', $filterAbsenTa) ->where('semester_id', $filterAbsenSem) ->when($filterBulan, function($q) use ($filterBulan) { return $q->whereMonth('tanggal', $filterBulan); }) ->orderBy('tanggal', 'desc') ->get(); $groupedAbsensi = $dataAbsensi->groupBy('guru_mapel_id'); @endphp
| No | Mata Pelajaran | Total Absensi | Tanggal Terakhir | Status Terakhir | Keterangan | Aksi | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| H | S | I | A | |||||||||
| {{ $no++ }} | {{ $jadwal->guruMapel->mapel->nama_mapel ?? 'Mapel Tidak Diketahui' }} {{ $jadwal->guruMapel->guru->nama_lengkap ?? '-' }} | {{ $absensiMapel->where('status', 'Hadir')->count() }} | {{ $absensiMapel->where('status', 'Sakit')->count() }} | {{ $absensiMapel->where('status', 'Izin')->count() }} | {{ $absensiMapel->where('status', 'Alpa')->count() }} | @if($dataTerakhir){{ \Carbon\Carbon::parse($dataTerakhir->tanggal)->format('d M Y') }} | @if($dataTerakhir->status == 'Hadir') Hadir @elseif($dataTerakhir->status == 'Sakit') Sakit @elseif($dataTerakhir->status == 'Izin') Izin @else Alpa @endif | {{ $dataTerakhir->keterangan ?? '-' }} | @elseBelum ada input absensi di bulan ini. | @endif{{-- Tombol Input Baru (Selalu Ada) --}} {{-- Tombol Edit & Hapus (Hanya muncul jika ada data terakhir) --}} @if($dataTerakhir) @endif | ||
| Mata Pelajaran Kosong Belum ada data Mata Pelajaran di jadwal siswa ini pada Tahun/Semester yang dipilih. Pastikan Jadwal Mapel sudah diatur. | ||||||||||||