140 lines
6.0 KiB
PHP
140 lines
6.0 KiB
PHP
<?php
|
|
require_once __DIR__ . '/layout_header.php';
|
|
$db = db();
|
|
|
|
$message = '';
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
$action = $_POST['action'] ?? '';
|
|
if ($action === 'save') {
|
|
$id = $_POST['id'] ?? null;
|
|
$nama = $_POST['nama'] ?? '';
|
|
$nominal = $_POST['nominal'] ?? 0;
|
|
$deskripsi = $_POST['deskripsi'] ?? '';
|
|
|
|
if ($nama) {
|
|
if ($id) {
|
|
$stmt = $db->prepare("UPDATE jenis_iuran SET nama=?, nominal_default=?, deskripsi=? WHERE id=?");
|
|
$stmt->execute([$nama, $nominal, $deskripsi, $id]);
|
|
$message = '<div class="alert alert-success">Jenis iuran berhasil diperbarui.</div>';
|
|
} else {
|
|
$stmt = $db->prepare("INSERT INTO jenis_iuran (nama, nominal_default, deskripsi) VALUES (?, ?, ?)");
|
|
$stmt->execute([$nama, $nominal, $deskripsi]);
|
|
$message = '<div class="alert alert-success">Jenis iuran berhasil ditambahkan.</div>';
|
|
}
|
|
}
|
|
} elseif ($action === 'delete') {
|
|
$id = $_POST['id'] ?? 0;
|
|
try {
|
|
$stmt = $db->prepare("DELETE FROM jenis_iuran WHERE id = ?");
|
|
$stmt->execute([$id]);
|
|
$message = '<div class="alert alert-success">Jenis iuran berhasil dihapus.</div>';
|
|
} catch (Exception $e) {
|
|
$message = '<div class="alert alert-danger">Gagal menghapus! Jenis iuran ini mungkin sudah memiliki data pembayaran terkait.</div>';
|
|
}
|
|
}
|
|
}
|
|
|
|
$items = $db->query("SELECT * FROM jenis_iuran ORDER BY nama ASC")->fetchAll();
|
|
?>
|
|
|
|
<div class="top-bar">
|
|
<h1 class="h3 fw-bold m-0">Jenis Iuran</h1>
|
|
<button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#iuranModal" onclick="resetForm()">
|
|
<i class="bi bi-plus-lg"></i> Tambah Iuran
|
|
</button>
|
|
</div>
|
|
|
|
<?= $message ?>
|
|
|
|
<div class="card">
|
|
<div class="table-responsive">
|
|
<table class="table align-middle table-hover">
|
|
<thead>
|
|
<tr>
|
|
<th>Nama Iuran</th>
|
|
<th>Nominal Default</th>
|
|
<th>Deskripsi</th>
|
|
<th class="text-end">Aksi</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php foreach ($items as $item): ?>
|
|
<tr>
|
|
<td><span class="fw-bold"><?= htmlspecialchars($item['nama']) ?></span></td>
|
|
<td>Rp <?= number_format((float)$item['nominal_default'], 0, ',', '.') ?></td>
|
|
<td class="text-muted small"><?= htmlspecialchars($item['deskripsi']) ?></td>
|
|
<td class="text-end">
|
|
<button class="btn btn-sm btn-outline-primary me-1" onclick='editIuran(<?= json_encode($item) ?>)'>
|
|
<i class="bi bi-pencil"></i>
|
|
</button>
|
|
<form method="POST" style="display:inline;" onsubmit="return confirm('Yakin ingin menghapus?');">
|
|
<input type="hidden" name="action" value="delete">
|
|
<input type="hidden" name="id" value="<?= $item['id'] ?>">
|
|
<button type="submit" class="btn btn-sm btn-outline-danger"><i class="bi bi-trash"></i></button>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
<?php if (empty($items)): ?>
|
|
<tr>
|
|
<td colspan="4" class="text-center py-4 text-muted">Belum ada data jenis iuran.</td>
|
|
</tr>
|
|
<?php endif; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Modal -->
|
|
<div class="modal fade" id="iuranModal" tabindex="-1">
|
|
<div class="modal-dialog">
|
|
<form method="POST" class="modal-content">
|
|
<input type="hidden" name="action" value="save">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="modalTitle">Tambah Jenis Iuran</h5>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<input type="hidden" name="id" id="iuranId">
|
|
<div class="mb-3">
|
|
<label class="form-label">Nama Iuran</label>
|
|
<input type="text" name="nama" id="iuranNama" class="form-control" placeholder="Contoh: Iuran Keamanan" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label">Nominal Default (Rp)</label>
|
|
<input type="number" name="nominal" id="iuranNominal" class="form-control" value="0" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label">Deskripsi</label>
|
|
<textarea name="deskripsi" id="iuranDeskripsi" class="form-control" rows="3" placeholder="Keterangan singkat..."></textarea>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
|
|
<button type="submit" class="btn btn-primary">Simpan</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
function editIuran(item) {
|
|
document.getElementById('modalTitle').innerText = 'Edit Jenis Iuran';
|
|
document.getElementById('iuranId').value = item.id;
|
|
document.getElementById('iuranNama').value = item.nama;
|
|
document.getElementById('iuranNominal').value = item.nominal_default;
|
|
document.getElementById('iuranDeskripsi').value = item.deskripsi;
|
|
new bootstrap.Modal(document.getElementById('iuranModal')).show();
|
|
}
|
|
|
|
function resetForm() {
|
|
document.getElementById('modalTitle').innerText = 'Tambah Jenis Iuran';
|
|
document.getElementById('iuranId').value = '';
|
|
document.getElementById('iuranNama').value = '';
|
|
document.getElementById('iuranNominal').value = '0';
|
|
document.getElementById('iuranDeskripsi').value = '';
|
|
}
|
|
</script>
|
|
|
|
<?php require_once __DIR__ . '/layout_footer.php'; ?>
|