69 lines
2.1 KiB
TypeScript
69 lines
2.1 KiB
TypeScript
// 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<PhysicalInfoFormValues["bloodType"]>()
|
|
.oneOf(["", "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-"])
|
|
.required("گروه خونی را انتخاب کنید"),
|
|
|
|
height: yup
|
|
.mixed<number | "">()
|
|
.test(
|
|
"height-valid",
|
|
"قد نامعتبر است",
|
|
(v) => v === "" || (typeof v === "number" && v > 0 && v <= 300),
|
|
)
|
|
.required("قد الزامی است"),
|
|
|
|
weight: yup
|
|
.mixed<number | "">()
|
|
.test(
|
|
"weight-valid",
|
|
"وزن نامعتبر است",
|
|
(v) => v === "" || (typeof v === "number" && v > 0 && v <= 500),
|
|
)
|
|
.required("وزن الزامی است"),
|
|
|
|
bmi: yup
|
|
.mixed<number | "">()
|
|
.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();
|