feat: endpoint notifikasi unread count (7 hari)

This commit is contained in:
Novy San87
2026-08-06 18:34:26 +07:00
parent d3825df488
commit 8f866737a0
2 changed files with 25 additions and 0 deletions
@@ -54,6 +54,30 @@ class ParentNotificationController extends Controller
]); ]);
} }
/**
* Jumlah notifikasi penting (pelanggaran/SP) 7 hari terakhir — untuk badge.
*/
public function unreadCount(Request $request): JsonResponse
{
$user = $request->user();
$studentIds = ParentStudent::where('user_id', $user->id)
->where('status', 'active')
->pluck('student_id')
->all();
if (empty($studentIds)) {
return response()->json(['count' => 0]);
}
$count = ViolationNotification::whereIn('student_id', $studentIds)
->where('channel', 'push') // pelanggaran & SP (bukan kehadiran)
->where('created_at', '>=', now()->subDays(7))
->count();
return response()->json(['count' => $count]);
}
/** /**
* Daftarkan perangkat (token FCM) untuk push notification. * Daftarkan perangkat (token FCM) untuk push notification.
*/ */
+1
View File
@@ -43,6 +43,7 @@ Route::middleware('auth:sanctum')->prefix('parent')->group(function () {
// Notifikasi & perangkat // Notifikasi & perangkat
Route::get('/notifications', [ParentNotificationController::class, 'index'])->name('api.parent.notifications'); Route::get('/notifications', [ParentNotificationController::class, 'index'])->name('api.parent.notifications');
Route::get('/notifications/unread', [ParentNotificationController::class, 'unreadCount'])->name('api.parent.notifications.unread');
Route::get('/school-informations', [ParentSchoolInformationController::class, 'index'])->name('api.parent.school-informations'); Route::get('/school-informations', [ParentSchoolInformationController::class, 'index'])->name('api.parent.school-informations');
Route::get('/academic-calendar', [ParentSchoolInformationController::class, 'calendar'])->name('api.parent.academic-calendar'); Route::get('/academic-calendar', [ParentSchoolInformationController::class, 'calendar'])->name('api.parent.academic-calendar');
Route::post('/devices', [ParentNotificationController::class, 'registerDevice'])->name('api.parent.devices'); Route::post('/devices', [ParentNotificationController::class, 'registerDevice'])->name('api.parent.devices');