240 lines
4.9 KiB
TypeScript
240 lines
4.9 KiB
TypeScript
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<string, Question>,
|
|
choices: Record<string, Choice>,
|
|
) {
|
|
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,
|
|
}),
|
|
);
|
|
}
|