diff --git a/src/components/common/registration-form.tsx b/src/components/common/registration-form.tsx index 4601fc4..c3e49dc 100644 --- a/src/components/common/registration-form.tsx +++ b/src/components/common/registration-form.tsx @@ -86,7 +86,7 @@ export default function RegistrationForm() { resolver: zodResolver(baseSchema), defaultValues: { designation: getSjecMemberType(session?.user.email!), - name: session?.user.name!, + name:session?.user.name!, email: session?.user.email!, phone: "", entityName: "", @@ -249,7 +249,7 @@ export default function RegistrationForm() { const handleNext = async () => { let isValid = false; if (step === 1) { - isValid = await form.trigger(["designation", "foodPreference"]); + isValid = await form.trigger(["designation", "foodPreference","name"]); } else if (step === 2) { const designation = form.getValues("designation"); if (designation === "student") { @@ -314,9 +314,9 @@ export default function RegistrationForm() { + diff --git a/src/utils/zod-schemas.ts b/src/utils/zod-schemas.ts index 8147c4e..7ea4bbe 100644 --- a/src/utils/zod-schemas.ts +++ b/src/utils/zod-schemas.ts @@ -1,54 +1,52 @@ import { z } from "zod"; export const RegistrationFormSchema = z.object({ - name: z.string().min(1, "Name is required"), - usn: z.string().optional(), - email: z.string().email("Invalid email format"), - contact: z.string().length(10, "Contact must be exactly 10 digits"), - designation: z - .string() - .refine((value) => ["Student", "Faculty", "Employee"].includes(value), { - message: "Invalid designation", + name: z.string().min(1, "Name is required"), + usn: z.string().optional(), + email: z.string().email("Invalid email format"), + contact: z.string().length(10, "Contact must be exactly 10 digits"), + designation: z.string().refine((value) => ["Student", "Faculty", "Employee"].includes(value), { + message: "Invalid designation", }), - photo: z.string().optional(), - collegeIdCard: z.string().optional(), - entityName: z.string().min(1, "Entity name is required"), - referralUsed: z.string().optional(), - createdById: z.string(), + photo: z.string().optional(), + collegeIdCard: z.string().optional(), + entityName: z.string().min(1, "Entity name is required"), + referralUsed: z.string().optional(), + createdById: z.string(), }); export type TRegistrationForm = z.infer; export const emailSchema = z.object({ - email: z.string().email(), - name: z.string().min(1), + email: z.string().email(), + name: z.string().min(1), }); export const baseSchema = z.object({ - designation: z.enum(["student", "faculty", "external"]), - name: z.string().min(2, { message: "Name must be at least 2 characters." }), - email: z.string().email({ message: "Invalid email address." }), - phone: z - .string() - .regex(/^\d{10}$/, { message: "Phone number must be 10 digits." }), - photo: z.string(), - entityName: z.string().optional(), - couponCode: z.string().optional(), - foodPreference: z.enum(["veg", "non-veg"]), + designation: z.enum(["student", "faculty", "external"]), + name: z.string().min(2, { message: "Name must be at least 2 characters." }), + email: z.string().email({ message: "Invalid email address." }), + phone: z.string().regex(/^\d{10}$/, { message: "Phone number must be 10 digits." }), + photo: z.string(), + entityName: z.string().optional(), + couponCode: z.string().optional(), + foodPreference: z.enum(["veg", "non-veg"]), }); export const studentSchema = baseSchema.extend({ - usn: z.string().min(1, { message: "USN is required for students." }), - idCard: z.string().min(1, { message: "ID Card is required for students." }), + usn: z.string().min(1, { message: "USN is required for students." }), + idCard: z.string().min(1, { message: "ID Card is required for students." }), }); export const studentFormSchema = z.object({ - name: z.string().min(2, { message: "Name must be at least 2 characters." }), - email: z.string().email({ message: "Invalid email address." }), - phone: z - .string() - .regex(/^\d{10}$/, { message: "Phone number must be 10 digits." }), - usn: z.string().min(1, { message: "USN is required for students." }), - idCard: z.string().min(1, { message: "ID Card is required for students." }), - photo: z.string().min(1, { message: "Photo is required." }), + name: z.string().min(2, { message: "Name must be at least 2 characters." }), + email: z.string().email({ message: "Invalid email address." }), + phone: z.string().regex(/^\d{10}$/, { message: "Phone number must be 10 digits." }), + usn: z + .string() + .min(10, { message: "USN is required for students." }) + .max(10, { message: "USN must be exactly 10 characters long." }) + .regex(/^[A-Z0-9]+$/, { message: "USN must be in uppercase." }), + idCard: z.string().min(1, { message: "ID Card is required for students." }), + photo: z.string().min(1, { message: "Photo is required." }), });