Files
2026-06-13 11:24:58 +07:00

46 lines
1.6 KiB
PHP

<?php
/**
* api/tren.php — Tren waktu jumlah warga & cakupan bantuan (KF-23).
* GET → seri bulanan (12 bulan terakhir): warga baru, kumulatif warga, bantuan baru.
*/
require_once __DIR__ . '/../config/db.php';
require_once __DIR__ . '/helpers.php';
$pdo = Database::getConnection();
requireApiAnyRole(['operator', 'pimpinan']);
if ($_SERVER['REQUEST_METHOD'] !== 'GET') sendError('Method not allowed', 405);
// Bangun 12 bulan terakhir
$months = [];
for ($i = 11; $i >= 0; $i--) {
$months[date('Y-m', strtotime("-$i month"))] = ['warga' => 0, 'bantuan' => 0];
}
foreach ($pdo->query("SELECT DATE_FORMAT(created_at,'%Y-%m') ym, COUNT(*) c FROM warga_miskin GROUP BY ym") as $r) {
if (isset($months[$r['ym']])) $months[$r['ym']]['warga'] = (int)$r['c'];
}
foreach ($pdo->query("SELECT DATE_FORMAT(created_at,'%Y-%m') ym, COUNT(*) c FROM bantuan_sosial GROUP BY ym") as $r) {
if (isset($months[$r['ym']])) $months[$r['ym']]['bantuan'] = (int)$r['c'];
}
// warga sebelum jendela 12 bulan (untuk basis kumulatif)
$firstMonth = array_key_first($months);
$base = (int)$pdo->query("SELECT COUNT(*) FROM warga_miskin WHERE DATE_FORMAT(created_at,'%Y-%m') < '$firstMonth'")->fetchColumn();
$labels = []; $wargaBaru = []; $kumulatif = []; $bantuanBaru = [];
$run = $base;
foreach ($months as $ym => $v) {
$labels[] = $ym;
$wargaBaru[] = $v['warga'];
$run += $v['warga'];
$kumulatif[] = $run;
$bantuanBaru[] = $v['bantuan'];
}
sendSuccess([
'labels' => $labels,
'warga_baru' => $wargaBaru,
'kumulatif' => $kumulatif,
'bantuan_baru' => $bantuanBaru,
], 'Tren Waktu');