feat: add data change notifications via 30s polling for all roles

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
GuavaPopper
2026-06-04 14:52:25 +07:00
parent f77fc725a8
commit 3ecf7d937c
4 changed files with 119 additions and 0 deletions
+13
View File
@@ -33,6 +33,19 @@ Route::middleware('auth')->group(function () {
// API routes moved here for session + CSRF middleware
Route::prefix('api')->group(function () {
// Notifikasi — semua role authenticated
Route::get('/notifications', function (\Illuminate\Http\Request $request) {
$since = $request->query('since');
$after = $since ? \Carbon\Carbon::parse($since) : now()->subMinutes(1);
return response()->json([
'new_ibadah' => \App\Models\RumahIbadah::where('created_at', '>', $after)->count(),
'new_miskin' => \App\Models\RumahMiskin::where('created_at', '>', $after)->count(),
'latest_ibadah' => \App\Models\RumahIbadah::max('created_at'),
'latest_miskin' => \App\Models\RumahMiskin::max('created_at'),
]);
});
// Rumah Ibadah — read: all roles, write: administrator + pengurus_ibadah
Route::get('/ibadah', [IbadahController::class, 'index']);
Route::middleware('role:administrator|pengurus_ibadah')->group(function () {