@extends('adminlte::page') @section('title', 'Laporan Absensi | Smart Cendekia') {{-- Aktifkan Plugin Select2 --}} @section('plugins.Select2', true) @section('content_header')

Laporan Absensi Global

Rekapitulasi kehadiran siswa dan pegawai dari sistem gerbang utama.

Export PDF
@stop @section('content')
{{-- CARD FILTER DATA --}}
{{-- 1. Filter Tanggal --}}
-
{{-- 2. Filter Kategori --}}
{{-- 3. Filter Sekolah --}} @if(isset($sekolahs) && count($sekolahs) > 0)
{{-- HAPUS onchange="this.form.submit()" dan TAMBAHKAN id="sekolah_filter" --}}
@endif {{-- 4. Filter Kelas --}}
{{-- TAMBAHKAN id="kelas_filter" --}}
{{-- 5. Filter Status & Tombol (Digabung agar responsif) --}}
{{-- CARD TABEL HASIL --}}
@forelse($laporans as $row) @php // Logic Warna Avatar $colors = ['primary', 'success', 'danger', 'warning', 'info', 'indigo', 'purple', 'teal']; $rawId = $row->siswa_id ?? $row->user_id ?? 1; $color = $colors[$rawId % count($colors)]; $namaUser = $row->siswa ? $row->siswa->nama_lengkap : ($row->user->name ?? 'X'); $initial = strtoupper(substr($namaUser, 0, 1)); // Logic Waktu $masuk = $row->waktu_masuk ? \Carbon\Carbon::parse($row->waktu_masuk) : null; $pulang = $row->waktu_pulang ? \Carbon\Carbon::parse($row->waktu_pulang) : null; // Logic Durasi Lama di Sekolah $durasiTeks = '-'; if ($masuk && $pulang) { $j = intval($masuk->diffInHours($pulang)); $m = intval($masuk->diffInMinutes($pulang) % 60); $durasiTeks = ($j > 0 ? $j.'J ' : '') . $m . 'M'; } elseif ($masuk && !$pulang && !in_array($row->status_kehadiran, ['Alpa', 'Sakit', 'Izin'])) { $durasiTeks = 'Di Sekolah'; } // Logic Status $badgeClass = 'bg-light-secondary text-muted'; $icon = 'fa-minus'; if ($row->status_kehadiran == 'Hadir') { $badgeClass = 'bg-light-success text-success'; $icon = 'fa-check-circle'; } elseif ($row->status_kehadiran == 'Terlambat') { $badgeClass = 'bg-light-warning text-warning'; $icon = 'fa-clock'; } elseif (in_array($row->status_kehadiran, ['Izin', 'Sakit'])) { $badgeClass = 'bg-light-info text-info'; $icon = 'fa-info-circle'; } elseif ($row->status_kehadiran == 'Alpa') { $badgeClass = 'bg-light-danger text-danger'; $icon = 'fa-times-circle'; } @endphp {{-- Tanggal --}} {{-- Identitas User --}} {{-- Kelas / Jabatan --}} {{-- Jam Masuk --}} {{-- Jam Pulang --}} {{-- Durasi (Lama di sekolah) --}} {{-- Status --}} @empty @endforelse
No Waktu & Tanggal Identitas User Kelas / Jabatan Masuk Pulang Durasi Status
{{ $loop->iteration + ($laporans->currentPage() - 1) * $laporans->perPage() }} @if($masuk)
{{ $masuk->translatedFormat('d M Y') }} {{ $masuk->translatedFormat('l') }}
@else - @endif
{{-- Avatar --}}
@if($row->siswa && $row->siswa->foto_url) @else
{{ $initial }}
@endif
{{-- Teks Nama --}}
@if($row->siswa) {{ $row->siswa->nama_lengkap }} NIS: {{ $row->siswa->nisn ?? $row->siswa->nis ?? '-' }} @elseif($row->user) {{ $row->user->name }} NIP: {{ $row->user->username ?? '-' }} @else Data Terhapus @endif
@if($row->siswa) {{ $row->siswa->kelas->nama_kelas ?? '-' }} @else @php $roleRaw = $row->user->role instanceof \App\Enums\UserRole ? $row->user->role->value : ($row->user->role ?? 'Staff'); @endphp {{ ucwords(str_replace('_', ' ', $roleRaw)) }} @endif @if(in_array($row->status_kehadiran, ['Alpa', 'Sakit', 'Izin']) && !$masuk) - @else {{ $masuk ? $masuk->format('H:i') : '-' }} @endif @if($pulang) {{ $pulang->format('H:i') }} @else - @endif @if($durasiTeks == 'Di Sekolah') Aktif @else {{ $durasiTeks }} @endif
{{ $row->status_kehadiran }} @if($row->keterangan) {{ $row->keterangan }} @endif
Data Tidak Ditemukan

Coba ubah filter kategori atau tanggal untuk hasil lainnya.

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