From 8610f4f2335201d8c455573d31235a0a9e2356a0 Mon Sep 17 00:00:00 2001 From: Sukma Gladys Date: Fri, 8 Nov 2024 10:21:26 +0700 Subject: [PATCH] fix: finish verifying validation --- .../_verifyingLayout/verifying/index.lazy.tsx | 79 ++++++------------- 1 file changed, 26 insertions(+), 53 deletions(-) diff --git a/apps/frontend/src/routes/_verifyingLayout/verifying/index.lazy.tsx b/apps/frontend/src/routes/_verifyingLayout/verifying/index.lazy.tsx index 2419f29..028d9f9 100644 --- a/apps/frontend/src/routes/_verifyingLayout/verifying/index.lazy.tsx +++ b/apps/frontend/src/routes/_verifyingLayout/verifying/index.lazy.tsx @@ -110,28 +110,6 @@ export default function AssessmentPage() { getQuestionsAllQueryOptions(page, limit) ); - // Fungsi untuk memeriksa pertanyaan yang belum dijawab - const checkUnansweredQuestions = () => { - // Misalkan data berisi pertanyaan dan jawaban - const unanswered = data?.data.filter(question => { - // Pastikan questionId tidak null dan tidak ada jawaban untuk questionId tersebut - return question.questionId !== null && !answers[question.questionId]; - }) || []; // Ganti question.id dengan question.questionId dan tambahkan pengecekan null - setUnansweredQuestions(unanswered.length); // Aman, karena unanswered selalu array - - // Jika ada pertanyaan yang belum dijawab, buka modal peringatan - if (unanswered.length > 0) { - setValidationModalOpen(true); - } else { - setModalOpen(true); // Jika tidak ada, buka modal konfirmasi selesai asesmen - } - }; - - const handleFinishClick = () => { - // Memanggil fungsi untuk memeriksa pertanyaan yang belum dijawab - checkUnansweredQuestions(); - }; - useEffect(() => { const id = getQueryParam("id"); @@ -206,39 +184,36 @@ const formattedResult = answersData?.data.reduce((acc, item) => { } }, [answersData, assessmentId]); + // Fungsi untuk memeriksa pertanyaan yang belum dijawab + const checkUnansweredQuestions = () => { + console.log("answer validation data:", answers); + // Filter pertanyaan yang belum dijawab berdasarkan data `answers` + const unanswered = data?.data.filter(question => { + return question.questionId !== null && !answers[question.questionId]; + }) || []; +console.log("unanswered questions:", unanswered.length); + setUnansweredQuestions(unanswered.length); + + // Tampilkan modal berdasarkan jumlah pertanyaan yang belum dijawab + if (unanswered.length > 0) { + setValidationModalOpen(true); + } else { + setModalOpen(true); + } + }; + + const handleFinishClick = () => { + // Memanggil fungsi untuk memeriksa pertanyaan yang belum dijawab + checkUnansweredQuestions(); + }; + const handleConfirmFinish = async (assessmentId: string) => { try { - // Cek pertanyaan yang belum dijawab - let unansweredCount = 0; - - // Cek radio button - data?.data.forEach((question) => { - // Pastikan questionId tidak null sebelum memeriksa answers - if (question.questionId && !answers[question.questionId]) { - unansweredCount += 1; - } - }); - - // Cek textarea - Object.keys(validationInformation).forEach((key) => { - // Pastikan key tidak null dan tidak ada validasi informasi untuk key tersebut - if (key && !validationInformation[key]) { - unansweredCount += 1; - } - }); - - if (unansweredCount > 0) { - // Tampilkan modal validasi jika ada pertanyaan yang belum dijawab - setUnansweredQuestions(unansweredCount); - setValidationModalOpen(true); - return; - } - - // Memanggil mutation untuk mengubah status asesmen menjadi 'selesai' di backend + // Skip counting unanswered questions here to prevent duplication const mutation = submitAssessmentRevisionMutationOptions(assessmentId); const response = await mutation.mutationFn(); - // Setelah status diubah, navigasikan ke halaman hasil asesmen + // Navigate to results const newUrl = `/assessmentResult?id=${assessmentId}`; window.history.pushState({}, "", newUrl); console.log("Navigated to:", newUrl); @@ -246,7 +221,7 @@ const formattedResult = answersData?.data.reduce((acc, item) => { } catch (error) { console.error("Error finishing assessment:", error); } finally { - setModalOpen(false); // Menutup modal setelah selesai + setModalOpen(false); } }; @@ -365,8 +340,6 @@ const formattedResult = answersData?.data.reduce((acc, item) => { } }, [answersData, assessmentId]); - console.log(validationInformation); - // Mutation untuk mengirim data ke backend const { mutate: submitValidation } = useMutation({ mutationFn: (form: {