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

141 lines
5.5 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/includes/layout.php';
$pdo = db();
$departments = $pdo->query("SELECT id, name FROM departments ORDER BY name ASC")->fetchAll();
$positions = $pdo->query("SELECT id, name FROM positions ORDER BY name ASC")->fetchAll();
$errors = [];
$values = [
'employee_code' => '',
'full_name' => '',
'email' => '',
'phone' => '',
'status' => 'Aktif',
'employment_type' => 'Kontrak',
'hire_date' => '',
'dept_id' => '',
'position_id' => '',
];
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
foreach ($values as $key => $val) {
$values[$key] = trim($_POST[$key] ?? '');
}
if ($values['employee_code'] === '') {
$errors[] = 'Kode pegawai wajib diisi.';
}
if ($values['full_name'] === '') {
$errors[] = 'Nama lengkap wajib diisi.';
}
if (!$errors) {
$stmt = $pdo->prepare("
INSERT INTO employees (employee_code, full_name, email, phone, status, employment_type, hire_date, dept_id, position_id)
VALUES (:employee_code, :full_name, :email, :phone, :status, :employment_type, :hire_date, :dept_id, :position_id)
");
$stmt->bindValue(':employee_code', $values['employee_code']);
$stmt->bindValue(':full_name', $values['full_name']);
$stmt->bindValue(':email', $values['email'] !== '' ? $values['email'] : null);
$stmt->bindValue(':phone', $values['phone'] !== '' ? $values['phone'] : null);
$stmt->bindValue(':status', $values['status'] !== '' ? $values['status'] : 'Aktif');
$stmt->bindValue(':employment_type', $values['employment_type'] !== '' ? $values['employment_type'] : 'Kontrak');
$stmt->bindValue(':hire_date', $values['hire_date'] !== '' ? $values['hire_date'] : null);
$stmt->bindValue(':dept_id', $values['dept_id'] !== '' ? (int)$values['dept_id'] : null, PDO::PARAM_INT);
$stmt->bindValue(':position_id', $values['position_id'] !== '' ? (int)$values['position_id'] : null, PDO::PARAM_INT);
$stmt->execute();
$newId = (int)$pdo->lastInsertId();
header('Location: employee_view.php?id=' . $newId . '&created=1');
exit;
}
}
render_header('Tambah Pegawai', 'employees');
?>
<div class="mb-4">
<h1 class="h3 fw-semibold mb-1">Tambah Pegawai</h1>
<p class="small-muted mb-0">Lengkapi profil pegawai baru, status kerja, dan penempatan.</p>
</div>
<?php if ($errors): ?>
<div class="alert alert-danger" role="alert">
<ul class="mb-0">
<?php foreach ($errors as $err): ?>
<li><?= e($err) ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<form method="post" class="card">
<div class="card-body">
<div class="row g-3">
<div class="col-md-4">
<label class="form-label">Kode Pegawai *</label>
<input type="text" name="employee_code" class="form-control" value="<?= e($values['employee_code']) ?>" required>
</div>
<div class="col-md-8">
<label class="form-label">Nama Lengkap *</label>
<input type="text" name="full_name" class="form-control" value="<?= e($values['full_name']) ?>" required>
</div>
<div class="col-md-6">
<label class="form-label">Email</label>
<input type="email" name="email" class="form-control" value="<?= e($values['email']) ?>">
</div>
<div class="col-md-6">
<label class="form-label">Nomor Telepon</label>
<input type="text" name="phone" class="form-control" value="<?= e($values['phone']) ?>">
</div>
<div class="col-md-4">
<label class="form-label">Status</label>
<select name="status" class="form-select">
<?php foreach (['Aktif', 'Probation', 'Nonaktif'] as $st): ?>
<option value="<?= e($st) ?>" <?= $values['status'] === $st ? 'selected' : '' ?>><?= e($st) ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="col-md-4">
<label class="form-label">Tipe Kerja</label>
<select name="employment_type" class="form-select">
<?php foreach (['Kontrak', 'Tetap', 'Magang'] as $type): ?>
<option value="<?= e($type) ?>" <?= $values['employment_type'] === $type ? 'selected' : '' ?>><?= e($type) ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="col-md-4">
<label class="form-label">Tanggal Masuk</label>
<input type="date" name="hire_date" class="form-control" value="<?= e($values['hire_date']) ?>">
</div>
<div class="col-md-6">
<label class="form-label">Departemen</label>
<select name="dept_id" class="form-select">
<option value="">Pilih Departemen</option>
<?php foreach ($departments as $dept): ?>
<option value="<?= e((string)$dept['id']) ?>" <?= $values['dept_id'] == $dept['id'] ? 'selected' : '' ?>><?= e($dept['name']) ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="col-md-6">
<label class="form-label">Jabatan</label>
<select name="position_id" class="form-select">
<option value="">Pilih Jabatan</option>
<?php foreach ($positions as $pos): ?>
<option value="<?= e((string)$pos['id']) ?>" <?= $values['position_id'] == $pos['id'] ? 'selected' : '' ?>><?= e($pos['name']) ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
</div>
<div class="card-footer bg-white d-flex justify-content-between">
<a href="employees.php" class="btn btn-light border">Kembali</a>
<button type="submit" class="btn btn-primary">Simpan Pegawai</button>
</div>
</form>
<?php render_footer(); ?>