Pull Request branch dev-clone to main #1
|
|
@ -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: {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user