import { emailField, phoneField } from "@/schema/common.schema";
import { z } from "zod";

export const phoneSchema = z.object({
  countryCode: z.coerce.string(),
  number: phoneField({ required: true }),
});

export const contactSchema = z.object({
  firstName: z.string({
    required_error: "First name is required",
  }),
  lastName: z.string().optional(),
  email: emailField({ required: false }),
  phone: z
    .array(phoneSchema)
    .min(1, { message: "At least one phone number is required" }),
  addressLine1: z.string().optional(),
  addressLine2: z.string().optional(),
  country: z.string().min(1, { message: "Country is required" }),
  state: z.string().min(1, { message: "State is required" }),
  city: z.string().min(1, { message: "City is required" }),
  pinCode: z
    .string()
    .length(6, { message: "Pin code must be exactly 6 digits." })
    .regex(/^\d+$/, { message: "Pin code must only contain digits." }),
  companyName: z.string().optional(),
  position: z.string().optional(),
  workPhoneNumber: z.preprocess(
    (val) => (val == null ? undefined : String(val).trim()),
    z.string().optional()
  ),
  workEmail: emailField({ required: false }),
  source: z.string().optional(),
});

export type ContactFormData = z.infer<typeof contactSchema>;
