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 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,8 +126,8 @@ 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"));
@ -146,6 +144,11 @@ const AddPage: React.FC = () => {
return false;
}
if(haveImageOrContent){
toast.error("validation.one_of_image_and_content_should_be_enter")
return false
}
return true;
});

View File

@ -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 ;
},
),
});
@ -107,10 +109,11 @@ export const getValidationSchemaBase = () => {
"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 ;
},
),
}),