diff --git a/src/Pages/Admin/question/AddPage.tsx b/src/Pages/Admin/question/AddPage.tsx index d6c8c4b..0aa7986 100644 --- a/src/Pages/Admin/question/AddPage.tsx +++ b/src/Pages/Admin/question/AddPage.tsx @@ -35,7 +35,6 @@ const AddPage: React.FC = () => { const handleSubmit = ( values: any) => { const DataToSend = structuredClone(values); setTagsSearch(null); - console.log(1); const canAnswersBeShuffled = DataToSend?.canAnswersBeShuffled ? 1 : 0; @@ -64,12 +63,7 @@ const AddPage: React.FC = () => { ...item, }; }); - console.log(answers); - if (answers?.length > 0) { - const isValidAnswers = answers?.some( - (answer: any) => answer?.isCorrect === 1, - ); - } + mutate({ ...item, parent_id: newBseQuestionId, @@ -82,8 +76,6 @@ const AddPage: React.FC = () => { console.log(newBseQuestionId, "newBseQuestionId"); }); } else { - console.log(1); - const tags = processTags(DataToSend); const answers = values?.answers?.map((item: any, index: number) => { return { @@ -112,6 +104,8 @@ const AddPage: React.FC = () => { const handleValidateSingleQuestion = (values:any)=>{ const haveMoreThanOneAnswer = values?.answers?.length > 1; const haveOneAnswerRight = haveMoreThanOneAnswer && values?.answers?.some((item:any)=> item?.isCorrect === 1 || item.isCorrect === true ) + const haveImageOrContent = haveOneAnswerRight && values?.answers?.some((item:any)=> !(item?.content) && !(item.content_image) ) + if(!haveMoreThanOneAnswer){ toast.error(t("validation.it_should_have_more_than_one_answers")) ; return false ; @@ -120,6 +114,10 @@ const AddPage: React.FC = () => { toast.error(t("validation.it_should_have_more_than_one_correct_answers")) ; return false ; } + if(haveImageOrContent){ + toast.error("validation.one_of_image_and_content_should_be_enter") + return false + } } @@ -128,9 +126,9 @@ const AddPage: React.FC = () => { const answers = Question?.answers; const haveAnswers = answers?.length > 0; const haveMoreThanOneAnswer = haveAnswers && answers?.length > 1; - const haveOneAnswerRight = - haveMoreThanOneAnswer && answers?.some((item: any) => item?.isCorrect === 1 || item.isCorrect === true); - + const haveOneAnswerRight = haveMoreThanOneAnswer && answers?.some((item: any) => item?.isCorrect === 1 || item.isCorrect === true); + const haveImageOrContent = haveOneAnswerRight && values?.answers?.some((item:any)=> !(item?.content) && !(item.content_image) ) + if (!haveAnswers) { toast.error(t("validation.it_should_have_more_than_one_answers")); return false; @@ -145,6 +143,11 @@ const AddPage: React.FC = () => { toast.error(t("validation.it_should_have_more_than_one_correct_answers")); return false; } + + if(haveImageOrContent){ + toast.error("validation.one_of_image_and_content_should_be_enter") + return false + } return true; }); diff --git a/src/Pages/Admin/question/formUtil.ts b/src/Pages/Admin/question/formUtil.ts index 1a4f553..f8f43ed 100644 --- a/src/Pages/Admin/question/formUtil.ts +++ b/src/Pages/Admin/question/formUtil.ts @@ -25,10 +25,10 @@ export const getValidationSchema = () => { // validate input return Yup.object().shape({ content_image: Yup.string().nullable(), - content: Yup.string().required("validation.required"), + content: Yup.string().required("validation.required").nullable(), answers: Yup.array().of( Yup.object().shape({ - content: Yup.string().required("validation.required"), + content: Yup.string().nullable(), content_image: Yup.string().nullable(), isCorrect: Yup.boolean(), }), @@ -36,10 +36,12 @@ export const getValidationSchema = () => { "at-least-one-correct", "At least one answer must be correct", (answers: any) => { - return answers?.some( - (answer: any) => - answer?.isCorrect === true || answer?.isCorrect === 1, - ); + + const hasCorrectAnswer = answers?.some((answer:any) => answer?.isCorrect === true || answer?.isCorrect === 1); + + const haveImageOrContent = answers?.some((item:any)=> !(item?.content) && !(item.content_image)); + + return hasCorrectAnswer && !haveImageOrContent ; }, ), }); @@ -106,11 +108,12 @@ export const getValidationSchemaBase = () => { "at-least-one-correct", "At least one answer must be correct", (answers: any) => { - - return answers.some( - (answer: any) => - answer.isCorrect === true || answer.isCorrect === 1, - ); + + const hasCorrectAnswer = answers?.some((answer:any) => answer?.isCorrect === true || answer?.isCorrect === 1); + + const haveImageOrContent = answers?.some((item:any)=> !(item?.content) && !(item.content_image)); + + return hasCorrectAnswer && !haveImageOrContent ; }, ), }),