0, 'dewasa' => 0, 'lansia' => 0, 'tidak_diketahui' => 0, ]; foreach ($anggota as $item) { if ($item->umur === null) { $umur['tidak_diketahui']++; } elseif ($item->umur < 18) { $umur['anak']++; } elseif ($item->umur < 60) { $umur['dewasa']++; } else { $umur['lansia']++; } } $pendidikan = array_merge( ['tidak_sekolah' => 0, 'sd' => 0, 'smp' => 0, 'sma' => 0, 'd3' => 0, 's1_plus' => 0, 'tidak_diketahui' => 0], $anggota->countBy(fn($item) => $item->pendidikan ?: 'tidak_diketahui')->all() ); $statusHidup = array_merge( ['hidup' => 0, 'meninggal' => 0], $anggota->countBy('status_hidup')->all() ); $transferCounts = array_merge( ['pending' => 0, 'disetujui' => 0, 'ditolak' => 0], PermohonanTransfer::all()->countBy('status')->all() ); return response()->json([ 'anggota' => [ 'total' => $anggota->count(), 'status_hidup' => $statusHidup, 'pendidikan' => $pendidikan, 'umur' => $umur, ], 'bantuan' => [ 'total' => RiwayatBantuan::count(), 'bulan_ini' => (clone $bantuan) ->whereDate('tanggal_bantuan', '>=', now()->startOfMonth()->toDateString()) ->whereDate('tanggal_bantuan', '<=', now()->endOfMonth()->toDateString()) ->count(), 'per_jenis' => RiwayatBantuan::all()->countBy('jenis_bantuan')->all(), ], 'transfer' => $transferCounts, ]); } }