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

ExerciseRoutes => Create: test if the max exercise per assignment is reached...

ExerciseRoutes => Create: test if the max exercise per assignment is reached for at least one member
parent 7ec55002
No related branches found
No related tags found
No related merge requests found
Pipeline #29076 passed
......@@ -30,6 +30,7 @@ import ExerciseResultsFile from '../shared/types/Dojo/ExerciseResultsFile'
import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode';
import GlobalHelper from '../helpers/GlobalHelper';
import { IFileDirStat } from '../shared/helpers/recursiveFilesStats/RecursiveFilesStats';
import ExerciseManager from '../managers/ExerciseManager';
class ExerciseRoutes implements RoutesManager {
......@@ -90,6 +91,21 @@ class ExerciseRoutes implements RoutesManager {
const assignment: Assignment = req.boundParams.assignment!;
const exercises: Array<Exercise> | undefined = await ExerciseManager.getFromAssignment(assignment.name, { members: true });
const reachedLimitUsers: Array<GitlabUser> = [];
if ( exercises ) {
for ( const member of params.members ) {
const exerciseCount: number = exercises.filter(exercise => exercise.members.findIndex(exerciseMember => exerciseMember.id === member.id) !== -1).length;
if ( exerciseCount >= Config.exercise.maxPerAssignment ) {
reachedLimitUsers.push(member);
}
}
}
if ( reachedLimitUsers.length > 0 ) {
return req.session.sendResponse(res, StatusCodes.INSUFFICIENT_SPACE_ON_RESOURCE, reachedLimitUsers, 'Max exercise per assignment reached', DojoStatusCode.MAX_EXERCISE_PER_ASSIGNMENT_REACHED);
}
const exerciseId: string = uuidv4();
const secret: string = uuidv4();
let repository!: GitlabRepository;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment