import { array, 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" }), designation: z.string().min(1, { message: "Designation is requried" }), projectIds: z.array(z.string()).nullable().optional(), // 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(13, "Invalid Number") .regex(/^[\d\s+()-]+$/, "Invalid phone number format") .or(z.literal("")), }) ) .optional() .default([]), tags: z .array( z.object({ id: z.string().nullable().optional(), name: z.string(), }) ) .min(1, { message: "At least one tag is required" }), bucketIds: z .array(z.string()) .nonempty({ message: "At least one bucket is required" }), }); // .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"], // }); // Buckets export const bucketScheam = z.object({ name: z.string().min(1, { message: "Name is required" }), description: z.string().min(1, { message: "Description is required" }), }); export const defaultContactValue = { name: "", organization: "", contactCategoryId: null, address: "", description: "", designation: "", projectIds: [], contactEmails: [], contactPhones: [], tags: [], bucketIds: [], }; export const contactsFilter = z.object({ bucketIds: z.array(z.string()).optional(), categoryIds: z.array(z.string()).optional(), }); export const defaultContactFilter = { bucketIds: [], categoryIds: [], }; export const notesFilter = z.object({ createdByIds: z.array(z.string()).optional(), organizations: z.array(z.string()).optional(), }); export const defaultNotesFilter = { createdByIds: [], organizations: [], };