{{-- 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
Rekap Absensi Siswa (Per Mata Pelajaran)
Filter: @php $semesters = \App\Models\Semester::all(); @endphp
Total H: {{ $dataAbsensi->where('status', 'Hadir')->count() }} Total S: {{ $dataAbsensi->where('status', 'Sakit')->count() }} Total I: {{ $dataAbsensi->where('status', 'Izin')->count() }} Total A: {{ $dataAbsensi->where('status', 'Alpa')->count() }}
@php $no = 1; @endphp @forelse($mapelSiswa as $jadwal) @php $guruMapelId = $jadwal->guru_mapel_id; $absensiMapel = $groupedAbsensi->get($guruMapelId, collect()); $dataTerakhir = $absensiMapel->first(); $namaMapelLengkap = ($jadwal->guruMapel->mapel->nama_mapel ?? '') . ' - ' . ($jadwal->guruMapel->guru->nama_lengkap ?? ''); @endphp @if($dataTerakhir) @else @endif @empty @endforelse
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() }}{{ \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 ?? '-' }} Belum ada input absensi di bulan ini. {{-- Tombol Input Baru (Selalu Ada) --}} {{-- Tombol Edit & Hapus (Hanya muncul jika ada data terakhir) --}} @if($dataTerakhir)
@csrf @method('DELETE')
@endif
Mata Pelajaran Kosong Belum ada data Mata Pelajaran di jadwal siswa ini pada Tahun/Semester yang dipilih. Pastikan Jadwal Mapel sudah diatur.
@push('scripts') @endpush