From 91b7f1e591b3e52ec561b349d95a79e028b7eeae Mon Sep 17 00:00:00 2001 From: Bro Date: Fri, 24 Jul 2026 13:12:55 +0700 Subject: [PATCH] fix: rekap alpha proporsional berdasarkan max 10 jam/hari MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sebelum: alpha = alphaCount / totalRecord (jika jadwal 1 jam, 1 alpha = 1 hari — tidak akurat) Sesudah: alpha = alphaCount / 10 (max jam sekolah per hari) 1 alpha = 0.1 hari, 10 alpha = 1 hari - Berlaku untuk rekap mingguan dan bulanan --- app/Http/Controllers/AttendanceController.php | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/AttendanceController.php b/app/Http/Controllers/AttendanceController.php index f11d44d..1bbdb98 100644 --- a/app/Http/Controllers/AttendanceController.php +++ b/app/Http/Controllers/AttendanceController.php @@ -293,15 +293,15 @@ class AttendanceController extends Controller $key = $dateStr . '-' . $student->id; $studentAtt = $allAttendances->get($key, collect()); - // Per hari: 1 jika ada minimal 1 record status tsb + // Per hari: binary untuk hadir/sakit/izin/terlambat $hadir = $studentAtt->where('status', 'hadir')->count() > 0 ? 1 : 0; - // Alpha proporsional: jumlah jam alpha / total jam - $total = $studentAtt->count(); + // Alpha proporsional: jumlah jam alpha / 10 (max jam sekolah per hari) $alphaCount = $studentAtt->where('status', 'alpha')->count(); - $alpha = $total > 0 ? round($alphaCount / $total, 1) : 0; + $alpha = round($alphaCount / 10, 1); $sakit = $studentAtt->where('status', 'sakit')->count() > 0 ? 1 : 0; $izin = $studentAtt->where('status', 'izin')->count() > 0 ? 1 : 0; $terlambat = $studentAtt->where('status', 'terlambat')->count() > 0 ? 1 : 0; + $total = $studentAtt->count(); $row['students'][$student->id] = [ 'name' => $student->full_name, @@ -407,12 +407,9 @@ class AttendanceController extends Controller if ($hasIzin) $iCount++; if ($hasTerlambat) $tCount++; - // Alpha proporsional: jika semua jam di hari itu alpha - $totalJam = $dayAtt->count(); + // Alpha proporsional: jumlah jam alpha / 10 (max jam sekolah per hari) $alphaJam = $dayAtt->where('status', 'alpha')->count(); - if ($totalJam > 0) { - $aCount += round($alphaJam / $totalJam, 1); - } + $aCount += round($alphaJam / 10, 1); } $row['students'][$student->id] = [