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