query(" SELECT kecamatan, COUNT(*) AS jumlah FROM keluarga_miskin GROUP BY kecamatan ORDER BY FIELD(kecamatan, 'Pontianak Utara','Pontianak Selatan','Pontianak Timur', 'Pontianak Barat','Pontianak Tenggara','Pontianak Kota') "); $kkPerKecamatan = $stmt->fetchAll(); // ── 2. KK yang SUDAH dapat bantuan tahun ini (dari histori_bantuan) ── $stmt = $pdo->prepare(" SELECT COUNT(DISTINCT kk_id) AS jumlah FROM histori_bantuan WHERE YEAR(tanggal_penyaluran) = ? "); $stmt->execute([$tahun]); $kkSudahBantuan = (int)$stmt->fetch()['jumlah']; // ── 3. Total KK ─────────────────────────────────────────────── $stmt = $pdo->query("SELECT COUNT(*) AS jumlah FROM keluarga_miskin"); $totalKK = (int)$stmt->fetch()['jumlah']; $kkBelumBantuan = $totalKK - $kkSudahBantuan; // ── 4. Distribusi status DTKS ──────────────────────────────── $stmt = $pdo->query(" SELECT status_dtks, COUNT(*) AS jumlah FROM keluarga_miskin GROUP BY status_dtks "); $distribusiDtks = $stmt->fetchAll(); // ── 5. Distribusi riwayat penyakit ─────────────────────────── $stmt = $pdo->query("SELECT riwayat_penyakit FROM keluarga_miskin WHERE riwayat_penyakit IS NOT NULL AND riwayat_penyakit != '[]'"); $penyakitRows = $stmt->fetchAll(); $penyakitCount = []; foreach ($penyakitRows as $row) { $arr = json_decode($row['riwayat_penyakit'], true) ?? []; foreach ($arr as $p) { $penyakitCount[$p] = ($penyakitCount[$p] ?? 0) + 1; } } arsort($penyakitCount); // Format jadi array [{ penyakit, jumlah }] $distribusiPenyakit = array_map( fn($k, $v) => ['penyakit' => $k, 'jumlah' => $v], array_keys($penyakitCount), array_values($penyakitCount) ); // ── 6. Laporan belum ditangani ──────────────────────────────── $stmt = $pdo->query("SELECT COUNT(*) AS jumlah FROM laporan_masyarakat WHERE status = 'Baru'"); $laporanBaru = (int)$stmt->fetch()['jumlah']; // ── 7. Bantuan tersalurkan tahun ini per sumber dana ───────── $stmt = $pdo->prepare(" SELECT sumber_dana, COUNT(*) AS jumlah_entri, COUNT(DISTINCT kk_id) AS jumlah_kk, COALESCE(SUM(nominal), 0) AS total_nominal FROM histori_bantuan WHERE YEAR(tanggal_penyaluran) = ? GROUP BY sumber_dana ORDER BY total_nominal DESC "); $stmt->execute([$tahun]); $bantuanPerSumber = $stmt->fetchAll(); // Format nominal di setiap baris foreach ($bantuanPerSumber as &$b) { $b['total_nominal_formatted'] = 'Rp ' . number_format((int)$b['total_nominal'], 0, ',', '.'); } unset($b); // ── 8. Bantuan tersalurkan tahun ini per jenis ─────────────── $stmt = $pdo->prepare(" SELECT jenis_bantuan, COUNT(*) AS jumlah_entri, COUNT(DISTINCT kk_id) AS jumlah_kk, COALESCE(SUM(nominal), 0) AS total_nominal FROM histori_bantuan WHERE YEAR(tanggal_penyaluran) = ? GROUP BY jenis_bantuan ORDER BY total_nominal DESC "); $stmt->execute([$tahun]); $bantuanPerJenis = $stmt->fetchAll(); foreach ($bantuanPerJenis as &$b) { $b['total_nominal_formatted'] = 'Rp ' . number_format((int)$b['total_nominal'], 0, ',', '.'); } unset($b); // ── 9. Total entri bantuan + total nominal tahun ini ───────── $stmt = $pdo->prepare(" SELECT COUNT(*) AS jumlah, COALESCE(SUM(nominal), 0) AS total_nominal FROM histori_bantuan WHERE YEAR(tanggal_penyaluran) = ? "); $stmt->execute([$tahun]); $totalRow = $stmt->fetch(); $totalEntri = (int)$totalRow['jumlah']; $totalNominal = (int)$totalRow['total_nominal']; $totalNominalFormatted = 'Rp ' . number_format($totalNominal, 0, ',', '.'); // ── 10. Distribusi tingkat kemiskinan ──────────────────────── $stmt = $pdo->query(" SELECT tingkat_kemiskinan, COUNT(*) AS jumlah FROM keluarga_miskin GROUP BY tingkat_kemiskinan "); $distribusiKemiskinan = $stmt->fetchAll(); // ── Kirim semua data ────────────────────────────────────────── jsonResponse([ 'tahun' => $tahun, 'total_kk' => $totalKK, 'kk_per_kecamatan' => $kkPerKecamatan, 'kk_sudah_bantuan' => $kkSudahBantuan, 'kk_belum_bantuan' => $kkBelumBantuan, 'distribusi_dtks' => $distribusiDtks, 'distribusi_penyakit' => $distribusiPenyakit, 'distribusi_kemiskinan' => $distribusiKemiskinan, 'laporan_baru' => $laporanBaru, 'bantuan_per_sumber' => $bantuanPerSumber, 'bantuan_per_jenis' => $bantuanPerJenis, 'total_entri_bantuan' => $totalEntri, 'total_nominal_bantuan' => $totalNominal, 'total_nominal_formatted'=> $totalNominalFormatted, ], "Data dashboard tahun $tahun.");