115 lines
3.3 KiB
PHP
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(); ?>
|