startSection('title', 'Preview Import Absensi'); ?> startSection('content'); ?> ['bg'=>'#DCFCE7','c'=>'#166534','ic'=>'β '], 'Terlambat' => ['bg'=>'#FEF9C3','c'=>'#92400E','ic'=>'β°'], 'Alpa' => ['bg'=>'#FEE2E2','c'=>'#991B1B','ic'=>'β'], 'Pulang' => ['bg'=>'#FFF7ED','c'=>'#9A3412','ic'=>'π '], 'Izin' => ['bg'=>'#F3E8FF','c'=>'#6B21A8','ic'=>'π'], 'Sakit' => ['bg'=>'#E0F2FE','c'=>'#0C4A6E','ic'=>'π₯'], ]; // ββ 1. Kolom kegiatan: UNIK, diurutkan waktu_mulai βββββββββββββββββββββββββββ $kegiatanCols = collect($hasilEnriched) ->flatMap(fn($h) => $h['rows']) ->unique('kegiatan_id') ->sortBy('waktu_mulai') ->values() ->map(fn($r) => [ 'kegiatan_id' => $r['kegiatan_id'], 'nama' => $r['nama_kegiatan'], 'waktu_mulai' => $r['waktu_mulai'], ]); // ββ 2. Susun data: [tanggal][id_santri_or_mesin] = data ββββββββββββββββββββββ $byTanggalSantri = []; $santriList = []; // untuk urutan santri konsisten foreach ($hasilEnriched as $h) { $tgl = $h['tanggal']; $key = $h['id_santri'] ?? ('__'.$h['id_mesin']); $byTanggalSantri[$tgl][$key] = $h; if (!isset($santriList[$key])) { $santriList[$key] = [ 'nama' => $h['nama_web'] ?? $h['nama_mesin'], 'kelas' => $h['kelas'] ?? '-', 'status' => $h['match_status'], ]; } } ksort($byTanggalSantri); // ββ 3. Statistik βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ $allRows = collect($hasilEnriched)->flatMap(fn($h) => $h['rows']); $totalKonflik = $allRows->where('is_conflict', true)->count(); $hadir = $allRows->where('status_final','Hadir')->count(); $terlambat = $allRows->where('status_final','Terlambat')->count(); $alpa = $allRows->where('status_final','Alpa')->count(); $notMapped = collect($hasilEnriched)->where('match_status','NOT_MAPPED')->count(); ?>
stopSection(); ?> make('layouts.app', \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>