import React, { Suspense, lazy, useEffect } from "react"; import { Modal, Spin } from "antd"; import FormikForm from "../../Layout/Dashboard/FormikFormModel"; import { getInitialValues, getValidationSchema, getInitialValuesBase, getValidationSchemaBase, processTags, } from "./Model/formUtil"; import { useAddQuestion, useAddQuestionAsync } from "../../api/Question"; import { useTranslation } from "react-i18next"; import { useNavigate, useParams } from "react-router-dom"; import { ParamsEnum } from "../../enums/params"; import { useObjectToEdit } from "../../zustand/ObjectToEditState"; import Header from "../../Components/exercise/Header"; import { Question } from "../../types/Item"; import BaseForm from "./Model/Malty/Add"; import Form from "./Model/Add"; const AcceptModal = lazy(() => import("./Model/AcceptModal")); import { useModalState } from "../../zustand/Modal"; import { ModalEnum } from "../../enums/Model"; import { cleanObject } from "../../utils/cleanObject"; import { hasItems } from "../../utils/hasItems"; import { QUESTION_OBJECT_KEY } from "../../config/AppKey"; import useSaveOnDisconnect from "../../Hooks/useSaveOnDisconnect"; import { getLocalStorageQuestions } from "../../utils/setLocalStorageQuestions"; import { toast } from "react-toastify"; import useSetPageTitle from "../../Hooks/useSetPageTitle"; import { useGetAllUnit } from "../../api/unit"; import { useGetAllLesson } from "../../api/lesson"; const AddPage: React.FC = () => { const { isSuccess: isSuccessAsync, mutateAsync } = useAddQuestionAsync(); const { mutate, isSuccess, isLoading } = useAddQuestion(); const { isBseQuestion, setTagsSearch, setObjectToEdit, setSuccess, SavedQuestionData, } = useObjectToEdit(); const { subject_id, lesson_id, unit_id } = useParams(); const { setIsOpen } = useModalState((state) => state); const { data: unit } = useGetAllUnit({ show: unit_id }); const { data: lesson } = useGetAllLesson({ show: lesson_id }); const [t] = useTranslation(); const unitName = unit?.data?.name ?? ""; const SubjectName = unit?.data?.subject?.name ?? ""; const lessonName = lesson?.data?.name ?? ""; useSetPageTitle( t(`page_header.subject`) + "/" + `${SubjectName}` + "/" + t(`PageTitle.unit`) + "/" + `${unitName}` + "/" + t(`PageTitle.lesson`) + "/" + `${lessonName}` + "/" + t(`PageTitle.questions`), ); const handleSubmit = ( values: any, { resetForm }: { resetForm: () => void }, ) => { const DataToSend = structuredClone(values); setTagsSearch(null); console.log(isBseQuestion); if (isBseQuestion || DataToSend?.isBase === 1) { const newBseQuestion = { subject_id: subject_id, content: DataToSend?.content, image: DataToSend?.image ?? "", isBase: 1, lessons_ids: [lesson_id], }; mutateAsync(newBseQuestion).then((data: any) => { const newBseQuestionId = (data as any)?.data?.id; const Questions = DataToSend?.Questions; console.log(1); Questions?.map((item: Question) => { const tags = processTags(item); console.log(item); mutate({ ...item, parent_id: newBseQuestionId, subject_id: subject_id, tags, lessons_ids: [lesson_id], }); }); console.log(newBseQuestionId, "newBseQuestionId"); }); } else { const tags = processTags(DataToSend); mutate({ ...values, subject_id: subject_id, tags, lessons_ids: [lesson_id], }); } }; const navigate = useNavigate(); useEffect(() => { if ( isSuccessAsync && (SavedQuestionData?.Questions?.length > 0 ? isSuccess : true) ) { setObjectToEdit(null); setSuccess(true); localStorage.removeItem(QUESTION_OBJECT_KEY); } if (isSuccess && !SavedQuestionData?.Questions?.length) { toast.success(t("validation.the_possess_done_successful")); setObjectToEdit(null); setSuccess(true); localStorage.removeItem(QUESTION_OBJECT_KEY); } }, [isSuccess, isSuccessAsync]); let cleanedQuestionOptions = cleanObject(SavedQuestionData); let noChange = hasItems(cleanedQuestionOptions); useSaveOnDisconnect(noChange, QUESTION_OBJECT_KEY, SavedQuestionData); const SavedData = getLocalStorageQuestions(QUESTION_OBJECT_KEY); const handleCancel = () => { if (!noChange) { navigate(-1); localStorage.removeItem(QUESTION_OBJECT_KEY); } else { setIsOpen(ModalEnum?.QUESTION_ACCEPT); } }; if (isBseQuestion || SavedData?.isBase === 1) { return (
{t("practical.back")}
}>
); } return (
{t("practical.back")}
}>
); }; export default AddPage;