Skip to content
Snippets Groups Projects
Commit 3598cdeb authored by michael.minelli's avatar michael.minelli
Browse files

AssignmentRoute => Get assignment: add possibility to get his exercises related

parent 3e6e6ff2
Branches
Tags
No related merge requests found
...@@ -12,7 +12,7 @@ import logger from '../shared/logging/WinstonLogger.js'; ...@@ -12,7 +12,7 @@ import logger from '../shared/logging/WinstonLogger.js';
import DojoValidators from '../helpers/DojoValidators.js'; import DojoValidators from '../helpers/DojoValidators.js';
import { Prisma } from '@prisma/client'; import { Prisma } from '@prisma/client';
import db from '../helpers/DatabaseHelper.js'; import db from '../helpers/DatabaseHelper.js';
import { Assignment } from '../types/DatabaseTypes.js'; import { Assignment, Exercise } from '../types/DatabaseTypes.js';
import AssignmentManager from '../managers/AssignmentManager.js'; import AssignmentManager from '../managers/AssignmentManager.js';
import fs from 'fs'; import fs from 'fs';
import path from 'path'; import path from 'path';
...@@ -66,17 +66,45 @@ class AssignmentRoutes implements RoutesManager { ...@@ -66,17 +66,45 @@ class AssignmentRoutes implements RoutesManager {
private async getAssignment(req: express.Request, res: express.Response) { private async getAssignment(req: express.Request, res: express.Response) {
const assignment: Partial<Assignment> | undefined = req.boundParams.assignment; const assignment: Partial<Assignment> | undefined = req.boundParams.assignment;
if ( assignment && !assignment.published && !await AssignmentManager.isUserAllowedToAccessAssignment(assignment as Assignment, req.session.profile) ) { if ( assignment ) {
delete assignment.gitlabId; if ( !assignment.published && !await AssignmentManager.isUserAllowedToAccessAssignment(assignment as Assignment, req.session.profile) ) {
delete assignment.gitlabLink; delete assignment.gitlabId;
delete assignment.gitlabCreationInfo; delete assignment.gitlabLink;
delete assignment.gitlabLastInfo; delete assignment.gitlabCreationInfo;
delete assignment.gitlabLastInfoDate; delete assignment.gitlabLastInfo;
delete assignment.staff; delete assignment.gitlabLastInfoDate;
delete assignment.exercises; delete assignment.staff;
} delete assignment.exercises;
}
const getExercises = req.query.getMyExercises;
let exercises: Array<Omit<Exercise, 'assignment'>> = [];
if ( getExercises ) {
if ( !assignment ) {
return res.status(StatusCodes.NOT_FOUND).send();
}
return assignment ? req.session.sendResponse(res, StatusCodes.OK, DojoModelsHelper.getFullSerializableObject(assignment)) : res.status(StatusCodes.NOT_FOUND).send(); exercises = await db.exercise.findMany({
where : {
assignmentName: assignment.name,
members : {
some: {
id: req.session.profile.id
}
}
},
include: {
assignment: false,
members : true,
results : true
}
});
}
return req.session.sendResponse(res, StatusCodes.OK, DojoModelsHelper.getFullSerializableObject(Object.assign(assignment, { myExercises: exercises })));
} else {
return res.status(StatusCodes.NOT_FOUND).send();
}
} }
private async createAssignment(req: express.Request, res: express.Response) { private async createAssignment(req: express.Request, res: express.Response) {
...@@ -204,7 +232,7 @@ class AssignmentRoutes implements RoutesManager { ...@@ -204,7 +232,7 @@ class AssignmentRoutes implements RoutesManager {
} else if ( isUpdate && !req.boundParams.exercise?.isCorrection ) { } else if ( isUpdate && !req.boundParams.exercise?.isCorrection ) {
return req.session.sendResponse(res, StatusCodes.BAD_REQUEST, undefined, 'This exercise is not a correction', DojoStatusCode.EXERCISE_CORRECTION_NOT_EXIST); return req.session.sendResponse(res, StatusCodes.BAD_REQUEST, undefined, 'This exercise is not a correction', DojoStatusCode.EXERCISE_CORRECTION_NOT_EXIST);
} }
const lastCommit = await GitlabManager.getRepositoryLastCommit(req.boundParams.exercise!.gitlabId); const lastCommit = await GitlabManager.getRepositoryLastCommit(req.boundParams.exercise!.gitlabId);
if ( lastCommit ) { if ( lastCommit ) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment