feat: add dashboard transfer and assistance summaries

This commit is contained in:
GuavaPopper
2026-06-10 18:13:40 +07:00
parent 91fc2fbd16
commit c4157cec8d
5 changed files with 130 additions and 1 deletions
+25
View File
@@ -6,6 +6,7 @@ use App\Http\Controllers\AnggotaKeluargaController;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\BackupController;
use App\Http\Controllers\BantuanController;
use App\Http\Controllers\DosenSummaryController;
use App\Http\Controllers\ExportController;
use App\Http\Controllers\IbadahController;
use App\Http\Controllers\ImportController;
@@ -64,15 +65,39 @@ Route::middleware('auth')->group(function () {
Route::get('/notifications', function (\Illuminate\Http\Request $request) {
$since = $request->query('since');
$after = $since ? \Carbon\Carbon::parse($since) : now()->subMinutes(1);
$user = $request->user();
$transferQuery = \App\Models\PermohonanTransfer::query();
$pendingTransferQuery = \App\Models\PermohonanTransfer::where('status', 'pending');
if ($user->hasRole('pengurus_ibadah')) {
$ownedIbadahIds = \App\Models\RumahIbadah::where('user_id', $user->id)->pluck('id');
$transferQuery->where(function ($query) use ($ownedIbadahIds) {
$query->whereIn('dari_ibadah_id', $ownedIbadahIds)
->orWhereIn('ke_ibadah_id', $ownedIbadahIds);
});
$pendingTransferQuery->whereIn('ke_ibadah_id', $ownedIbadahIds);
} elseif (!$user->hasRole('administrator')) {
$pendingTransferQuery->whereRaw('1 = 0');
}
return response()->json([
'new_ibadah' => \App\Models\RumahIbadah::where('created_at', '>', $after)->count(),
'new_miskin' => \App\Models\RumahMiskin::where('created_at', '>', $after)->count(),
'new_anggota' => \App\Models\AnggotaKeluarga::where('created_at', '>', $after)->count(),
'new_bantuan' => \App\Models\RiwayatBantuan::where('created_at', '>', $after)->count(),
'new_transfer' => $transferQuery->where('created_at', '>', $after)->count(),
'pending_transfer' => $pendingTransferQuery->count(),
'latest_ibadah' => \App\Models\RumahIbadah::max('created_at'),
'latest_miskin' => \App\Models\RumahMiskin::max('created_at'),
'latest_anggota' => \App\Models\AnggotaKeluarga::max('created_at'),
'latest_bantuan' => \App\Models\RiwayatBantuan::max('created_at'),
'latest_transfer' => \App\Models\PermohonanTransfer::max('created_at'),
]);
});
Route::get('/dashboard/dosen-summary', DosenSummaryController::class);
// Rumah Ibadah — read: all roles, write: administrator + pengurus_ibadah
Route::get('/ibadah', [IbadahController::class, 'index']);
Route::middleware('role:administrator|pengurus_ibadah')->group(function () {