import * as Yup from "yup"; export const WorkExperienceValidationSchema = Yup.object({ workExperiences: Yup.array() .of( Yup.object({ id: Yup.mixed().optional(), hasNoExperience: Yup.boolean().required(), companyName: Yup.string().when("hasNoExperience", { is: false, then: (schema) => schema.required("نام شرکت الزامی است"), otherwise: (schema) => schema.optional(), }), lastPosition: Yup.string().when("hasNoExperience", { is: false, then: (schema) => schema.required("آخرین سمت الزامی است"), otherwise: (schema) => schema.optional(), }), startYear: Yup.string().when("hasNoExperience", { is: false, then: (schema) => schema .required("سال شروع الزامی است") .matches(/^\d{4}$/, "سال شروع باید 4 رقم باشد"), otherwise: (schema) => schema.optional(), }), endYear: Yup.string().when("hasNoExperience", { is: false, then: (schema) => schema .required("سال پایان الزامی است") .matches(/^\d{4}$/, "سال پایان باید 4 رقم باشد"), otherwise: (schema) => schema.optional(), }), leavingReason: Yup.string().when("hasNoExperience", { is: false, then: (schema) => schema.required("علت ترک کار الزامی است"), otherwise: (schema) => schema.optional(), }), description: Yup.string().optional(), }), ) .min(1, "حداقل یک رکورد باید وجود داشته باشد") .test( "single-no-experience-item", "در صورت انتخاب فاقد سابقه، فقط یک رکورد مجاز است", (value) => { if (!value || value.length === 0) return false; const hasNoExperience = value.some((item) => item.hasNoExperience); if (!hasNoExperience) return true; return value.length === 1 && value[0].hasNoExperience === true; }, ) .required("ثبت سابقه کاری الزامی است"), });