Layanan IT Jababeka mencakup dukungan pengguna, pengelolaan akun dan hak akses, penyediaan fasilitas kerja berbasis IT, serta penanganan insiden dan permintaan layanan guna mendukung kelancaran operasional perusahaan.
!
Informasi
text.includes(pattern));
}
function getEmployeeEmail(emp) {
if (!emp) return "";
return String(
emp.Email ||
emp.email ||
emp["Email Kantor"] ||
emp["Email Pribadi"] ||
emp["Email"] ||
""
).trim().toLowerCase();
}
function validateOffboardingBeforeSubmit() {
const jenisEl = document.getElementById("jenis_layanan");
const jenisLayanan = jenisEl ? jenisEl.value : "";
const panelOffboarding = document.getElementById("panelOffboarding");
if (
jenisLayanan !== "Offboarding Karyawan (Penonaktifan Akun)" ||
!panelOffboarding ||
!panelOffboarding.classList.contains("active")
) {
return true;
}
const searchInput = document.getElementById("of_nama_search");
const hiddenNama = document.getElementById("of_nama");
const tanggal = document.getElementById("of_tanggal");
const tambahan = document.getElementById("of_tambahan");
const catatan = document.getElementById("of_catatan");
const forwardTo = document.getElementById("of_forward_to");
if (!selectedOffboardingEmployee) {
showCustomModal("Mohon pilih nama karyawan dari daftar Employee Registry terlebih dahulu.");
if (searchInput) searchInput.focus();
return false;
}
const selectedName = normalizeTextSafe(selectedOffboardingEmployee.Nama || "");
const typedName = normalizeTextSafe(searchInput ? searchInput.value : "");
const hiddenName = normalizeTextSafe(hiddenNama ? hiddenNama.value : "");
if (!selectedName || typedName !== selectedName || hiddenName !== selectedName) {
showCustomModal("Data karyawan belum sesuai. Silakan cari dan pilih kembali nama karyawan dari daftar yang tersedia.");
clearOffboardingSelection();
clearOffboardingDetail();
if (searchInput) searchInput.focus();
return false;
}
if (!tanggal || !tanggal.value) {
showCustomModal("Mohon isi tanggal efektif resign.");
if (tanggal) tanggal.focus();
return false;
}
const today = new Date();
today.setHours(0, 0, 0, 0);
const selectedDate = new Date(tanggal.value + "T00:00:00");
if (selectedDate < today) {
showCustomModal("Tanggal efektif resign tidak boleh lebih kecil dari tanggal hari ini.");
tanggal.focus();
return false;
}
if (containsUnsafeText(tambahan ? tambahan.value : "") || containsUnsafeText(catatan ? catatan.value : "")) {
showCustomModal("Catatan mengandung karakter atau pola yang tidak dapat diproses. Mohon periksa kembali isian tambahan/catatan.");
return false;
}
if (forwardTo && forwardTo.value) {
const offboardingEmail = getEmployeeEmail(selectedOffboardingEmployee);
const forwardEmail = String(forwardTo.value || "").trim().toLowerCase();
if (offboardingEmail && forwardEmail && offboardingEmail === forwardEmail) {
showCustomModal("Tujuan pengalihan email/drive tidak boleh sama dengan karyawan yang akan dioffboarding.");
forwardTo.focus();
return false;
}
}
return true;
}
document.getElementById("of_nama_search").addEventListener("input", onOffboardingEmployeeChange);
document.getElementById("showOffboardingDataBtn").addEventListener("click", showOffboardingData);
document.addEventListener("DOMContentLoaded", () => {
loadMasterData();
loadEmployees();
applyServiceVisibility();
document.getElementById("jenis_layanan").value = "Keluhan";
changeServiceType();
});