Skip to content

Commit

Permalink
🚚 chore(api): move student certification to src
Browse files Browse the repository at this point in the history
  • Loading branch information
yaf committed Dec 27, 2024
1 parent bcfb00c commit 73b570a
Show file tree
Hide file tree
Showing 13 changed files with 375 additions and 842 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,6 @@ import * as divisionSerializer from '../../../src/prescription/campaign/infrastr
import * as certificationCenterMembershipSerializer from '../../../src/shared/infrastructure/serializers/jsonapi/certification-center-membership.serializer.js';
import { usecases as teamUsecases } from '../../../src/team/domain/usecases/index.js';
import { usecases } from '../../domain/usecases/index.js';
import * as studentCertificationSerializer from '../../infrastructure/serializers/jsonapi/student-certification-serializer.js';

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

const { filter, page } = request.query;
if (filter.divisions && !Array.isArray(filter.divisions)) {
filter.divisions = [filter.divisions];
}

const { data, pagination } = await usecases.findStudentsForEnrolment({
certificationCenterId,
sessionId,
page,
filter,
});
return studentCertificationSerializer.serialize(data, pagination);
};

const getDivisions = async function (request) {
const certificationCenterId = request.params.certificationCenterId;
Expand Down Expand Up @@ -77,7 +58,6 @@ const certificationCenterController = {
createCertificationCenterMembershipByEmail,
findCertificationCenterMembershipsByCertificationCenter,
getDivisions,
getStudents,
updateReferer,
};

Expand Down
33 changes: 0 additions & 33 deletions api/lib/application/certification-centers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,39 +93,6 @@ const register = async function (server) {
server.route([
...adminRoutes,
...certifRoutes,
{
method: 'GET',
path: '/api/certification-centers/{certificationCenterId}/sessions/{sessionId}/students',
config: {
validate: {
params: Joi.object({
certificationCenterId: identifiersType.certificationCenterId,
sessionId: identifiersType.sessionId,
}),
query: Joi.object({
filter: Joi.object({
divisions: Joi.array().items(Joi.string()),
}).default({}),
page: {
number: Joi.number().integer(),
size: Joi.number().integer(),
},
}),
},
pre: [
{
method: securityPreHandlers.checkUserIsMemberOfCertificationCenter,
assign: 'isMemberOfCertificationCenter',
},
],
handler: certificationCenterController.getStudents,
notes: [
'- **Cette route est restreinte aux utilisateurs authentifiés**\n' +
"- Récupération d'une liste d'élèves SCO à partir d'un identifiant de centre de certification",
],
tags: ['api', 'certification-center', 'students', 'session'],
},
},
{
method: 'GET',
path: '/api/certification-centers/{certificationCenterId}/divisions',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { usecases } from '../domain/usecases/index.js';
import * as studentCertificationSerializer from '../infrastructure/serializers/student-certification-serializer.js';

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

const { filter, page } = request.query;
if (filter.divisions && !Array.isArray(filter.divisions)) {
filter.divisions = [filter.divisions];
}

const { data, pagination } = await usecases.findStudentsForEnrolment({
certificationCenterId,
sessionId,
page,
filter,
});
return studentCertificationSerializer.serialize(data, pagination);
};

const certificationCenterController = { getStudents };

export { certificationCenterController };
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import Joi from 'joi';

import { securityPreHandlers } from '../../../shared/application/security-pre-handlers.js';
import { identifiersType } from '../../../shared/domain/types/identifiers-type.js';
import { certificationCenterController } from './certification-center-controller.js';

const register = async function (server) {
server.route([
{
method: 'GET',
path: '/api/certification-centers/{certificationCenterId}/sessions/{sessionId}/students',
config: {
validate: {
params: Joi.object({
certificationCenterId: identifiersType.certificationCenterId,
sessionId: identifiersType.sessionId,
}),
query: Joi.object({
filter: Joi.object({
divisions: Joi.array().items(Joi.string()),
}).default({}),
page: {
number: Joi.number().integer(),
size: Joi.number().integer(),
},
}),
},
pre: [
{
method: securityPreHandlers.checkUserIsMemberOfCertificationCenter,
assign: 'isMemberOfCertificationCenter',
},
],
handler: certificationCenterController.getStudents,
notes: [
'- **Cette route est restreinte aux utilisateurs authentifiés**\n' +
"- Récupération d'une liste d'élèves SCO à partir d'un identifiant de centre de certification",
],
tags: ['api', 'certification-center', 'students', 'session'],
},
},
]);
};

const name = 'certification-centers-api';
export { name, register };
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { NotFoundError } from '../../../src/shared/domain/errors.js';
import { StudentForEnrolment } from '../../../src/shared/domain/read-models/StudentForEnrolment.js';
import { NotFoundError } from '../../../../shared/domain/errors.js';
import { StudentForEnrolment } from '../../../../shared/domain/read-models/StudentForEnrolment.js';

const findStudentsForEnrolment = async function ({
certificationCenterId,
Expand Down
Loading

0 comments on commit 73b570a

Please sign in to comment.