Commit Graph
11 Commits
Author SHA1 Message Date
Novy San87 25da284ca2 feat: dukung status PKL/Magang (pkl) dari e-jurnal — validasi sync + pkl; rekap mingguan/bulanan kolom P; export Excel kolom P; warna selaras e-jurnal (S=amber, P=violet) 2026-08-22 20:10:34 +07:00
Novy San87 9078377e7e feat: notifikasi kehadiran ke wali per sesi (hadir/izin/sakit) saat sync e-jurnal + fix violation_id nullable 2026-08-06 13:05:59 +07:00
Bro 4da06fa55d fix: tambah method ping() yg ilang pas revert 2026-07-24 20:01:37 +07:00
Bro a2a41adcef fix: escape character parse error di AttendanceSyncController 2026-07-24 18:49:18 +07:00
Bro 4fa709509f feat: snapshot class_name di setiap presensi & pelanggaran
Migration: tambah kolom:
- attendances.class_name (varchar 100)
- violations.student_class (varchar 100)
- Backfill data existing dari students.class_name

Controller manual: simpan class_name dari form
Sync E-Jurnal: simpan class_name dari lookup student
ViolationService: ambil class_name dari student saat buat
Model: tambah ke fillable

Ini menjamin data historis tetap akurat meskipun
 siswa naik kelas (X→XI→XII) di tahun ajaran baru.
2026-07-24 18:38:35 +07:00
Bro 9a6d3a8c1e 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.
2026-07-24 17:58:50 +07:00
Bro 3aa84387f3 fix: hapus violation jika status berubah dari alpha ke hadir
Sebelumnya violation hanya di-create/update, tidak pernah
dihapus. Jika guru edit jurnal dari alpha jadi hadir, violation
lama tetap ada.

Sekarang: untuk setiap siswa dalam push, sistem cek:
- alpha > 0: create/update violation
- alpha = 0 & ada violation lama: hapus (soft delete)
- siswa tidak ada di push: violation tidak disentuh
2026-07-24 13:38:41 +07:00
Bro f184f43df7 fix: anti-duplikat pelanggaran alpha dari push ulang E-Jurnal
Setiap kali E-Jurnal push ulang (misal edit jurnal), sistem
sekarang cek dulu apakah sudah ada pelanggaran alpha untuk
(student_id + violation_type_id + violation_date) dengan
recorded_by = NULL (system-generated).

- Jika sudah ada: update points + description
- Jika belum: buat baru via ViolationService

Ini mencegah akumulasi pelanggaran duplikat tiap kali guru
mengedit jurnal di E-Jurnal.
2026-07-24 13:33:35 +07:00
Bro a5db795eda fix: auto-violasi dari E-Jurnal via ViolationService + notifikasi realtime
Sync controller sekarang pake ViolationService::recordViolation()
biar notifikasi realtime (AppNotification + broadcast event)
dan pengecekan SP threshold tetap jalan untuk data dari E-Jurnal.

ViolationService: recordViolation() & generateSpLetter()
diubah jadi nullable userId supaya bisa dipanggil tanpa user
(0 = system-generated dari sync)
2026-07-24 13:20:40 +07:00
Bro 1ac4a0ef74 feat: auto-generate pelanggaran alpha dari sync E-Jurnal
AttendanceSyncController sekarang otomatis bikin catatan
pelanggaran (Violation) untuk siswa yang statusnya alpha,
sama seperti mekanisme input manual di Aplikasi Ketertiban.

- Hitung jumlah jam alpha per siswa
- Cari ViolationType dengan slug 'alpha'
- Buat Violation dengan points proporsional
- Recorded_by = null (system-generated dari sync)
2026-07-24 13:18:14 +07:00
Bro a1dfd75d7d feat: API penerima push presensi dari e-jurnal
- AttendanceSyncController: POST /api/v1/attendance/sync
  Token auth, upsert per (student_id, date, lesson_hour)
- Ping endpoint: GET /api/v1/attendance/ping?token=
- CSRF exclusion for api/* routes
- Settings: generate/regenerate E-Jurnal token + copy
- Menu Sinkron: form input token E-Jurnal
2026-07-24 12:54:09 +07:00