58 lines
1.6 KiB
JavaScript
58 lines
1.6 KiB
JavaScript
import { array, z } from "zod";
|
|
|
|
const phoneRegex = /^\+?[1-9]\d{6,14}$/;
|
|
|
|
export const organizationSchema = z.object({
|
|
name: z.string().min(1, { message: "Name is required" }),
|
|
contactNumber: z
|
|
.string()
|
|
.trim()
|
|
.min(7, { message: "Contact number must be at least 7 digits" })
|
|
.max(20, { message: "Contact number cannot exceed 12 digits" })
|
|
|
|
.regex(phoneRegex, { message: "Invalid phone number" }),
|
|
contactPerson: z.string().min(1, { message: "Person name required" }),
|
|
address: z.string().min(1, { message: "Address is required!" }),
|
|
email: z
|
|
.string()
|
|
.min(1, { message: "Email is required" })
|
|
.email("Invalid email address"),
|
|
serviceIds: z
|
|
.array(z.string())
|
|
.min(1, { message: "Service isrequired" }),
|
|
});
|
|
|
|
export const defaultOrganizationValues = {
|
|
name: "",
|
|
contactNumber: "",
|
|
contactPerson: "",
|
|
address: "",
|
|
email: "",
|
|
serviceIds: [],
|
|
};
|
|
|
|
export const assignedOrgToProject = z.object({
|
|
// projectId: z.string().uuid({ message: "Invalid projectId format" }),
|
|
// organizationId: z.string().string({ message: "Invalid organizationId format" }),
|
|
// parentOrganizationId: z
|
|
// .string()
|
|
// .nullable()
|
|
// .optional(),
|
|
serviceIds: z.preprocess(
|
|
(val) => (Array.isArray(val) ? val : []),
|
|
z
|
|
.array(z.string().uuid({ message: "Invalid serviceId format" }))
|
|
.nonempty({ message: "At least one service must be selected" })
|
|
),
|
|
|
|
organizationTypeId: z
|
|
.string()
|
|
.min(1, { message: "Organization is required" }),
|
|
});
|
|
|
|
export const spridSchema = z.object({
|
|
spridSearchText: z
|
|
.string()
|
|
.regex(/^\d{4}$/, { message: "SPRID must be exactly 4 digits" }),
|
|
});
|