Files
hounam-submit-form-frontend/ui/forms/physicalInfo/validation/index.ts
2026-06-02 17:08:52 +03:30

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();