Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions api/eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ export default defineConfig([
{
files: [
'src/certification/configuration/**/*.{js,mjs,ts}',
'src/certification/enrolment/**/*.{js,mjs,ts}',
'src/certification/results/**/*.{js,mjs,ts}',
'src/certification/evaluation/**/*.{js,mjs,ts}',
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import { usecases } from '../../../enrolment/domain/usecases/index.js';
* @returns {Promise<boolean>}
* @throws {TypeError} preconditions failed
*/
export const hasBeenCandidate = async ({ userId }) => {
export async function hasBeenCandidate({ userId }) {
if (!userId) {
throw new TypeError('user identifier is required');
}
return usecases.hasBeenCandidate({ userId });
};
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { getI18nFromRequest } from '../../../shared/infrastructure/i18n/i18n.js';
import { usecases } from '../domain/usecases/index.js';

const getAttendanceSheet = async function (request, h) {
async function getAttendanceSheet(request, h) {
const sessionId = request.params.sessionId;
const { userId } = request.auth.credentials;

Expand All @@ -12,9 +12,8 @@ const getAttendanceSheet = async function (request, h) {
.response(attendanceSheet)
.header('Content-Type', 'application/pdf')
.header('Content-Disposition', `attachment; filename=${fileName}`);
};
}

const attendanceSheetController = {
export const attendanceSheetController = {
getAttendanceSheet,
};
export { attendanceSheetController };
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { identifiersType } from '../../../shared/domain/types/identifiers-type.j
import { authorization } from '../../shared/application/pre-handlers/authorization.js';
import { attendanceSheetController } from './attendance-sheet-controller.js';

const register = async function (server) {
async function register(server) {
server.route([
{
method: 'GET',
Expand All @@ -30,6 +30,6 @@ const register = async function (server) {
},
},
]);
};
}

export const attendanceSheetRoute = { name: 'certification/enrolment/attendance-sheet-api', register };
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { usecases } from '../domain/usecases/index.js';
import { candidateSerializer } from '../infrastructure/serializers/candidate-serializer.js';
import { timelineSerializer } from '../infrastructure/serializers/timeline-serializer.js';

const addCandidate = async function (request, h, dependencies = { candidateSerializer }) {
async function addCandidate(request, h, dependencies = { candidateSerializer }) {
const sessionId = request.params.sessionId;
const candidate = await dependencies.candidateSerializer.deserialize(request.payload);
const candidateId = await usecases.addCandidateToSession({
Expand All @@ -14,29 +14,29 @@ const addCandidate = async function (request, h, dependencies = { candidateSeria

const serializedId = candidateSerializer.serializeId(candidateId);
return h.response(serializedId).created();
};
}

const getEnrolledCandidates = async function (request, h, dependencies = { candidateSerializer }) {
async function getEnrolledCandidates(request, h, dependencies = { candidateSerializer }) {
const sessionId = request.params.sessionId;
const enrolledCandidates = await usecases.getEnrolledCandidatesInSession({ sessionId });
return dependencies.candidateSerializer.serialize(enrolledCandidates);
};
}

const getSessionCandidates = async function (request, h, dependencies = { candidateSerializer }) {
async function getSessionCandidates(request, h, dependencies = { candidateSerializer }) {
const sessionId = request.params.sessionId;
const enrolledCandidates = await usecases.getEnrolledCandidatesInSession({ sessionId });
return dependencies.candidateSerializer.serializeForSession(enrolledCandidates);
};
}

const deleteCandidate = async function (request, h) {
async function deleteCandidate(request, h) {
const candidateId = request.params.certificationCandidateId;

await usecases.deleteUnlinkedCertificationCandidate({ candidateId });

return h.response().code(204);
};
}

const updateEnrolledCandidate = async function (request, h, dependencies = { candidateSerializer }) {
async function updateEnrolledCandidate(request, h, dependencies = { candidateSerializer }) {
const candidateId = request.params.certificationCandidateId;
const enrolledCandidateData = request.payload.data.attributes;
const editedCandidate = dependencies.candidateSerializer.deserializeForEdition({
Expand All @@ -49,39 +49,39 @@ const updateEnrolledCandidate = async function (request, h, dependencies = { can
});

return h.response().code(204);
};
}

const validateCertificationInstructions = async function (request, h, dependencies = { candidateSerializer }) {
async function validateCertificationInstructions(request, h, dependencies = { candidateSerializer }) {
const certificationCandidateId = request.params.certificationCandidateId;

const candidate = await usecases.candidateHasSeenCertificationInstructions({
certificationCandidateId,
});

return dependencies.candidateSerializer.serializeForParticipation(candidate);
};
}

const getCandidate = async function (request, h, dependencies = { candidateSerializer }) {
async function getCandidate(request, h, dependencies = { candidateSerializer }) {
const certificationCandidateId = request.params.certificationCandidateId;

const candidate = await usecases.getCandidate({
certificationCandidateId,
});

return dependencies.candidateSerializer.serializeForParticipation(candidate);
};
}

const getTimeline = async function (request, h, dependencies = { timelineSerializer }) {
async function getTimeline(request, h, dependencies = { timelineSerializer }) {
const certificationCandidateId = request.params.certificationCandidateId;

const timeline = await usecases.getCandidateTimeline({
certificationCandidateId,
});

return dependencies.timelineSerializer.serialize(timeline);
};
}

const certificationCandidateController = {
export const certificationCandidateController = {
addCandidate,
getEnrolledCandidates,
getSessionCandidates,
Expand All @@ -91,4 +91,3 @@ const certificationCandidateController = {
validateCertificationInstructions,
updateEnrolledCandidate,
};
export { certificationCandidateController };
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { enrolmentSecurityPreHandlers } from './securiy-pre-handlers.js';

const Joi = BaseJoi.extend(JoiDate);

const register = async function (server) {
async function register(server) {
server.route([
{
method: 'POST',
Expand Down Expand Up @@ -258,6 +258,6 @@ const register = async function (server) {
},
},
]);
};
}

export const certificationCandidateRoute = { name: 'certification/enrolment/certification-candidate-api', register };
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { usecases } from '../domain/usecases/index.js';
import { divisionSerializer } from '../infrastructure/serializers/division-serializer.js';
import { studentCertificationSerializer } from '../infrastructure/serializers/student-certification-serializer.js';

const getStudents = async function (request) {
async function getStudents(request) {
const certificationCenterId = request.params.certificationCenterId;
const sessionId = request.params.sessionId;

Expand All @@ -18,17 +18,15 @@ const getStudents = async function (request) {
filter,
});
return studentCertificationSerializer.serialize(data, pagination);
};
}

const getDivisions = async function (request) {
async function getDivisions(request) {
const certificationCenterId = request.params.certificationCenterId;
const divisions = await usecases.findDivisionsByCertificationCenter({
certificationCenterId,
});

return divisionSerializer.serialize(divisions);
};
}

const certificationCenterController = { getStudents, getDivisions };

export { certificationCenterController };
export const certificationCenterController = { getStudents, getDivisions };
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { securityPreHandlers } from '../../../shared/application/security-pre-ha
import { identifiersType } from '../../../shared/domain/types/identifiers-type.js';
import { certificationCenterController } from './certification-center-controller.js';

const register = async function (server) {
async function register(server) {
server.route([
{
method: 'GET',
Expand Down Expand Up @@ -40,7 +40,7 @@ const register = async function (server) {
},
},
]);
};
}

export const certificationCenterRoute = {
name: 'certification/enrolment/certification-centers-session-students-api',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { securityPreHandlers } from '../../../shared/application/security-pre-ha
import { identifiersType } from '../../../shared/domain/types/identifiers-type.js';
import { certificationCenterController } from './certification-center-controller.js';

const register = async function (server) {
async function register(server) {
server.route([
{
method: 'GET',
Expand All @@ -30,7 +30,7 @@ const register = async function (server) {
},
},
]);
};
}

export const certificationCentersGetDivisionsRoute = {
name: 'certification/enrolment/certification-centers-get-divisions-api',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@ import { usecases } from '../domain/usecases/index.js';
import { fillCandidatesImportSheet } from '../infrastructure/candidates-import/fill-candidates-import-sheet.js';
import { candidateSerializer } from '../infrastructure/serializers/candidate-serializer.js';

const enrolStudentsToSession = async function (request, h, dependencies = { candidateSerializer }) {
async function enrolStudentsToSession(request, h, dependencies = { candidateSerializer }) {
const sessionId = request.params.sessionId;
const studentIds = request.deserializedPayload.organizationLearnerIds;

await usecases.enrolStudentsToSession({ sessionId, studentIds });
const enrolledCandidates = await usecases.getEnrolledCandidatesInSession({ sessionId });
const enrolledCandidatesSerialized = dependencies.candidateSerializer.serialize(enrolledCandidates);
return h.response(enrolledCandidatesSerialized).created();
};
}

const getCandidatesImportSheet = async function (request, h, dependencies = { fillCandidatesImportSheet }) {
async function getCandidatesImportSheet(request, h, dependencies = { fillCandidatesImportSheet }) {
const i18n = getI18nFromRequest(request);

const sessionId = request.params.sessionId;
Expand All @@ -37,9 +37,9 @@ const getCandidatesImportSheet = async function (request, h, dependencies = { fi
.response(candidateImportSheet)
.header('Content-Type', 'application/vnd.oasis.opendocument.spreadsheet')
.header('Content-Disposition', `attachment; filename=${filename + sessionId}.ods`);
};
}

const importCertificationCandidatesFromCandidatesImportSheet = async function (request) {
async function importCertificationCandidatesFromCandidatesImportSheet(request) {
const i18n = getI18nFromRequest(request);

const sessionId = request.params.sessionId;
Expand All @@ -52,12 +52,10 @@ const importCertificationCandidatesFromCandidatesImportSheet = async function (r
});

return null;
};
}

const enrolmentController = {
export const enrolmentController = {
enrolStudentsToSession,
getCandidatesImportSheet,
importCertificationCandidatesFromCandidatesImportSheet,
};

export { enrolmentController };
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { identifiersType } from '../../../shared/domain/types/identifiers-type.j
import { authorization } from '../../shared/application/pre-handlers/authorization.js';
import { enrolmentController } from './enrolment-controller.js';

const register = async function (server) {
async function register(server) {
server.route([
{
method: 'PUT',
Expand Down Expand Up @@ -81,6 +81,6 @@ const register = async function (server) {
},
},
]);
};
}

export const enrolmentRoute = { name: 'certification/enrolment/enrolment-api', register };
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { usecases } from '../domain/usecases/index.js';
import { sessionsCsvSerializer } from '../infrastructure/serializers/csv/sessions-csv-serializer.js';
import { getCsvHeaders } from '../infrastructure/utils/sessions-import.js';

const createSessions = async function (request, h) {
async function createSessions(request, h) {
const authenticatedUserId = request.auth.credentials.userId;

const { cachedValidatedSessionsKey } = request.payload.data.attributes;
Expand All @@ -14,13 +14,9 @@ const createSessions = async function (request, h) {
userId: authenticatedUserId,
});
return h.response().code(201);
};
}

const validateSessions = async function (
request,
h,
dependencies = { csvHelpers, csvSerializer: sessionsCsvSerializer },
) {
async function validateSessions(request, h, dependencies = { csvHelpers, csvSerializer: sessionsCsvSerializer }) {
const i18n = getI18nFromRequest(request);

const certificationCenterId = request.params.certificationCenterId;
Expand All @@ -42,9 +38,9 @@ const validateSessions = async function (
i18n,
});
return h.response(sessionMassImportReport).code(200);
};
}

const getTemplate = async function (request, h) {
async function getTemplate(request, h) {
const { habilitationLabels, shouldDisplayBillingModeColumns } = await usecases.getMassImportTemplateInformation({
centerId: request.params.certificationCenterId,
});
Expand All @@ -57,12 +53,10 @@ const getTemplate = async function (request, h) {
.header('Content-Type', 'text/csv; charset=utf-8')
.header('content-disposition', 'filename=import-sessions')
.code(200);
};
}

const sessionMassImportController = {
export const sessionMassImportController = {
createSessions,
validateSessions,
getTemplate,
};

export { sessionMassImportController };
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { securityPreHandlers } from '../../../shared/application/security-pre-ha
import { identifiersType } from '../../../shared/domain/types/identifiers-type.js';
import { sessionMassImportController } from './session-mass-import-controller.js';

const register = async function (server) {
async function register(server) {
server.route([
{
method: 'POST',
Expand Down Expand Up @@ -94,6 +94,6 @@ const register = async function (server) {
},
},
]);
};
}

export const sessionMassImportRoute = { name: 'certification/enrolment/session-mass-import-api', register };
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { identifiersType } from '../../../shared/domain/types/identifiers-type.j
import { authorization } from '../../shared/application/pre-handlers/authorization.js';
import { sessionController } from './session-controller.js';

const register = async function (server) {
async function register(server) {
server.route([
{
method: 'POST',
Expand Down Expand Up @@ -166,6 +166,6 @@ const register = async function (server) {
},
},
]);
};
}

export const sessionRoute = { name: 'certification/enrolment/certification-enrollment-api', register };
Loading
Loading