From 9a6d3a8c1e21599aaa4eeb7496c16d6a32235f39 Mon Sep 17 00:00:00 2001 From: Bro Date: Fri, 24 Jul 2026 17:58:50 +0700 Subject: [PATCH] fix: akumulasi alpha dari multiple push Sebelum: violation update cuma dari alphaCount push saat itu, push ke-2 overwrite data push ke-1. Sesudah: hitung total alpha dari DB (Attendance::count), violation selalu mencerminkan total akumulasi. --- .../Controllers/Api/AttendanceSyncController.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Api/AttendanceSyncController.php b/app/Http/Controllers/Api/AttendanceSyncController.php index e5dade4..8648f2a 100644 --- a/app/Http/Controllers/Api/AttendanceSyncController.php +++ b/app/Http/Controllers/Api/AttendanceSyncController.php @@ -117,7 +117,11 @@ class AttendanceSyncController extends Controller foreach ($allStudentIdsInPush as $studentId => $_) { try { - $count = $alphaCounts[$studentId] ?? 0; + // Hitung total alpha di DB (akumulasi dari semua push, bukan cuma push ini) + $totalAlpha = \App\Models\Attendance::where('student_id', $studentId) + ->where('date', $alphaDate) + ->where('status', 'alpha') + ->count(); // Cari existing system-generated violation $existing = \App\Models\Violation::where('student_id', $studentId) @@ -126,10 +130,10 @@ class AttendanceSyncController extends Controller ->whereNull('recorded_by') ->first(); - if ($count > 0) { + if ($totalAlpha > 0) { // Ada alpha → buat/update violation - $points = max(1, (int) round(($alphaType->points / 10) * $count)); - $desc = "Alpha - Tidak hadir tanpa keterangan ({$count} jam pelajaran)"; + $points = max(1, (int) round(($alphaType->points / 10) * $totalAlpha)); + $desc = "Alpha - Tidak hadir tanpa keterangan ({$totalAlpha} jam pelajaran)"; if ($existing) { $existing->update([