import { Exercise } from "@/interfaces/exam"; import ExerciseItem, { isExerciseItem } from "./types"; import MultipleChoice from "../../Exercises/MultipleChoice"; import ExerciseLabel from "../../Shared/ExerciseLabel"; import writeBlanks from "./writeBlanks"; import TrueFalse from "../../Exercises/TrueFalse"; import fillBlanks from "./fillBlanks"; import MatchSentences from "../../Exercises/MatchSentences"; import Writing from "../../Exercises/Writing"; import Speaking2 from "../../Exercises/Speaking/Speaking2"; import Speaking1 from "../../Exercises/Speaking/Speaking1"; import InteractiveSpeaking from "../../Exercises/Speaking/InteractiveSpeaking"; const getExerciseItems = (exercises: Exercise[], sectionId: number): ExerciseItem[] => { const items: ExerciseItem[] = exercises.map((exercise, index) => { let firstQuestionId, lastQuestionId; switch (exercise.type) { case "multipleChoice": firstQuestionId = exercise.questions[0].id; lastQuestionId = exercise.questions[exercise.questions.length - 1].id; return { id: index.toString(), sectionId, label: ( ), content: }; case "trueFalse": firstQuestionId = exercise.questions[0].id lastQuestionId = exercise.questions[exercise.questions.length - 1].id; return { id: index.toString(), sectionId, label: ( ), content: }; case "matchSentences": firstQuestionId = exercise.sentences[0].id; lastQuestionId = exercise.sentences[exercise.sentences.length - 1].id; return { id: index.toString(), sectionId, label: ( ), content: }; case "fillBlanks": return fillBlanks(exercise, index, sectionId); case "writeBlanks": return writeBlanks(exercise, index, sectionId); case "writing": return { id: index.toString(), sectionId, label: ( ), content: }; case "speaking": return { exerciseId: exercise.id, id: index.toString(), sectionId, label: ( ), content: }; case "interactiveSpeaking": const content = exercise.sectionId === 1 ? : return { exerciseId: exercise.id, id: index.toString(), sectionId, label: ( ), content: content }; default: return {} as unknown as ExerciseItem; } }).filter(isExerciseItem); return items; }; export default getExerciseItems;