created new file for directory form schema

This commit is contained in:
Pramod Mahajan 2025-05-18 02:15:30 +05:30
parent 28a4f63d10
commit 4d6171e1ed

View File

@ -0,0 +1,57 @@
import { z } from "zod";
export const ContactSchema = z
.object({
name: z.string().min(1, "Name is required"),
organization: z.string().min(1, "Organization name is required"),
contactCategoryId: z.string().nullable().optional(),
address: z.string().optional(),
description: z.string().min(1, { message: "Description is required" }),
projectIds: z.array(z.string()).min(1, "Project is required"),
contactEmails: z
.array(
z.object({
label: z.string(),
emailAddress: z.string().email("Invalid email").or(z.literal("")),
})
)
.optional()
.default([]),
contactPhones: z
.array(
z.object({
label: z.string(),
phoneNumber: z
.string()
.min(6, "Invalid Number")
.max(10, "Invalid Number")
.regex(/^[\d\s+()-]+$/, "Invalid phone number format").or(z.literal("")),
})
)
.optional()
.default([]),
tags: z
.array(
z.object({
id: z.string().nullable(),
name: z.string(),
})
)
.min(1, { message: "At least one tag is required" }),
bucketIds: z.array(z.string()).optional(),
})
.refine((data) => {
const hasValidEmail = (data.contactEmails || []).some(
(e) => e.emailAddress?.trim() !== ""
);
const hasValidPhone = (data.contactPhones || []).some(
(p) => p.phoneNumber?.trim() !== ""
);
return hasValidEmail || hasValidPhone;
}, {
message: "At least one contact (email or phone) is required",
path: ["contactPhone"],
});