From 6e3d01cdc0acbeeaa1944f5c41d0fe377e20f5b4 Mon Sep 17 00:00:00 2001 From: Sabda Yagra Date: Mon, 6 Apr 2026 12:08:03 +0700 Subject: [PATCH] fix: register form in jouyrnalis --- components/form/sign-up.tsx | 100 +++++++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 2 deletions(-) diff --git a/components/form/sign-up.tsx b/components/form/sign-up.tsx index d766650..1235267 100644 --- a/components/form/sign-up.tsx +++ b/components/form/sign-up.tsx @@ -88,12 +88,16 @@ export default function SignUp() { return; } - // Umum dan Jurnalis → gunakan API createUser - if (role === "umum" || role === "jurnalis") { + if (role === "umum") { await handleCreateUserUmum(e); return; } + if (role === "jurnalis") { + await handleCreateUserJurnalis(e); + return; + } + // Kontributor (sementara ikut umum) if (role === "kontributor") { await handleCreateUserKontributor(e); @@ -280,6 +284,98 @@ export default function SignUp() { } }; + const handleCreateUserJurnalis = async (e: React.FormEvent) => { + e.preventDefault(); + + // ✅ VALIDASI + if (!fullname.trim()) { + MySwal.fire("Peringatan", "Nama lengkap wajib diisi", "warning"); + return; + } + + if (!validateEmail(email)) { + MySwal.fire("Peringatan", "Email tidak valid", "warning"); + return; + } + + if (!validatePassword(password)) { + MySwal.fire("Peringatan", "Password minimal 8 karakter", "warning"); + return; + } + + if (!membershipType) { + MySwal.fire("Peringatan", "Jenis keanggotaan wajib diisi", "warning"); + return; + } + + if (!certNumber.trim()) { + MySwal.fire("Peringatan", "Nomor sertifikasi wajib diisi", "warning"); + return; + } + + // ✅ GENERATE USERNAME + const autoUsername = + fullname.trim().replace(/\s+/g, "-").toLowerCase() || email.split("@")[0]; + + if (!validateUsername(autoUsername)) { + MySwal.fire("Peringatan", "Username tidak valid", "warning"); + return; + } + + // ✅ PAYLOAD (SUDAH DISESUAIKAN BACKEND) + const payload = { + address: "", + clientId: "78356d32-52fa-4dfc-b836-6cebf4e3eead", + dateOfBirth: "", + email, + fullName: fullname, + genderType: "", + identityGroup: "", + identityGroupNumber: "", + identityNumber: certNumber, // 🔥 penting + identityType: "KTP", + lastEducation: "", + password, + phoneNumber: "08123456789", // 🔥 jangan kosong dulu + userLevelId: 1, + userRoleId: 3, // 🔥 pastikan ini role jurnalis + username: autoUsername + "-" + Date.now(), + workType: membershipType.toUpperCase(), + }; + + console.log("📦 PAYLOAD JURNALIS:", payload); + + try { + setIsLoading(true); + + const res = await createUser(payload); + + if (res?.error) { + MySwal.fire("Gagal", res?.message || "Gagal mendaftar", "error"); + } else { + MySwal.fire({ + title: "Berhasil!", + text: "Akun jurnalis berhasil dibuat", + icon: "success", + showConfirmButton: false, + timer: 2000, + }); + + setTimeout(() => router.push("/auth"), 2000); + } + } catch (err) { + console.error("❌ ERROR JURNALIS:", err); + + MySwal.fire( + "Error", + "Terjadi kesalahan server saat registrasi jurnalis", + "error", + ); + } finally { + setIsLoading(false); + } + }; + const validateTenantForm = () => { const errors: any = {};