import { z } from "zod";

const normalizeArgentinaPhone = (value: string): string => {
  return value
    .replace(/\D/g, "")
    .replace(/^0/, "")
    .replace(/^(\d{2,4})15/, "$1");
};

const isValidArgentinaPhone = (value: string): boolean => {
  const normalized = normalizeArgentinaPhone(value);
  return normalized.length === 10 || normalized.length === 11;
};

export const contactSchema = z.object({
  firstName: z
    .string()
    .min(2, "El nombre debe tener al menos 2 caracteres")
    .max(50, "El nombre no puede superar los 50 caracteres")
    .trim(),

  lastName: z
    .string()
    .min(2, "El apellido debe tener al menos 2 caracteres")
    .max(50, "El apellido no puede superar los 50 caracteres")
    .trim(),

  email: z
    .string()
    .email("El email no es válido")
    .max(100, "El email no puede superar los 100 caracteres")
    .toLowerCase()
    .trim(),

  phone: z
    .string()
    .refine(isValidArgentinaPhone, {
      message: "El teléfono no es válido para Argentina",
    })
    .transform(normalizeArgentinaPhone),

  message: z
    .string()
    .min(10, "El mensaje debe tener al menos 10 caracteres")
    .max(1000, "El mensaje no puede superar los 1000 caracteres")
    .trim(),
});

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