195 lines
8.4 KiB
PHP
195 lines
8.4 KiB
PHP
<?php
|
|
// ================================================================
|
|
// Admin: Export Data (CSV / PDF)
|
|
// ================================================================
|
|
require_once __DIR__ . '/../config/config.php';
|
|
require_once __DIR__ . '/../config/database.php';
|
|
require_once __DIR__ . '/../includes/auth.php';
|
|
require_once __DIR__ . '/../includes/functions.php';
|
|
requireLogin();
|
|
|
|
$pageTitle = 'Export Data';
|
|
require_once __DIR__ . '/../includes/header.php';
|
|
|
|
$db = getDB();
|
|
$kecList = $db->query("SELECT DISTINCT kecamatan FROM penduduk_miskin WHERE kecamatan IS NOT NULL AND kecamatan != '' ORDER BY kecamatan")->fetchAll(PDO::FETCH_COLUMN);
|
|
$ibadahList = $db->query("SELECT id, nama, jenis FROM rumah_ibadah ORDER BY nama")->fetchAll();
|
|
?>
|
|
|
|
<!-- ── Page Header ─────────────────────────────────────────── -->
|
|
<div class="page-header">
|
|
<div class="page-title-block">
|
|
<h1><i class="bi bi-download"></i> Export Data</h1>
|
|
<div class="page-subtitle">Export data ke format CSV atau cetak PDF</div>
|
|
</div>
|
|
<div class="page-actions">
|
|
<a href="<?= BASE_URL ?>/admin/" class="btn btn-ghost btn-sm">
|
|
<i class="bi bi-arrow-left"></i> Kembali
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- ── Export Cards ───────────────────────────────────────── -->
|
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px;">
|
|
|
|
<!-- Penduduk Miskin Export -->
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<div class="card-title">👤 Export Penduduk Miskin</div>
|
|
</div>
|
|
<div class="card-body" style="padding:20px;">
|
|
<div class="form-group">
|
|
<label class="form-label">Status Bantuan</label>
|
|
<select class="form-control" id="exp-status">
|
|
<option value="">Semua Status</option>
|
|
<option value="belum">❌ Belum Dibantu</option>
|
|
<option value="menunggu">⏳ Menunggu Verifikasi</option>
|
|
<option value="sudah">✅ Sudah Dibantu</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="form-label">Kecamatan</label>
|
|
<select class="form-control" id="exp-kecamatan">
|
|
<option value="">Semua Kecamatan</option>
|
|
<?php foreach ($kecList as $k): ?>
|
|
<option value="<?= htmlspecialchars($k) ?>"><?= htmlspecialchars($k) ?></option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="form-label">Rumah Ibadah</label>
|
|
<select class="form-control" id="exp-ibadah">
|
|
<option value="">Semua Rumah Ibadah</option>
|
|
<?php foreach ($ibadahList as $ib): ?>
|
|
<option value="<?= $ib['id'] ?>"><?= htmlspecialchars($ib['nama']) ?> (<?= $ib['jenis'] ?>)</option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
<div class="form-row" style="margin-top:8px;">
|
|
<div class="form-group">
|
|
<label class="form-label">Dari Tanggal</label>
|
|
<input class="form-control" type="date" id="exp-dari">
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="form-label">Sampai Tanggal</label>
|
|
<input class="form-control" type="date" id="exp-sampai">
|
|
</div>
|
|
</div>
|
|
<div style="display:flex;gap:10px;margin-top:16px;flex-wrap:wrap;">
|
|
<button class="btn btn-success btn-sm" onclick="doExport('penduduk','csv')">
|
|
<i class="bi bi-file-earmark-spreadsheet"></i> Export CSV
|
|
</button>
|
|
<button class="btn btn-outline-accent btn-sm" onclick="doExport('penduduk','print')">
|
|
<i class="bi bi-printer"></i> Cetak / PDF
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Rumah Ibadah Export -->
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<div class="card-title">🏛️ Export Rumah Ibadah</div>
|
|
</div>
|
|
<div class="card-body" style="padding:20px;">
|
|
<div class="form-group">
|
|
<label class="form-label">Jenis Ibadah</label>
|
|
<select class="form-control" id="exp-jenis-ib">
|
|
<option value="">Semua Jenis</option>
|
|
<?php foreach (array_keys(JENIS_IBADAH) as $j): ?>
|
|
<option value="<?= $j ?>"><?= JENIS_EMOJI[$j]??'' ?> <?= $j ?></option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="form-label">Kecamatan</label>
|
|
<select class="form-control" id="exp-kec-ib">
|
|
<option value="">Semua Kecamatan</option>
|
|
<?php
|
|
$kecIb = $db->query("SELECT DISTINCT kecamatan FROM rumah_ibadah WHERE kecamatan IS NOT NULL AND kecamatan != '' ORDER BY kecamatan")->fetchAll(PDO::FETCH_COLUMN);
|
|
foreach ($kecIb as $k): ?>
|
|
<option value="<?= htmlspecialchars($k) ?>"><?= htmlspecialchars($k) ?></option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
<div style="margin-top:14px;padding:14px;background:rgba(91,127,255,0.06);border-radius:8px;border:1px solid rgba(91,127,255,0.15);">
|
|
<div style="font-size:12px;color:var(--text2);">
|
|
<i class="bi bi-info-circle"></i> Export akan mencakup: Nama, Jenis, Kontak, Alamat, Koordinat, Radius, Jumlah Binaan
|
|
</div>
|
|
</div>
|
|
<div style="display:flex;gap:10px;margin-top:16px;flex-wrap:wrap;">
|
|
<button class="btn btn-success btn-sm" onclick="doExport('ibadah','csv')">
|
|
<i class="bi bi-file-earmark-spreadsheet"></i> Export CSV
|
|
</button>
|
|
<button class="btn btn-outline-accent btn-sm" onclick="doExport('ibadah','print')">
|
|
<i class="bi bi-printer"></i> Cetak / PDF
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- ── Recent Exports / Quick Stats ───────────────────────── -->
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<div class="card-title">📊 Ringkasan Data</div>
|
|
</div>
|
|
<div class="card-body" style="padding:16px;">
|
|
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;">
|
|
<?php
|
|
$counts = [
|
|
'Total KK' => $db->query("SELECT COUNT(*) FROM penduduk_miskin")->fetchColumn(),
|
|
'Sudah Dibantu' => $db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='sudah'")->fetchColumn(),
|
|
'Belum Dibantu' => $db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='belum'")->fetchColumn(),
|
|
'Menunggu' => $db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='menunggu'")->fetchColumn(),
|
|
'Total Jiwa' => $db->query("SELECT COALESCE(SUM(jumlah_anggota),0) FROM penduduk_miskin")->fetchColumn(),
|
|
'Rumah Ibadah' => $db->query("SELECT COUNT(*) FROM rumah_ibadah")->fetchColumn(),
|
|
];
|
|
$colors = ['#5b7fff','#22c55e','#ef4444','#f59e0b','#a78bfa','#34d399'];
|
|
$i = 0;
|
|
foreach ($counts as $label => $val):
|
|
$c = $colors[$i++];
|
|
?>
|
|
<div style="background:<?= $c ?>18;border:1px solid <?= $c ?>33;border-radius:10px;padding:14px;text-align:center;">
|
|
<div style="font-size:22px;font-weight:800;color:<?= $c ?>"><?= number_format($val) ?></div>
|
|
<div style="font-size:11px;color:var(--text2);margin-top:2px;"><?= $label ?></div>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
const BASE = '<?= BASE_URL ?>';
|
|
|
|
function doExport(type, format) {
|
|
let params = new URLSearchParams({ type, format });
|
|
|
|
if (type === 'penduduk') {
|
|
const status = document.getElementById('exp-status').value;
|
|
const kec = document.getElementById('exp-kecamatan').value;
|
|
const ibadah = document.getElementById('exp-ibadah').value;
|
|
const dari = document.getElementById('exp-dari').value;
|
|
const sampai = document.getElementById('exp-sampai').value;
|
|
if (status) params.set('status', status);
|
|
if (kec) params.set('kecamatan', kec);
|
|
if (ibadah) params.set('ibadah_id', ibadah);
|
|
if (dari) params.set('dari', dari);
|
|
if (sampai) params.set('sampai', sampai);
|
|
} else {
|
|
const jenis = document.getElementById('exp-jenis-ib').value;
|
|
const kec = document.getElementById('exp-kec-ib').value;
|
|
if (jenis) params.set('jenis', jenis);
|
|
if (kec) params.set('kecamatan', kec);
|
|
}
|
|
|
|
if (format === 'csv') {
|
|
window.open(`${BASE}/api/export.php?${params}`, '_blank');
|
|
} else {
|
|
window.open(`${BASE}/api/export.php?${params}`, '_blank');
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<?php require_once __DIR__ . '/../includes/footer.php'; ?>
|