import { z } from "zod"; import { handlePhoneVal, justLetters, justOneWord, postalCode } from ".."; import * as M from "../messages"; const checkoutObjVal = { name: z .string({ required_error: M.requiredMessage }) .regex(justOneWord, M.nameMessage), surname: z .string({ required_error: M.requiredMessage }) .regex(justOneWord, M.nameMessage), address: z.string({ required_error: M.requiredMessage }), postalCode, city: z .string({ required_error: M.requiredMessage }) .min(2, M.onlyMinimumTwoCharacters) .regex(justLetters, M.onlyTextMessage), province: z.string({ required_error: M.requiredMessage }), phone: z .string({ required_error: M.requiredMessage }) .refine(handlePhoneVal, M.phoneMessage), senderName: z.string().regex(justOneWord, M.nameMessage), senderCifNif: z .string() .length(9, "El código postal debe tener 9 caracteres numéricos válidos"), senderEmail: z.string().email(M.emailMessage), senderPhone: z.string().refine(handlePhoneVal, M.phoneMessage), senderNotes: z.string(), paymentMethod: z.enum(["credit", "stripe"], { required_error: "Seleccione uno de los métodos de pago", }), terms: z.boolean().refine((val) => { return val === true; }, "Acepte las condiciones antes de continuar con la compra"), }; export const checkoutSchema = z.object(checkoutObjVal).partial({ senderName: true, senderCifNif: true, senderEmail: true, senderPhone: true, senderNotes: true, });