import React, { useState, useEffect } from 'react'; import { Modal } from 'antd'; interface Question { questionId: string; questionText: string; correctAnswer: string; options: string[]; } interface Quiz { quizId: string; quizName: string; internalMarks: string; attendance: string; attendQuestion: string; totalQuestion: string; questions: Question[]; } interface Module { moduleId: string; type: string; moduleName: string; quizzes: Quiz[]; } interface QuestionList { questionId: string; questionText: string; correctAnswer: string; options: string[]; moduleId: string; } interface ModuleList { moduleId: string; } export default function Index() { const [isModalOpen, setIsModalOpen] = useState(false); const [selectedQuiz, setSelectedQuiz] = useState(null); const [quizModuleData, setQuizModuleData] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [questionList, setQuestionList] = useState([]); const [moduleList, setModuleList] = useState([]); useEffect(() => { fetch(`https://api.teachertrainingkolkata.in/api/question-list`) .then((res) => { if (!res.ok) { throw new Error('Network Response not ok'); } return res.json(); }) .then((questionData) => { setQuestionList(questionData); console.log('Question List', questionData); }) .catch((error) => { console.error('Error fetching question list:', error); }); }, []); useEffect(() => { if (questionList.length > 0) { const fetchModuleList = async () => { try { const moduleData = await Promise.all( questionList.map((question) => fetch(`https://api.teachertrainingkolkata.in/api/quiz-module-list?module_id=${question.moduleId}`) .then((res) => { if (!res.ok) { throw new Error('Network Response not ok'); } return res.json(); }) ) ); setModuleList(moduleData.flat()); console.log('Module List', moduleData.flat()); } catch (error) { console.error('Error fetching module list:', error); } }; fetchModuleList(); } }, [questionList]); useEffect(() => { fetch('https://api.teachertrainingkolkata.in/api/quiz-module') .then((res) => { if (!res.ok) { throw new Error('Network response was not ok'); } return res.json(); }) .then((data) => { // console.log('Fetched data:', data); // Extract the modules array from the response if (data && Array.isArray(data.modules)) { setQuizModuleData(data.modules); } else { setError(new Error('Fetched data is not an array')); } setLoading(false); }) .catch((error) => { console.error('Error fetching data:', error); setError(error); setLoading(false); }); }, []); if (loading) { return
Loading...
; } if (error) { return
Error: {error.message}
; } const showModal = (quiz: Quiz) => { setSelectedQuiz(quiz); setIsModalOpen(true); }; const handleOk = () => { setIsModalOpen(false); setSelectedQuiz(null); }; const handleCancel = () => { setIsModalOpen(false); setSelectedQuiz(null); }; return (
{quizModuleData.length > 0 ? ( quizModuleData.map((moduleData) => (

{moduleData.type}

{moduleData.moduleName}

3/8 Quizzes Completed

{moduleData.quizzes.map((quizData) => (
showModal(quizData)} className="flex flex-row justify-between place-items-center hover:bg-[#FFF4EA] duration-500 border-b-[1px] border-b-[#CFCFCF] p-6 cursor-pointer" key={quizData.quizId}>

#{quizData.quizId} {quizData.quizName}

Internal Marks: {quizData.internalMarks}  •   Attendance: {quizData.attendance}

{quizData.attendQuestion}/ {quizData.totalQuestion}

))}
)) ) : (
No quiz modules available.
)}
{selectedQuiz && (

18/10

Attendance

12 Questions

Attempted

12 Correct

Attempts

{questionList.map((questionData) => (

Q{questionData.questionId}: {questionData.questionText}

Your Answer

{questionData.correctAnswer}

 Correct

{questionData.correctAnswer}

    {/* {questionData.options.map((option, index) => (
  • {option}
  • ))} */}
))}
)}
); }