39065-vm/departments.php
2026-03-09 14:12:06 +00:00

115 lines
3.3 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/includes/layout.php';
$pdo = db();
$errors = [];
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = trim($_POST['name'] ?? '');
$code = trim($_POST['code'] ?? '');
if ($name === '' || $code === '') {
$errors[] = 'Nama dan kode departemen wajib diisi.';
}
if (!$errors) {
$stmt = $pdo->prepare("INSERT INTO departments (name, code) VALUES (:name, :code)");
$stmt->execute([':name' => $name, ':code' => $code]);
header('Location: departments.php?success=1');
exit;
}
}
$departments = $pdo->query("
SELECT d.*, COUNT(e.id) AS total_employee
FROM departments d
LEFT JOIN employees e ON e.dept_id = d.id
GROUP BY d.id
ORDER BY d.name ASC
")->fetchAll();
render_header('Data Departemen', 'departments');
?>
<div class="d-flex flex-wrap align-items-center justify-content-between gap-3 mb-4">
<div>
<h1 class="h3 fw-semibold mb-1">Departemen</h1>
<p class="small-muted mb-0">Struktur organisasi yang digunakan untuk penempatan pegawai.</p>
</div>
</div>
<?php if (isset($_GET['success'])): ?>
<div class="alert alert-success" data-autohide="true">Departemen berhasil ditambahkan.</div>
<?php endif; ?>
<?php if ($errors): ?>
<div class="alert alert-danger">
<ul class="mb-0">
<?php foreach ($errors as $err): ?>
<li><?= e($err) ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<div class="row g-4">
<div class="col-lg-5">
<form method="post" class="card">
<div class="card-header">
<span class="section-title">Tambah Departemen</span>
</div>
<div class="card-body">
<div class="mb-3">
<label class="form-label">Nama Departemen</label>
<input type="text" name="name" class="form-control" required>
</div>
<div class="mb-3">
<label class="form-label">Kode</label>
<input type="text" name="code" class="form-control" required>
</div>
</div>
<div class="card-footer bg-white">
<button type="submit" class="btn btn-primary">Simpan Departemen</button>
</div>
</form>
</div>
<div class="col-lg-7">
<div class="card">
<div class="card-header d-flex justify-content-between">
<span class="section-title">Daftar Departemen</span>
<span class="small-muted"><?= count($departments) ?> total</span>
</div>
<div class="card-body">
<?php if (count($departments) === 0): ?>
<div class="empty-state">Belum ada departemen. Tambahkan departemen pertama.</div>
<?php else: ?>
<div class="table-responsive">
<table class="table align-middle">
<thead>
<tr>
<th>Nama</th>
<th>Kode</th>
<th>Jumlah Pegawai</th>
</tr>
</thead>
<tbody>
<?php foreach ($departments as $dept): ?>
<tr>
<td><?= e($dept['name']) ?></td>
<td><span class="badge-soft"><?= e($dept['code']) ?></span></td>
<td><?= e((string)$dept['total_employee']) ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endif; ?>
</div>
</div>
</div>
</div>
<?php render_footer(); ?>