| No |
Guru & Kelas |
Jadwal (Rencana) |
Aktual (Realisasi) |
Durasi |
Status Kinerja |
Aksi |
@forelse($laporans as $row)
@php
// 1. LOGIKA WARNA AVATAR
$colors = ['primary', 'success', 'danger', 'warning', 'info', 'indigo', 'purple', 'teal'];
$color = $colors[$row->user->id % count($colors)];
$initial = strtoupper(substr($row->user->name ?? 'X', 0, 1));
// 2. IDENTIFIKASI VARIABEL DASAR
$isAlpa = $row->status_sesi == 'alpa_mengajar';
$tglReferensi = $row->waktu_mulai ? $row->waktu_mulai->format('Y-m-d') : $row->created_at->format('Y-m-d');
// 3. PARSING WAKTU JADWAL
$jadwalMulai = \Carbon\Carbon::parse($tglReferensi . ' ' . $row->jadwal->jam_mulai);
$jadwalSelesai = \Carbon\Carbon::parse($tglReferensi . ' ' . $row->jadwal->jam_selesai);
// 4. PARSING WAKTU AKTUAL JURNAL
$aktualMulai = $isAlpa ? null : \Carbon\Carbon::parse($row->waktu_mulai);
$aktualSelesai = ($isAlpa || !$row->waktu_selesai) ? null : \Carbon\Carbon::parse($row->waktu_selesai);
// 5. ANALISIS KETERLAMBATAN (Dibulatkan)
$statusMasuk = '';
$telatMenit = 0;
if (!$isAlpa && $aktualMulai) {
$batasMasuk = $jadwalMulai->copy()->addMinutes(10);
if ($aktualMulai->gt($batasMasuk)) {
$telatMenit = intval(round($aktualMulai->diffInMinutes($jadwalMulai)));
$statusMasuk = "Telat {$telatMenit} Mnt";
} else {
$statusMasuk = "Tepat Waktu";
}
}
// 6. ANALISIS CEPAT PULANG (Dibulatkan)
$statusKeluar = '';
$cepatMenit = 0;
if (!$isAlpa && $aktualSelesai) {
if ($aktualSelesai->lt($jadwalSelesai)) {
$cepatMenit = intval(round($jadwalSelesai->diffInMinutes($aktualSelesai)));
$statusKeluar = "Cepat Pulang {$cepatMenit} Mnt";
} else {
$statusKeluar = "Tuntas Waktu";
}
} elseif (!$isAlpa && !$aktualSelesai) {
$statusKeluar = "Sedang Mengajar";
}
// 7. KALKULASI DURASI
$durasiTeks = '-';
if (!$isAlpa && $aktualMulai && $aktualSelesai) {
$durasiJam = intval($aktualMulai->diffInHours($aktualSelesai));
$durasiMenit = intval($aktualMulai->diffInMinutes($aktualSelesai) % 60);
$durasiTeks = ($durasiJam > 0 ? $durasiJam . 'J ' : '') . $durasiMenit . 'M';
} elseif (!$isAlpa && $aktualMulai && !$aktualSelesai) {
$durasiTeks = 'Berjalan...';
}
@endphp
| {{ $loop->iteration }} |
{{-- GURU & KELAS --}}
{{ $row->user->name ?? '-' }}
{{ $row->jadwal->mataPelajaran->nama_mapel ?? '-' }} •
{{ $row->kelas->nama_kelas ?? '-' }}
{{ \Carbon\Carbon::parse($tglReferensi)->translatedFormat('d M Y') }}
|
{{-- JADWAL (Rencana) --}}
{{ $jadwalMulai->format('H:i') }} - {{ $jadwalSelesai->format('H:i') }}
|
{{-- AKTUAL (Realisasi) --}}
@if($isAlpa)
-
@else
{{ $aktualMulai->format('H:i') }}
s/d
@if($aktualSelesai)
{{ $aktualSelesai->format('H:i') }}
@else
@endif
@endif
|
{{-- DURASI --}}
@if($isAlpa)
Kosong
@else
{{ $durasiTeks }}
@endif
|
{{-- STATUS KINERJA --}}
@if($isAlpa)
ALPA (Tidak Masuk)
@else
{!! $statusMasuk !!}
{!! $statusKeluar !!}
@endif
|
{{-- AKSI --}}
|
@empty
Data Tidak Ditemukan
Coba ubah filter tanggal atau status untuk hasil lainnya.
|
@endforelse
{{-- Footer Pagination --}}
Menampilkan {{ $laporans->firstItem() ?? 0 }} - {{ $laporans->lastItem() ?? 0 }} dari total {{ $laporans->total() ?? 0 }} data
{{ $laporans->withQueryString()->links('pagination::bootstrap-4') }}