diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2024-08-26 10:28:15 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2024-08-26 10:28:15 +0700 |
| commit | f0cde08a3fda95b1738a765358022241aea404bf (patch) | |
| tree | c2cf2cb3e07154d04672f3b9d0667753f8487764 /src-migrate/validations | |
| parent | 0bca1bfb2bc7e52a31dde39602dd599d7c640e73 (diff) | |
<iman> update logic new register validation
Diffstat (limited to 'src-migrate/validations')
| -rw-r--r-- | src-migrate/validations/auth.ts | 130 |
1 files changed, 102 insertions, 28 deletions
diff --git a/src-migrate/validations/auth.ts b/src-migrate/validations/auth.ts index dc5b0411..69ea52e1 100644 --- a/src-migrate/validations/auth.ts +++ b/src-migrate/validations/auth.ts @@ -1,30 +1,104 @@ import { z } from 'zod'; -export const registerSchema = z.object({ - name: z.string().min(1, { message: 'Nama harus diisi' }), - email: z - .string() - .min(1, { message: 'Email harus diisi' }) - .email({ message: 'Email harus menggunakan format example@mail.com' }), - password: z.string().min(6, { message: 'Password minimal 6 karakter' }), - phone: z - .string() - .min(1, { message: 'Nomor telepon harus diisi' }) - .refine((val) => /^\d{10,12}$/.test(val), { - message: 'Format nomor telepon tidak valid, contoh: 081234567890', - }), - nama_wajib_pajak: z.string().min(1, { message: 'Nama wajib pajak harus diisi' }), - sppkp_document: z.string().min(1, { message: 'document harus diisi' }), - npwp_document: z.string().min(1, { message: 'document harus diisi' }), - industry_id: z.string().min(1, { message: 'Jenis usaha harus dipilih' }), - email_partner: z - .string() - .min(1, { message: 'Email harus diisi' }) - .email({ message: 'Email harus menggunakan format example@mail.com' }), - business_name: z.string().min(1, { message: 'Nama perusahaan harus diisi' }), - company_type_id: z.string().min(1, { message: 'Badan usaha wajib dipilih' }), - npwp: z - .string() - .min(15, { message: 'Format NPWP tidak valid, NPWP harus terdiri dari 15 digit angka.' }) - , -}); +export const registerSchema = z + .object({ + name: z.string().min(1, { message: 'Nama harus diisi' }), + email: z + .string() + .min(1, { message: 'Email harus diisi' }) + .email({ message: 'Email harus menggunakan format example@mail.com' }), + password: z.string().min(6, { message: 'Password minimal 6 karakter' }), + phone: z + .string() + .min(1, { message: 'Nomor telepon harus diisi' }) + .refine((val) => /^\d{10,12}$/.test(val), { + message: 'Format nomor telepon tidak valid, contoh: 081234567890', + }), + type_acc: z.string().optional(), + nama_wajib_pajak: z.string().optional(), + is_pkp: z.string(), + is_terdaftar: z.string(), + sppkp_document: z.string().optional(), + npwp_document: z.string().optional(), + industry_id: z.string().optional(), + email_partner: z.string().optional(), + business_name: z.string().optional(), + company_type_id: z.string().optional(), + npwp: z.string().optional(), + }) + .superRefine((data, ctx) => { + console.log("data.is_terdaftar", data.is_terdaftar); + console.log("data.is_pkp", data.is_pkp); + console.log("data.type_acc", data.type_acc); + + // Correct the typo in 'bussiness' to 'business' + if (data.type_acc === 'business') { + if (data.is_terdaftar === 'false') { + if (data.is_pkp === 'false') { + // Validation for is_pkp === 'false' + if (!data.business_name) { + ctx.addIssue({ + code: 'custom', + path: ['business_name'], + message: 'Nama perusahaan harus diisi', + }); + } + if (!data.company_type_id) { + ctx.addIssue({ + code: 'custom', + path: ['company_type_id'], + message: 'Badan usaha wajib dipilih', + }); + } + if (!data.industry_id) { + ctx.addIssue({ + code: 'custom', + path: ['industry_id'], + message: 'Jenis usaha harus dipilih', + }); + } + } else { + // Validation for is_pkp === 'true' or other values + const requiredFields: { field: keyof typeof data; message: string }[] = [ + { field: 'business_name', message: 'Nama perusahaan harus diisi' }, + { field: 'company_type_id', message: 'Badan usaha wajib dipilih' }, + { field: 'industry_id', message: 'Jenis usaha harus dipilih' }, + { field: 'sppkp_document', message: 'Document harus diisi' }, + { field: 'npwp_document', message: 'Document harus diisi' }, + { field: 'npwp', message: 'Format NPWP tidak valid, NPWP harus terdiri dari 15 digit angka.' }, + { field: 'nama_wajib_pajak', message: 'Nama wajib pajak harus diisi' }, + ]; + + requiredFields.forEach(({ field, message }) => { + if (!data[field]) { + ctx.addIssue({ + code: 'custom', + path: [field], + message, + }); + } + }); + + // Email validation for `email_partner` + if (!data.email_partner || !z.string().email().safeParse(data.email_partner).success) { + ctx.addIssue({ + code: 'custom', + path: ['email_partner'], + message: 'Email partner harus diisi dengan format example@mail.com', + }); + } + } + }else{ + + } + + // Remove this unconditional issue addition to prevent blocking form submission + // ctx.addIssue({ + // code: 'custom', + // path: ['business_name'], + // message: 'Nama perusahaan harus diisi', + // }); + }else{ + + } + }); |
