{{-- resources/views/admin/kegiatan/riwayat/detail-santri.blade.php --}} @extends('layouts.app') @section('content') @php $totalHadirEfektif = $stats['_hadir_efektif'] ?? 0; $totalHadir = $stats['Hadir'] ?? 0; $totalTerlambat = $stats['Terlambat'] ?? 0; $totalIzin = $stats['Izin'] ?? 0; $totalSakit = $stats['Sakit'] ?? 0; $totalAlpa = $stats['Alpa'] ?? 0; $persenHadir = ($totalHadirEfektif + $totalIzin + $totalSakit + $totalAlpa) > 0 ? round($totalHadirEfektif / ($totalHadirEfektif + $totalIzin + $totalSakit + $totalAlpa) * 100, 1) : 0; @endphp {{-- Header --}}

Riwayat Kehadiran: {{ $santri->nama_lengkap }}

Kembali
{{-- Info Santri --}}

{{ $santri->nama_lengkap }}

{{ $santri->id_santri }} {{ $santri->kelas }} {{ $santri->status }} @if($persenHadir > 0) Kehadiran {{ $persenHadir }}% @endif
{{-- Catatan logika Terlambat --}} @if($totalTerlambat > 0)
{{ $totalTerlambat }}x Terlambat dihitung sebagai Hadir (bukan Alpa). Total hadir efektif: {{ $totalHadirEfektif }} kali ({{ $totalHadir }} hadir tepat waktu + {{ $totalTerlambat }} terlambat).
@endif {{-- KPI Cards --}}
{{ $totalHadirEfektif }}
Hadir Efektif
@if($totalTerlambat > 0)
{{ $totalHadir }}+{{ $totalTerlambat }}tl
@endif
{{ $totalTerlambat }}
Terlambat
{{ $totalIzin }}
Izin
{{ $totalSakit }}
Sakit
{{ $totalAlpa }}
Alpa
{{-- Tren 30 Hari --}} @if($riwayat30Hari->count() > 0)

Tren Kehadiran 30 Hari Terakhir (Hadir + Terlambat)

@endif {{-- ── RIWAYAT LENGKAP (Tabbed per Kategori) ──────────────────────────────── --}}

Riwayat Lengkap per Kategori

@if($kategoriList->count() > 0) {{-- Tab list --}}
@foreach($kategoriList as $kat) @php $tabParams = array_merge(request()->query(), [ 'tab_kat' => $kat->kategori_id, 'per_page' => $perPage, 'page' => 1, ]); $isActive = ($activeKategori == $kat->kategori_id); $pctKat = $kat->total > 0 ? round($kat->hadir_efektif / $kat->total * 100) : 0; @endphp {{ $kat->nama_kategori }} {{ $kat->total }} @if($kat->hadir_efektif > 0) {{ $pctKat }}% @endif @endforeach
@endif
@if($riwayats->count() > 0) {{-- Toolbar: info + per-page --}}
@if(!$showAll) Menampilkan {{ $riwayats->firstItem() }}–{{ $riwayats->lastItem() }} dari {{ $riwayats->total() }} riwayat @else Menampilkan semua {{ $riwayats->total() }} riwayat @endif @php $activeKat = $kategoriList->firstWhere('kategori_id', $activeKategori); @endphp @if($activeKat) — {{ $activeKat->nama_kategori }} @endif
Tampilkan:
@foreach([15, 50, 100] as $pp) @php $ppParams = array_merge(request()->query(), ['per_page' => $pp, 'page' => 1]); @endphp {{ $pp }} @endforeach {{-- Semua --}} @php $allParams = array_merge(request()->query(), ['per_page' => 'all', 'page' => 1]); @endphp Semua
{{-- Table --}}
@foreach($riwayats as $idx => $riwayat) @endforeach
No Tanggal Nama Kegiatan Status Waktu
{{ $riwayats->firstItem() + $idx }} {{ $riwayat->tanggal->format('d/m/Y') }}
{{ $riwayat->tanggal->locale('id')->isoFormat('ddd') }}
{{ $riwayat->kegiatan->nama_kegiatan }}
{{ date('H:i', strtotime($riwayat->kegiatan->waktu_mulai)) }}–{{ date('H:i', strtotime($riwayat->kegiatan->waktu_selesai)) }}
@if(method_exists($riwayat, 'getStatusBadgeAttribute') || isset($riwayat->status_badge)) {!! $riwayat->status_badge !!} @else @php $st = $riwayat->status; @endphp {{ $st }} @endif {{ $riwayat->waktu_absen ? date('H:i', strtotime($riwayat->waktu_absen)) : '–' }}
{{-- Pagination (disembunyikan jika mode Semua) --}} @if(!$showAll && $riwayats->lastPage() > 1)
{{ $riwayats->links() }}
@elseif($showAll)
Semua {{ $riwayats->total() }} data ditampilkan.   @php $backPaged = array_merge(request()->query(), ['per_page' => 15, 'page' => 1]); @endphp Kembali ke paginasi
@endif @elseif($kategoriList->count() > 0)

Belum ada riwayat untuk kategori ini.

@else

Santri ini belum memiliki riwayat kehadiran apapun.

@endif
{{-- ── CHART JS ─────────────────────────────────────────────────────────────── --}} @if($riwayat30Hari->count() > 0) @endif @endsection