feat: getallsubmissions endpoint toegevoegd

This commit is contained in:
Adriaan Jacquet 2025-03-29 21:10:57 +01:00
parent c9739a1420
commit f0eb4822d9
4 changed files with 36 additions and 20 deletions

View file

@ -1,14 +1,9 @@
import { Request, Response } from 'express';
import { createSubmission, deleteSubmission, getSubmission } from '../services/submissions.js';
import { createSubmission, deleteSubmission, getAllSubmissions, getSubmission } from '../services/submissions.js';
import { Language, languageMap } from '../entities/content/language.js';
import { SubmissionDTO } from '../interfaces/submission';
interface SubmissionParams {
hruid: string;
id: number;
}
export async function getSubmissionHandler(req: Request<SubmissionParams>, res: Response): Promise<void> {
export async function getSubmissionHandler(req: Request, res: Response): Promise<void> {
const lohruid = req.params.hruid;
const submissionNumber = +req.params.id;
@ -17,6 +12,7 @@ export async function getSubmissionHandler(req: Request<SubmissionParams>, res:
return;
}
const lang = languageMap[req.query.language as string] || Language.Dutch;
const version = (req.query.version || 1) as number;
@ -30,6 +26,17 @@ export async function getSubmissionHandler(req: Request<SubmissionParams>, res:
res.json(submission);
}
export async function getAllSubmissionsHandler(req: Request, res: Response): Promise<void> {
const lohruid = req.params.hruid;
const lang = languageMap[req.query.language as string] || Language.Dutch;
const version = (req.query.version || 1) as number;
const submissions = await getAllSubmissions(lohruid, lang, version);
res.json({ submissions: submissions });
}
export async function createSubmissionHandler(req: Request, res: Response) {
const submissionDTO = req.body as SubmissionDTO;

View file

@ -14,6 +14,14 @@ export class SubmissionRepository extends DwengoEntityRepository<Submission> {
});
}
public findSubmissionsByLearningObject(loId: LearningObjectIdentifier): Promise<Submission[]> {
return this.find({
learningObjectHruid: loId.hruid,
learningObjectLanguage: loId.language,
learningObjectVersion: loId.version,
})
}
public findMostRecentSubmissionForStudent(loId: LearningObjectIdentifier, submitter: Student): Promise<Submission | null> {
return this.findOne(
{

View file

@ -21,6 +21,19 @@ export async function getSubmission(
return mapToSubmissionDTO(submission);
}
export async function getAllSubmissions(
lohruid: string,
language: Language,
version: number,
): Promise<SubmissionDTO[]> {
const loId = new LearningObjectIdentifier(lohruid, language, version);
const submissionRepository = getSubmissionRepository();
const submissions = await submissionRepository.findSubmissionsByLearningObject(loId);
return submissions.map(mapToSubmissionDTO);
}
export async function createSubmission(submissionDTO: SubmissionDTO) {
const submissionRepository = getSubmissionRepository();
const submission = mapToSubmission(submissionDTO);