First commit / commit pertama
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
/**
|
||||
* api/warga_export.php — Export data warga (KF-16).
|
||||
* ?format=csv → unduh CSV semua data
|
||||
* ?format=template → unduh template CSV kosong (Lampiran A)
|
||||
* ?format=print → halaman cetak (PDF via browser print)
|
||||
*/
|
||||
require_once __DIR__ . '/../config/db.php';
|
||||
require_once __DIR__ . '/../config/auth_check.php';
|
||||
|
||||
requireAnyRole(['operator', 'pimpinan']);
|
||||
$pdo = Database::getConnection();
|
||||
$format = $_GET['format'] ?? 'csv';
|
||||
|
||||
if ($format === 'template') {
|
||||
header('Content-Type: text/csv; charset=utf-8');
|
||||
header('Content-Disposition: attachment; filename="template_warga.csv"');
|
||||
$out = fopen('php://output', 'w');
|
||||
fputcsv($out, ['nik_kk','nama_kk','kode_kelurahan','latitude','longitude','jumlah_jiwa','sumber_air','status_listrik','material_dinding','pekerjaan_kk']);
|
||||
fputcsv($out, ['3171010000000001','Contoh Nama','6171010001','-0.0510','109.3610','4','SUNGAI','NON_PLN','TIDAK_PERMANEN','Buruh Harian']);
|
||||
fclose($out);
|
||||
exit;
|
||||
}
|
||||
|
||||
$rows = $pdo->query("
|
||||
SELECT w.id, w.nik_kk, w.nama_kk, wl.nama AS kelurahan, w.alamat, w.rt, w.rw,
|
||||
w.jumlah_jiwa, w.jumlah_tanggungan, w.pekerjaan_kk, w.penghasilan,
|
||||
w.sumber_air, w.status_listrik, w.material_dinding, w.status_kepemilikan, w.status_verifikasi,
|
||||
ST_Y(w.geom) AS lat, ST_X(w.geom) AS lng,
|
||||
(SELECT GROUP_CONCAT(jb.kode SEPARATOR '; ')
|
||||
FROM bantuan_sosial bs JOIN jenis_bantuan jb ON jb.id=bs.jenis_bantuan_id
|
||||
WHERE bs.warga_id=w.id AND bs.is_aktif=1) AS bantuan
|
||||
FROM warga_miskin w LEFT JOIN wilayah wl ON wl.id=w.wilayah_id
|
||||
ORDER BY w.id
|
||||
")->fetchAll();
|
||||
|
||||
if ($format === 'csv') {
|
||||
header('Content-Type: text/csv; charset=utf-8');
|
||||
header('Content-Disposition: attachment; filename="data_warga_' . date('Ymd') . '.csv"');
|
||||
$out = fopen('php://output', 'w');
|
||||
fputcsv($out, ['ID','NIK KK','Nama KK','Kelurahan','Alamat','RT','RW','Jiwa','Tanggungan','Pekerjaan','Penghasilan','Sumber Air','Listrik','Dinding','Kepemilikan','Verifikasi','Bantuan Aktif','Lat','Lng']);
|
||||
foreach ($rows as $r) {
|
||||
fputcsv($out, [
|
||||
$r['id'], $r['nik_kk'], $r['nama_kk'], $r['kelurahan'], $r['alamat'], $r['rt'], $r['rw'],
|
||||
$r['jumlah_jiwa'], $r['jumlah_tanggungan'], $r['pekerjaan_kk'], $r['penghasilan'],
|
||||
$r['sumber_air'], $r['status_listrik'], $r['material_dinding'], $r['status_kepemilikan'],
|
||||
$r['status_verifikasi'], $r['bantuan'], $r['lat'], $r['lng'],
|
||||
]);
|
||||
}
|
||||
fclose($out);
|
||||
exit;
|
||||
}
|
||||
|
||||
// format=print → HTML untuk dicetak/disimpan PDF
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="id"><head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Laporan Data Warga Miskin</title>
|
||||
<style>
|
||||
body{font-family:Arial,sans-serif;margin:24px;color:#111;}
|
||||
h2{margin:0 0 2px;} .sub{color:#666;font-size:0.85rem;margin-bottom:14px;}
|
||||
table{width:100%;border-collapse:collapse;font-size:0.72rem;}
|
||||
th,td{border:1px solid #ccc;padding:4px 6px;text-align:left;}
|
||||
th{background:#f1f5f9;}
|
||||
.toolbar{margin-bottom:12px;}
|
||||
button{padding:8px 14px;background:#2563EB;color:#fff;border:none;border-radius:6px;cursor:pointer;}
|
||||
@media print{.toolbar{display:none;}}
|
||||
</style></head>
|
||||
<body>
|
||||
<div class="toolbar"><button onclick="window.print()">🖨️ Cetak / Simpan PDF</button></div>
|
||||
<h2>Laporan Data Rumah Tangga Miskin</h2>
|
||||
<div class="sub">WebGIS Pemetaan Kemiskinan — dicetak <?= date('d M Y H:i') ?> — total <?= count($rows) ?> rumah tangga</div>
|
||||
<table>
|
||||
<thead><tr><th>#</th><th>NIK</th><th>Nama KK</th><th>Kelurahan</th><th>Jiwa</th><th>Penghasilan</th><th>Sumber Air</th><th>Dinding</th><th>Bantuan</th><th>Verifikasi</th></tr></thead>
|
||||
<tbody>
|
||||
<?php foreach ($rows as $i => $r): ?>
|
||||
<tr>
|
||||
<td><?= $i+1 ?></td>
|
||||
<td><?= htmlspecialchars($r['nik_kk'] ?: '-') ?></td>
|
||||
<td><?= htmlspecialchars($r['nama_kk']) ?></td>
|
||||
<td><?= htmlspecialchars($r['kelurahan'] ?: '-') ?></td>
|
||||
<td><?= $r['jumlah_jiwa'] ?: '-' ?></td>
|
||||
<td>Rp <?= number_format($r['penghasilan'],0,',','.') ?></td>
|
||||
<td><?= htmlspecialchars($r['sumber_air'] ?: '-') ?></td>
|
||||
<td><?= htmlspecialchars($r['material_dinding'] ?: '-') ?></td>
|
||||
<td><?= htmlspecialchars($r['bantuan'] ?: '-') ?></td>
|
||||
<td><?= htmlspecialchars($r['status_verifikasi']) ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</body></html>
|
||||
Reference in New Issue
Block a user