add validation question

This commit is contained in:
karimaldeen 2024-09-16 12:34:01 +03:00
parent 458319b49f
commit 251359e935
2 changed files with 29 additions and 23 deletions

View File

@ -35,7 +35,6 @@ const AddPage: React.FC = () => {
const handleSubmit = ( values: any) => { const handleSubmit = ( values: any) => {
const DataToSend = structuredClone(values); const DataToSend = structuredClone(values);
setTagsSearch(null); setTagsSearch(null);
console.log(1);
const canAnswersBeShuffled = DataToSend?.canAnswersBeShuffled ? 1 : 0; const canAnswersBeShuffled = DataToSend?.canAnswersBeShuffled ? 1 : 0;
@ -64,12 +63,7 @@ const AddPage: React.FC = () => {
...item, ...item,
}; };
}); });
console.log(answers);
if (answers?.length > 0) {
const isValidAnswers = answers?.some(
(answer: any) => answer?.isCorrect === 1,
);
}
mutate({ mutate({
...item, ...item,
parent_id: newBseQuestionId, parent_id: newBseQuestionId,
@ -82,8 +76,6 @@ const AddPage: React.FC = () => {
console.log(newBseQuestionId, "newBseQuestionId"); console.log(newBseQuestionId, "newBseQuestionId");
}); });
} else { } else {
console.log(1);
const tags = processTags(DataToSend); const tags = processTags(DataToSend);
const answers = values?.answers?.map((item: any, index: number) => { const answers = values?.answers?.map((item: any, index: number) => {
return { return {
@ -112,6 +104,8 @@ const AddPage: React.FC = () => {
const handleValidateSingleQuestion = (values:any)=>{ const handleValidateSingleQuestion = (values:any)=>{
const haveMoreThanOneAnswer = values?.answers?.length > 1; const haveMoreThanOneAnswer = values?.answers?.length > 1;
const haveOneAnswerRight = haveMoreThanOneAnswer && values?.answers?.some((item:any)=> item?.isCorrect === 1 || item.isCorrect === true ) 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){ if(!haveMoreThanOneAnswer){
toast.error(t("validation.it_should_have_more_than_one_answers")) ; toast.error(t("validation.it_should_have_more_than_one_answers")) ;
return false ; return false ;
@ -120,6 +114,10 @@ const AddPage: React.FC = () => {
toast.error(t("validation.it_should_have_more_than_one_correct_answers")) ; toast.error(t("validation.it_should_have_more_than_one_correct_answers")) ;
return false ; 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 answers = Question?.answers;
const haveAnswers = answers?.length > 0; const haveAnswers = answers?.length > 0;
const haveMoreThanOneAnswer = haveAnswers && answers?.length > 1; const haveMoreThanOneAnswer = haveAnswers && answers?.length > 1;
const haveOneAnswerRight = const haveOneAnswerRight = haveMoreThanOneAnswer && answers?.some((item: any) => item?.isCorrect === 1 || item.isCorrect === true);
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) { if (!haveAnswers) {
toast.error(t("validation.it_should_have_more_than_one_answers")); toast.error(t("validation.it_should_have_more_than_one_answers"));
return false; return false;
@ -145,6 +143,11 @@ const AddPage: React.FC = () => {
toast.error(t("validation.it_should_have_more_than_one_correct_answers")); toast.error(t("validation.it_should_have_more_than_one_correct_answers"));
return false; return false;
} }
if(haveImageOrContent){
toast.error("validation.one_of_image_and_content_should_be_enter")
return false
}
return true; return true;
}); });

View File

@ -25,10 +25,10 @@ export const getValidationSchema = () => {
// validate input // validate input
return Yup.object().shape({ return Yup.object().shape({
content_image: Yup.string().nullable(), content_image: Yup.string().nullable(),
content: Yup.string().required("validation.required"), content: Yup.string().required("validation.required").nullable(),
answers: Yup.array().of( answers: Yup.array().of(
Yup.object().shape({ Yup.object().shape({
content: Yup.string().required("validation.required"), content: Yup.string().nullable(),
content_image: Yup.string().nullable(), content_image: Yup.string().nullable(),
isCorrect: Yup.boolean(), isCorrect: Yup.boolean(),
}), }),
@ -36,10 +36,12 @@ export const getValidationSchema = () => {
"at-least-one-correct", "at-least-one-correct",
"At least one answer must be correct", "At least one answer must be correct",
(answers: any) => { (answers: any) => {
return answers?.some(
(answer: any) => const hasCorrectAnswer = answers?.some((answer:any) => answer?.isCorrect === true || answer?.isCorrect === 1);
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-correct",
"At least one answer must be correct", "At least one answer must be correct",
(answers: any) => { (answers: any) => {
return answers.some( const hasCorrectAnswer = answers?.some((answer:any) => answer?.isCorrect === true || answer?.isCorrect === 1);
(answer: any) =>
answer.isCorrect === true || answer.isCorrect === 1, const haveImageOrContent = answers?.some((item:any)=> !(item?.content) && !(item.content_image));
);
return hasCorrectAnswer && !haveImageOrContent ;
}, },
), ),
}), }),