feat: API wali murid (Sanctum) + verifikasi admin
- Pasang laravel/sanctum, routes/api.php (prefix api/v1, 10 endpoint) - Migrasi: parent_name di students, parent_students (pivot wali↔anak), parent_devices (token FCM), permission parents-verify - Auth wali: registrasi NISN+HP (auto-verify jika HP cocok data siswa, pending jika tidak) + login token Sanctum - Endpoint: me, logout, students, link anak, violations, sp-letters, notifications, register device - Halaman admin Verifikasi Wali (approve/reject) + menu sidebar - Sync kesiswaan: tarik data orang tua (student_parents) ke students - 8 feature test baru (ParentApiTest) — total suite 39 test hijau
This commit is contained in:
@@ -45,6 +45,13 @@ class StudentSyncService
|
||||
continue;
|
||||
}
|
||||
|
||||
// Data wali/orang tua: pilih kontak utama (guardian > father > mother)
|
||||
$parents = collect($item['parents'] ?? []);
|
||||
$primaryParent = $parents->first(fn ($p) => ($p['relation'] ?? '') === 'guardian')
|
||||
?? $parents->first(fn ($p) => ($p['relation'] ?? '') === 'father')
|
||||
?? $parents->first(fn ($p) => ($p['relation'] ?? '') === 'mother')
|
||||
?? $parents->first();
|
||||
|
||||
// Use NISN as primary key, fallback to student_number if NISN is null
|
||||
$nisn = $item['nisn'] ?? null;
|
||||
if (!$nisn) {
|
||||
@@ -89,6 +96,8 @@ class StudentSyncService
|
||||
'date_of_birth' => $item['date_of_birth'] ?: null,
|
||||
'address' => $item['address'],
|
||||
'phone_number' => $item['phone_number'],
|
||||
'parent_name' => $primaryParent ? trim((string) $primaryParent['name']) : null,
|
||||
'parent_phone' => $primaryParent ? ($primaryParent['phone_number'] ?: null) : null,
|
||||
'email' => $item['email'],
|
||||
'class_name' => $className,
|
||||
'class_level' => $classData['level'] ?? $item['class_level'] ?? 'X',
|
||||
|
||||
Reference in New Issue
Block a user