39065-vm/positions.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'] ?? '');
$level = trim($_POST['level'] ?? '');
if ($name === '') {
$errors[] = 'Nama jabatan wajib diisi.';
}
if (!$errors) {
$stmt = $pdo->prepare("INSERT INTO positions (name, level) VALUES (:name, :level)");
$stmt->execute([':name' => $name, ':level' => $level !== '' ? $level : null]);
header('Location: positions.php?success=1');
exit;
}
}
$positions = $pdo->query("
SELECT p.*, COUNT(e.id) AS total_employee
FROM positions p
LEFT JOIN employees e ON e.position_id = p.id
GROUP BY p.id
ORDER BY p.name ASC
")->fetchAll();
render_header('Data Jabatan', 'positions');
?>
<div class="d-flex flex-wrap align-items-center justify-content-between gap-3 mb-4">
<div>
<h1 class="h3 fw-semibold mb-1">Jabatan</h1>
<p class="small-muted mb-0">Master data jabatan dan level dalam organisasi.</p>
</div>
</div>
<?php if (isset($_GET['success'])): ?>
<div class="alert alert-success" data-autohide="true">Jabatan 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 Jabatan</span>
</div>
<div class="card-body">
<div class="mb-3">
<label class="form-label">Nama Jabatan</label>
<input type="text" name="name" class="form-control" required>
</div>
<div class="mb-3">
<label class="form-label">Level (Opsional)</label>
<input type="text" name="level" class="form-control" placeholder="Staff / Lead / Manager">
</div>
</div>
<div class="card-footer bg-white">
<button type="submit" class="btn btn-primary">Simpan Jabatan</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 Jabatan</span>
<span class="small-muted"><?= count($positions) ?> total</span>
</div>
<div class="card-body">
<?php if (count($positions) === 0): ?>
<div class="empty-state">Belum ada jabatan. Tambahkan jabatan baru.</div>
<?php else: ?>
<div class="table-responsive">
<table class="table align-middle">
<thead>
<tr>
<th>Jabatan</th>
<th>Level</th>
<th>Jumlah Pegawai</th>
</tr>
</thead>
<tbody>
<?php foreach ($positions as $pos): ?>
<tr>
<td><?= e($pos['name']) ?></td>
<td><?= e($pos['level'] ?? '-') ?></td>
<td><?= e((string)$pos['total_employee']) ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endif; ?>
</div>
</div>
</div>
</div>
<?php render_footer(); ?>