feat: question route als subroute van learning objects

This commit is contained in:
Gabriellvl 2025-03-13 15:02:11 +01:00
parent 3e2c73320b
commit 3dd1edc95d
6 changed files with 310 additions and 49 deletions

View file

@ -1,48 +1,56 @@
import { Question } from '../entities/questions/question.entity.js';
import {mapToUserDTO, UserDTO} from "./user.js";
import {LearningObjectIdentifier} from "../entities/content/learning-object-identifier.js";
import {Teacher} from "../entities/users/teacher.entity";
export interface QuestionDTO {
learningObjectHruid: string;
learningObjectLanguage: string;
learningObjectVersion: string;
sequenceNumber: number;
authorUsername: string;
timestamp: string;
learningObjectIdentifier: LearningObjectIdentifier;
sequenceNumber?: number;
author: UserDTO;
timestamp?: string;
content: string;
endpoints?: {
classes: string;
questions: string;
invitations: string;
groups: string;
};
}
/**
* Convert a Question entity to a DTO format.
*/
export function mapToQuestionDTO(question: Question): QuestionDTO {
const learningObjectIdentifier = {
hruid: question.learningObjectHruid,
language: question.learningObjectLanguage,
version: question.learningObjectVersion
}
return {
learningObjectHruid: question.learningObjectHruid,
learningObjectLanguage: question.learningObjectLanguage,
learningObjectVersion: question.learningObjectVersion,
learningObjectIdentifier,
sequenceNumber: question.sequenceNumber,
authorUsername: question.author.username,
author: question.author,
timestamp: question.timestamp.toISOString(),
content: question.content,
};
}
export interface QuestionId {
learningObjectHruid: string;
learningObjectLanguage: string;
learningObjectVersion: string;
learningObjectIdentifier: LearningObjectIdentifier;
sequenceNumber: number;
}
export function mapToQuestionId(question: QuestionDTO): QuestionId {
return {
learningObjectHruid: question.learningObjectHruid,
learningObjectLanguage: question.learningObjectLanguage,
learningObjectVersion: question.learningObjectVersion,
learningObjectIdentifier: question.learningObjectIdentifier,
sequenceNumber: question.sequenceNumber,
};
}
export function mapToQuestion(questionDTO: QuestionDTO): Question {
const question = new Question();
question.author = mapToUserDTO<Teacher>(questionDTO.author);
question.learningObjectHruid = questionDTO.learningObjectIdentifier.hruid;
question.learningObjectLanguage = questionDTO.learningObjectIdentifier.language;
question.learningObjectVersion = questionDTO.learningObjectIdentifier.version;
question.content = questionDTO.content;
question.sequenceNumber = questionDTO.sequenceNumber;
question.timestamp = questionDTO.timestamp;
return question;
}