import { Choice } from '@/modules/questions/entities/choice.entity'; import { QuestionTransition } from '@/modules/questions/entities/question-transition.entity'; import { Question } from '@/modules/questions/entities/question.entity'; import { QuestionTransitionType } from '@/modules/questions/enums/question-transition-type.enum'; import { Test } from '@/modules/tests/entities/test.entity'; import { EntityManager } from 'typeorm'; export async function seedTransitions( manager: EntityManager, savedTest: Test, questions: Record, choices: Record, ) { const transitionRepository = manager.getRepository(QuestionTransition); const { q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11, q12 } = questions; const { q8Yes, q10Yes } = choices; /* * --------------------------------------------------------- * QUESTION TRANSITIONS * --------------------------------------------------------- */ /* * START -> Q1 */ await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: null, toQuestion: q1, type: QuestionTransitionType.START, condition: null, }), ); /* * Q1 -> Q2 */ await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: q1, toQuestion: q2, type: QuestionTransitionType.DEFAULT, condition: null, }), ); /* * Q2 -> Q3 */ await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: q2, toQuestion: q3, type: QuestionTransitionType.DEFAULT, condition: null, }), ); /* * Q3 -> Q4 */ await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: q3, toQuestion: q4, type: QuestionTransitionType.DEFAULT, condition: null, }), ); /* * Q4 -> Q5 */ await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: q4, toQuestion: q5, type: QuestionTransitionType.DEFAULT, condition: null, }), ); /* * Q5 -> Q6 */ await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: q5, toQuestion: q6, type: QuestionTransitionType.DEFAULT, condition: null, }), ); /* * Q6 -> Q7 */ await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: q6, toQuestion: q7, type: QuestionTransitionType.DEFAULT, condition: null, }), ); /* * Q7 -> Q8 */ await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: q7, toQuestion: q8, type: QuestionTransitionType.DEFAULT, condition: null, }), ); /* * --------------------------------------------------------- * Q8 BRANCH * --------------------------------------------------------- * * YES -> Q9 * NO -> Q10 */ await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: q8, toQuestion: q9, type: QuestionTransitionType.CHOICE, condition: { choiceId: q8Yes.id, }, }), ); await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: q8, toQuestion: q10, type: QuestionTransitionType.DEFAULT, condition: null, }), ); /* * Q9 -> Q10 */ await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: q9, toQuestion: q10, type: QuestionTransitionType.DEFAULT, condition: null, }), ); /* * --------------------------------------------------------- * Q10 BRANCH * --------------------------------------------------------- * * YES -> Q11 * NO -> Q12 */ await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: q10, toQuestion: q11, type: QuestionTransitionType.CHOICE, condition: { choiceId: q10Yes.id, }, }), ); await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: q10, toQuestion: q12, type: QuestionTransitionType.DEFAULT, condition: null, }), ); /* * Q11 -> Q12 */ await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: q11, toQuestion: q12, type: QuestionTransitionType.DEFAULT, condition: null, }), ); /* * Q12 -> END */ await transitionRepository.save( transitionRepository.create({ test: savedTest, fromQuestion: q12, toQuestion: null, type: QuestionTransitionType.END, condition: null, }), ); }