feat: endpoint prestasi siswa (student_achievements kesiswaan)
This commit is contained in:
@@ -450,6 +450,48 @@ class ParentStudentController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prestasi putra/putri (dari student_achievements database kesiswaan).
|
||||
*/
|
||||
public function achievements(Request $request, Student $student): JsonResponse
|
||||
{
|
||||
$hasLink = ParentStudent::where('user_id', $request->user()->id)
|
||||
->where('student_id', $student->id)
|
||||
->where('status', 'active')
|
||||
->exists();
|
||||
|
||||
abort_unless($hasLink, 403, 'Putra/putri belum tertaut aktif.');
|
||||
|
||||
try {
|
||||
$rows = DB::connection('kesiswaan')
|
||||
->table('student_achievements')
|
||||
->where('student_id', $student->source_id)
|
||||
->orderByDesc('achievement_date')
|
||||
->orderByDesc('achievement_year')
|
||||
->get();
|
||||
|
||||
$items = $rows->map(fn ($r) => [
|
||||
'name' => $r->achievement_name,
|
||||
'category' => $r->category,
|
||||
'level' => $r->level,
|
||||
'organizer' => $r->organizer,
|
||||
'rank' => $r->rank,
|
||||
'date' => $r->achievement_date,
|
||||
'year' => $r->achievement_year,
|
||||
'description' => $r->description,
|
||||
])->values();
|
||||
|
||||
return response()->json([
|
||||
'achievements' => $items,
|
||||
'total' => $items->count(),
|
||||
]);
|
||||
} catch (\Throwable $e) {
|
||||
Log::error('Prestasi gagal dimuat: '.$e->getMessage());
|
||||
|
||||
return response()->json(['achievements' => [], 'total' => 0]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tautkan anak tambahan (kakak/adik) ke akun wali.
|
||||
*/
|
||||
|
||||
@@ -41,6 +41,7 @@ Route::middleware('auth:sanctum')->prefix('parent')->group(function () {
|
||||
Route::get('/students/{student}/violations-stats', [ParentStudentController::class, 'violationsStats'])->name('api.parent.students.violations-stats');
|
||||
Route::get('/students/{student}/grades', [ParentStudentController::class, 'grades'])->name('api.parent.students.grades');
|
||||
Route::get('/students/{student}/classmates', [ParentStudentController::class, 'classmates'])->name('api.parent.students.classmates');
|
||||
Route::get('/students/{student}/achievements', [ParentStudentController::class, 'achievements'])->name('api.parent.students.achievements');
|
||||
|
||||
// Notifikasi & perangkat
|
||||
Route::get('/notifications', [ParentNotificationController::class, 'index'])->name('api.parent.notifications');
|
||||
|
||||
Reference in New Issue
Block a user