47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
import { Question } from '../entities/questions/question.entity.js';
|
|
import { mapToStudentDTO } from './student.js';
|
|
import { QuestionDTO, QuestionId } from '@dwengo-1/common/interfaces/question';
|
|
import { LearningObjectIdentifierDTO } from '@dwengo-1/common/interfaces/learning-content';
|
|
import { LearningObjectIdentifier } from '../entities/content/learning-object-identifier.js';
|
|
import { mapToGroupDTOId } from './group.js';
|
|
|
|
function getLearningObjectIdentifier(question: Question): LearningObjectIdentifierDTO {
|
|
return {
|
|
hruid: question.learningObjectHruid,
|
|
language: question.learningObjectLanguage,
|
|
version: question.learningObjectVersion,
|
|
};
|
|
}
|
|
|
|
export function mapToLearningObjectID(loID: LearningObjectIdentifierDTO): LearningObjectIdentifier {
|
|
return {
|
|
hruid: loID.hruid,
|
|
language: loID.language,
|
|
version: loID.version ?? 1,
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Convert a Question entity to a DTO format.
|
|
*/
|
|
export function mapToQuestionDTO(question: Question): QuestionDTO {
|
|
const learningObjectIdentifier = getLearningObjectIdentifier(question);
|
|
|
|
return {
|
|
learningObjectIdentifier,
|
|
sequenceNumber: question.sequenceNumber!,
|
|
author: mapToStudentDTO(question.author),
|
|
inGroup: mapToGroupDTOId(question.inGroup, question.inGroup.assignment?.within),
|
|
timestamp: question.timestamp.toISOString(),
|
|
content: question.content,
|
|
};
|
|
}
|
|
|
|
export function mapToQuestionDTOId(question: Question): QuestionId {
|
|
const learningObjectIdentifier = getLearningObjectIdentifier(question);
|
|
|
|
return {
|
|
learningObjectIdentifier,
|
|
sequenceNumber: question.sequenceNumber!,
|
|
};
|
|
}
|