// PhysicalInfoForm.validation.ts import * as yup from "yup"; import { PhysicalInfoFormValues } from "../types"; export const PhysicalInfoValidationSchema = yup .object({ // applicantId: yup.string().trim().required("کد متقاضی الزامی است"), bloodType: yup .mixed() .oneOf(["", "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-"]) .required("گروه خونی را انتخاب کنید"), height: yup .mixed() .test( "height-valid", "قد نامعتبر است", (v) => v === "" || (typeof v === "number" && v > 0 && v <= 300), ) .required("قد الزامی است"), weight: yup .mixed() .test( "weight-valid", "وزن نامعتبر است", (v) => v === "" || (typeof v === "number" && v > 0 && v <= 500), ) .required("وزن الزامی است"), bmi: yup .mixed() .test( "bmi-valid", "BMI نامعتبر است يا قد و وزن اشتباه است", (v) => v === "" || (typeof v === "number" && v > 0 && v <= 100), ) .notRequired(), hasDisability: yup.boolean().required(), disabilityDescription: yup .string() .trim() .when("hasDisability", { is: true, then: (s) => s.required("توضیحات معلولیت الزامی است"), otherwise: (s) => s.notRequired(), }), hasChronicDisease: yup.boolean().required(), chronicDiseaseDescription: yup .string() .trim() .when("hasChronicDisease", { is: true, then: (s) => s.required("توضیحات بیماری مزمن الزامی است"), otherwise: (s) => s.notRequired(), }), surgeryHistory: yup.string().trim().notRequired(), medications: yup.string().trim().notRequired(), specialMark: yup.string().trim().notRequired(), }) .required();