feat: submissions van een assignment geimplementeerd
This commit is contained in:
parent
7c453467df
commit
fd693dc55f
5 changed files with 58 additions and 4 deletions
|
@ -1,6 +1,6 @@
|
|||
import { Request, Response } from "express";
|
||||
import { getSubmission } from "../services/submissions";
|
||||
import { Language } from "../entities/content/language";
|
||||
import { Language, languageMap } from "../entities/content/language";
|
||||
|
||||
interface SubmissionParams {
|
||||
lohruid: string,
|
||||
|
@ -12,9 +12,17 @@ export async function getSubmissionHandler(
|
|||
res: Response,
|
||||
): Promise<void> {
|
||||
const lohruid = req.params.lohruid;
|
||||
const submissionNumber = req.params.submissionNumber;
|
||||
const submissionNumber = +req.params.submissionNumber;
|
||||
|
||||
const submission = getSubmission(lohruid, Language.Dutch, '1', submissionNumber);
|
||||
if (isNaN(submissionNumber)) {
|
||||
res.status(404).json({ error: 'Submission number is not a number' });
|
||||
return;
|
||||
}
|
||||
|
||||
let lang = languageMap[req.query.language as string] || Language.Dutch;
|
||||
let version = req.query.version as string || '1';
|
||||
|
||||
const submission = getSubmission(lohruid, lang, version, submissionNumber);
|
||||
|
||||
if (!submission) {
|
||||
res.status(404).json({ error: 'Submission not found' });
|
||||
|
|
|
@ -47,6 +47,14 @@ export class SubmissionRepository extends DwengoEntityRepository<Submission> {
|
|||
);
|
||||
}
|
||||
|
||||
public findAllSubmissionsForGroup(
|
||||
group: Group,
|
||||
): Promise<Submission[]> {
|
||||
return this.find(
|
||||
{ onBehalfOf: group },
|
||||
);
|
||||
}
|
||||
|
||||
public deleteSubmissionByLearningObjectAndSubmissionNumber(
|
||||
loId: LearningObjectIdentifier,
|
||||
submissionNumber: number
|
||||
|
|
|
@ -4,3 +4,10 @@ export enum Language {
|
|||
English = 'en',
|
||||
Germany = 'de',
|
||||
}
|
||||
|
||||
export const languageMap: Record<string, Language> = {
|
||||
nl: Language.Dutch,
|
||||
fr: Language.French,
|
||||
en: Language.English,
|
||||
de: Language.Germany,
|
||||
};
|
|
@ -1,6 +1,6 @@
|
|||
import express from 'express';
|
||||
import { getSubmissionHandler } from '../controllers/submissions';
|
||||
const router = express.Router();
|
||||
const router = express.Router({ mergeParams: true });
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
import {
|
||||
getAssignmentRepository,
|
||||
getClassRepository,
|
||||
getGroupRepository,
|
||||
getSubmissionRepository,
|
||||
} from '../data/repositories.js';
|
||||
import {
|
||||
AssignmentDTO,
|
||||
mapToAssignmentDTO,
|
||||
mapToAssignmentDTOId,
|
||||
} from '../interfaces/assignment.js';
|
||||
import { mapToSubmissionDTO, SubmissionDTO } from '../interfaces/submission.js';
|
||||
|
||||
export async function getAllAssignments(
|
||||
classid: string,
|
||||
|
@ -50,3 +53,31 @@ export async function getAssignment(
|
|||
|
||||
return mapToAssignmentDTO(assignment);
|
||||
}
|
||||
|
||||
export async function getAssignmentsSubmissions(
|
||||
classid: string,
|
||||
assignmentNumber: number,
|
||||
): Promise<SubmissionDTO[]> {
|
||||
const classRepository = getClassRepository();
|
||||
const cls = await classRepository.findById(classid);
|
||||
|
||||
if (!cls) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const assignmentRepository = getAssignmentRepository();
|
||||
const assignment = await assignmentRepository.findByClassAndId(cls, assignmentNumber);
|
||||
|
||||
if (!assignment) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const groupRepository = getGroupRepository();
|
||||
const groups = await groupRepository.findAllGroupsForAssignment(assignment);
|
||||
|
||||
const submissionRepository = getSubmissionRepository();
|
||||
const submissions =
|
||||
(await Promise.all(groups.map(group => submissionRepository.findAllSubmissionsForGroup(group)))).flat();
|
||||
|
||||
return submissions.map(mapToSubmissionDTO);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue