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

Laporan Absensi Guru

Rekapitulasi kehadiran, keterlambatan, dan aktivitas mengajar guru.

@stop @section('content')
{{-- CARD FILTER --}}
Filter Data Laporan
{{-- 1. Periode Tanggal --}}
-
{{-- 2. Sekolah (Jika Multi) --}} @if(isset($sekolahs) && count($sekolahs) > 1)
@endif {{-- 3. Guru --}}
{{-- 4. Status --}}
{{-- Tombol Aksi --}}
Export PDF
{{-- TABEL DATA SMART ANALYSIS --}}
@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 {{-- GURU & KELAS --}} {{-- JADWAL (Rencana) --}} {{-- AKTUAL (Realisasi) --}} {{-- DURASI --}} {{-- STATUS KINERJA --}} {{-- AKSI --}} @empty @endforelse
No Guru & Kelas Jadwal (Rencana) Aktual (Realisasi) Durasi Status Kinerja Aksi
{{ $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
No Data
Data Tidak Ditemukan

Coba ubah filter tanggal atau status untuk hasil lainnya.

{{-- Footer Pagination --}}
@stop @section('css') @stop @section('js') @stop