69 lines
2.1 KiB
PHP
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,
|
|
]);
|
|
}
|
|
}
|