floranet/src/utils/zod/schemas/checkoutSchema.js

46 lines
1.5 KiB
JavaScript

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,
});