39024-vm/index.php
Flatlogic Bot b6a9bec423 001
2026-03-06 13:34:25 +00:00

179 lines
6.5 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/includes/db_init.php';
require_once __DIR__ . '/includes/layout.php';
ensure_tables();
$pdo = db();
$statsMasuk = $pdo->query("SELECT status, COUNT(*) as total FROM surat_masuk GROUP BY status")->fetchAll();
$statsKeluar = $pdo->query("SELECT status, COUNT(*) as total FROM surat_keluar GROUP BY status")->fetchAll();
$totalMasuk = (int)$pdo->query("SELECT COUNT(*) FROM surat_masuk")->fetchColumn();
$totalKeluar = (int)$pdo->query("SELECT COUNT(*) FROM surat_keluar")->fetchColumn();
$latestMasuk = $pdo->query("SELECT id, tanggal_surat, pengirim, perihal, status FROM surat_masuk ORDER BY tanggal_surat DESC, id DESC LIMIT 5")->fetchAll();
$latestKeluar = $pdo->query("SELECT id, tanggal_surat, tujuan, perihal, nomor_surat, status FROM surat_keluar ORDER BY tanggal_surat DESC, id DESC LIMIT 5")->fetchAll();
render_header('Dashboard', 'dashboard');
?>
<section class="hero mb-4">
<div class="row g-3 align-items-center">
<div class="col-lg-8">
<h1 class="h4 mb-2">Aplikasi Tata Kelola Surat Internal</h1>
<p class="mb-3 text-muted">
Kelola surat masuk & surat keluar lintas departemen dengan nomor otomatis, status yang jelas,
dan arsip yang mudah ditelusuri.
</p>
<div class="d-flex flex-wrap gap-2">
<a href="/surat_masuk.php" class="btn btn-primary">Catat Surat Masuk</a>
<a href="/surat_keluar.php" class="btn btn-outline-secondary">Buat Surat Keluar</a>
</div>
</div>
<div class="col-lg-4">
<div class="card-muted">
<div class="section-title mb-2">Ringkasan</div>
<div class="d-flex justify-content-between">
<span class="text-muted">Total Surat Masuk</span>
<strong><?= h((string)$totalMasuk) ?></strong>
</div>
<div class="d-flex justify-content-between">
<span class="text-muted">Total Surat Keluar</span>
<strong><?= h((string)$totalKeluar) ?></strong>
</div>
<div class="mt-3 small text-muted">Nomor surat keluar otomatis: KODE/URUT/BULAN_ROMAWI/TAHUN.</div>
</div>
</div>
</div>
</section>
<section class="mb-4">
<div class="row g-3">
<div class="col-lg-6">
<div class="card h-100">
<div class="card-header">Status Surat Masuk</div>
<div class="card-body">
<?php if (empty($statsMasuk)): ?>
<div class="empty-state">Belum ada data surat masuk.</div>
<?php else: ?>
<div class="d-flex flex-wrap gap-2">
<?php foreach ($statsMasuk as $row): ?>
<span class="<?= h(status_badge($row['status'], 'masuk')) ?>">
<?= h(ucfirst($row['status'])) ?> · <?= h((string)$row['total']) ?>
</span>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card h-100">
<div class="card-header">Status Surat Keluar</div>
<div class="card-body">
<?php if (empty($statsKeluar)): ?>
<div class="empty-state">Belum ada data surat keluar.</div>
<?php else: ?>
<div class="d-flex flex-wrap gap-2">
<?php foreach ($statsKeluar as $row): ?>
<span class="<?= h(status_badge($row['status'], 'keluar')) ?>">
<?= h(ucfirst($row['status'])) ?> · <?= h((string)$row['total']) ?>
</span>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
</div>
</div>
</div>
</section>
<section class="row g-3">
<div class="col-lg-6">
<div class="card h-100">
<div class="card-header d-flex justify-content-between align-items-center">
<span>Surat Masuk Terbaru</span>
<a href="/surat_masuk.php" class="small text-muted">Lihat semua</a>
</div>
<div class="card-body">
<?php if (empty($latestMasuk)): ?>
<div class="empty-state">Belum ada surat masuk tercatat.</div>
<?php else: ?>
<div class="table-responsive">
<table class="table table-sm align-middle">
<thead>
<tr>
<th>Tanggal</th>
<th>Pengirim</th>
<th>Perihal</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<?php foreach ($latestMasuk as $row): ?>
<tr>
<td><?= h($row['tanggal_surat']) ?></td>
<td><?= h($row['pengirim']) ?></td>
<td>
<a href="/surat_masuk_view.php?id=<?= h((string)$row['id']) ?>">
<?= h($row['perihal']) ?>
</a>
</td>
<td><span class="<?= h(status_badge($row['status'], 'masuk')) ?>"><?= h($row['status']) ?></span></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endif; ?>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="card h-100">
<div class="card-header d-flex justify-content-between align-items-center">
<span>Surat Keluar Terbaru</span>
<a href="/surat_keluar.php" class="small text-muted">Lihat semua</a>
</div>
<div class="card-body">
<?php if (empty($latestKeluar)): ?>
<div class="empty-state">Belum ada surat keluar tercatat.</div>
<?php else: ?>
<div class="table-responsive">
<table class="table table-sm align-middle">
<thead>
<tr>
<th>Tanggal</th>
<th>Nomor</th>
<th>Perihal</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<?php foreach ($latestKeluar as $row): ?>
<tr>
<td><?= h($row['tanggal_surat']) ?></td>
<td>
<a href="/surat_keluar_view.php?id=<?= h((string)$row['id']) ?>">
<?= h($row['nomor_surat']) ?>
</a>
</td>
<td><?= h($row['perihal']) ?></td>
<td><span class="<?= h(status_badge($row['status'], 'keluar')) ?>"><?= h($row['status']) ?></span></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endif; ?>
</div>
</div>
</div>
</section>
<?php render_footer(); ?>