Files
D1041231009-WebGIS-PovertyMap/app/Http/Controllers/DosenSummaryController.php
T
2026-06-10 18:13:40 +07:00

69 lines
2.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\AnggotaKeluarga;
use App\Models\PermohonanTransfer;
use App\Models\RiwayatBantuan;
class DosenSummaryController extends Controller
{
public function __invoke()
{
$anggota = AnggotaKeluarga::all();
$bantuan = RiwayatBantuan::query();
$umur = [
'anak' => 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,
]);
}
}