Files

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'; ?>