@extends('adminlte::page') @section('title', 'Smart Laporan Kinerja Guru | Smart Cendekia') @section('plugins.Select2', true) @section('plugins.Datatables', true) @section('content_header')

Monitoring Kinerja & Jam Mengajar

Analisis cerdas kehadiran, keterlambatan, durasi, dan indikasi pulang lebih awal.

Export PDF
@stop @section('content')
{{-- FILTER CARD --}}
{{-- 1. Periode --}}
-
{{-- 2. Filter Lembaga / Sekolah (Hanya muncul jika data > 0) --}} @if(isset($sekolahs) && count($sekolahs) > 0)
@endif {{-- 3. Guru --}}
{{-- 4. Tombol Tampilkan --}}
{{-- TABEL HASIL SMART ANALYSIS --}}
{{-- FIX: Variabel disamakan jadi $row --}} @forelse($laporans as $row) @php // 1. 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'); // 2. PARSING WAKTU JADWAL $jadwalMulai = \Carbon\Carbon::parse($tglReferensi . ' ' . $row->jadwal->jam_mulai); $jadwalSelesai = \Carbon\Carbon::parse($tglReferensi . ' ' . $row->jadwal->jam_selesai); // 3. 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); // 4. ANALISIS KETERLAMBATAN $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"; } } // 5. ANALISIS CEPAT PULANG $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 = "Berjalan"; } // 6. 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...'; } // Generator Warna Avatar (FIX: gunakan variable $row) $colors = ['primary', 'success', 'danger', 'warning', 'info', 'indigo', 'teal']; $color = $colors[$row->user->id % count($colors)]; $initial = strtoupper(substr($row->user->name ?? 'X', 0, 1)); @endphp {{-- GURU & KELAS --}} {{-- JADWAL (Rencana) --}} {{-- AKTUAL (Realisasi) --}} {{-- DURASI --}} {{-- STATUS KINERJA --}} @empty {{-- Data kosong ditangani Datatables --}} @endforelse
No Guru & Kelas Jadwal (Rencana) Aktual (Realisasi) Durasi Mengajar Status Kinerja
{{ $loop->iteration }}
{{ $initial }}
{{ $row->user->name ?? '-' }} {{ $row->jadwal->mataPelajaran->nama_mapel ?? '-' }} • {{ $row->kelas->nama_kelas ?? '-' }}
{{ \Carbon\Carbon::parse($tglReferensi)->translatedFormat('d M Y') }}
{{ $jadwalMulai->format('H:i') }} - {{ $jadwalSelesai->format('H:i') }}
@if($isAlpa) - @else
{{ $aktualMulai->format('H:i') }} s/d @if($aktualSelesai) {{ $aktualSelesai->format('H:i') }} @else @endif
@endif
@if($isAlpa) Kosong @else {{ $durasiTeks }} @endif @if($isAlpa) ALPA (Tidak Masuk) @else
{!! $statusMasuk !!} {!! $statusKeluar !!}
@endif
@stop @section('css') @stop @section('js') @stop