@extends('layouts.app')
@section('title', 'Kegiatan & Absensi')
@section('content')
{{-- ── HERO ── --}}
Tren Kehadiran
{{ $diffDays <= 31 ? 'Harian' : 'Mingguan' }}
{{-- ── Absensi Terbaru + Kalender ──
Pakai class .kg-recent-cal-grid (bukan inline style)
agar breakpoint CSS bisa meng-override ke 1 kolom --}}
{{-- Catatan Absensi Terbaru --}}
Absensi Terbaru
{{ $statFrom->locale('id')->isoFormat('D MMM') }} – {{ $statTo->locale('id')->isoFormat('D MMM YY') }}
@if($recentAbsensi->count() > 0)
@foreach($recentAbsensi as $ab)
@php $sl = strtolower($ab->status); @endphp
@if($ab->status === 'Hadir')
@elseif($ab->status === 'Terlambat')
@elseif($ab->status === 'Izin')
@elseif($ab->status === 'Sakit')
@elseif($ab->status === 'Alpa')
@elseif($ab->status === 'Pulang')
@endif
{{ $ab->kegiatan->nama_kegiatan }}
{{ $ab->kegiatan->kategori->nama_kategori }}
@if($ab->waktu_absen)
{{ \Carbon\Carbon::parse($ab->waktu_absen)->format('H:i') }}
@endif
@php $metode = $ab->metode_absen ?? ''; @endphp
{{ $metode === 'Import_Mesin' ? 'Mesin' : ($metode ?: 'Manual') }}
{{ $ab->status }}
{{ \Carbon\Carbon::parse($ab->tanggal)->locale('id')->isoFormat('D MMM') }}
@endforeach
@else
Belum ada absensi dalam periode ini.
@endif
{{-- Kalender Mini --}}
@php $calMonth = collect($heatmapMonths)->last(); @endphp
@if($calMonth)
{{ $calMonth['label'] }}
@foreach(['#f3f4f6','#bbf7d0','#4ade80','#16a34a','#064e2d'] as $hc)
@endforeach
Hadir
@foreach(['S','S','R','K','J','S','M'] as $hn)
{{ $hn }}
@endforeach
@for($e = 1; $e < $calMonth['firstDayOfWeek']; $e++)
@endfor
@foreach($calMonth['days'] as $day)
{{ $day['day'] }}
@endforeach
@endif
{{-- ╔══════════════════════════════════════════╗ --}}
{{-- ║ PANEL JADWAL ║ --}}
{{-- ╚══════════════════════════════════════════╝ --}}
@if($jadwalDalamRange->count() > 0)
@php
$hariOrder = ['Senin','Selasa','Rabu','Kamis','Jumat','Sabtu','Ahad'];
$jadGrouped = $jadwalDalamRange->groupBy('hari')
->sortBy(fn($v,$k) => array_search($k, $hariOrder));
@endphp
@foreach($jadGrouped as $hari => $jadwals)
{{ $hari }}
@if($hari === $hariIni)
(Hari Ini)
@endif
@foreach($jadwals as $jadwal)
@php
$statusAbsen = $hari === $hariIni
? ($absensiHariIni[$jadwal->kegiatan_id] ?? null)
: ($absensiDalamRange[$jadwal->kegiatan_id] ?? null);
$sc = $statusAbsen ? 's-' . strtolower($statusAbsen) : 's-belum';
@endphp
{{ date('H:i', strtotime($jadwal->waktu_mulai)) }}
{{ date('H:i', strtotime($jadwal->waktu_selesai)) }}
{{ $jadwal->nama_kegiatan }}
{{ $jadwal->kategori->nama_kategori }}
@if($jadwal->materi)
{{ Str::limit($jadwal->materi, 28) }}
@endif
@if($statusAbsen)
@if($statusAbsen === 'Terlambat')
@elseif($statusAbsen === 'Pulang')
@endif
{{ $statusAbsen }}
@elseif($hari === $hariIni)
Belum
@endif
Detail
@endforeach
@endforeach
@else
Tidak ada kegiatan terjadwal dalam periode ini.
@endif
@endsection