@programisto/edrm-exams 0.3.7 → 0.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/README.md +1 -1
  2. package/dist/bin/www.js +1 -1
  3. package/dist/modules/edrm-exams/listeners/correct.listener.d.ts +1 -1
  4. package/dist/modules/edrm-exams/listeners/correct.listener.js +1 -1
  5. package/dist/modules/edrm-exams/models/candidate.model.d.ts +1 -1
  6. package/dist/modules/edrm-exams/models/candidate.model.js +1 -1
  7. package/dist/modules/edrm-exams/models/company.model.d.ts +1 -1
  8. package/dist/modules/edrm-exams/models/company.model.js +1 -1
  9. package/dist/modules/edrm-exams/models/contact.model.d.ts +1 -1
  10. package/dist/modules/edrm-exams/models/contact.model.js +1 -1
  11. package/dist/modules/edrm-exams/models/test-category.models.d.ts +1 -1
  12. package/dist/modules/edrm-exams/models/test-category.models.js +1 -1
  13. package/dist/modules/edrm-exams/models/test-job.model.d.ts +1 -1
  14. package/dist/modules/edrm-exams/models/test-job.model.js +1 -1
  15. package/dist/modules/edrm-exams/models/test-question.model.d.ts +1 -1
  16. package/dist/modules/edrm-exams/models/test-question.model.js +1 -1
  17. package/dist/modules/edrm-exams/models/test-result.model.d.ts +1 -1
  18. package/dist/modules/edrm-exams/models/test-result.model.js +1 -1
  19. package/dist/modules/edrm-exams/models/test.model.d.ts +1 -1
  20. package/dist/modules/edrm-exams/models/test.model.js +1 -1
  21. package/dist/modules/edrm-exams/models/user.model.d.ts +1 -1
  22. package/dist/modules/edrm-exams/models/user.model.js +1 -1
  23. package/dist/modules/edrm-exams/routes/company.router.d.ts +1 -1
  24. package/dist/modules/edrm-exams/routes/company.router.js +136 -7
  25. package/dist/modules/edrm-exams/routes/exams-candidate.router.d.ts +1 -1
  26. package/dist/modules/edrm-exams/routes/exams-candidate.router.js +227 -8
  27. package/dist/modules/edrm-exams/routes/exams.router.d.ts +1 -1
  28. package/dist/modules/edrm-exams/routes/exams.router.js +1022 -40
  29. package/dist/modules/edrm-exams/routes/result.router.d.ts +1 -1
  30. package/dist/modules/edrm-exams/routes/result.router.js +153 -6
  31. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { EnduranceRouter } from '@programisto/endurance-core';
1
+ import { EnduranceRouter } from '@programisto/endurance';
2
2
  declare class ResultRouter extends EnduranceRouter {
3
3
  constructor();
4
4
  setupRoutes(): void;
@@ -1,4 +1,4 @@
1
- import { EnduranceRouter, EnduranceAuthMiddleware, enduranceEmitter, enduranceEventTypes } from '@programisto/endurance-core';
1
+ import { EnduranceRouter, EnduranceAuthMiddleware, enduranceEmitter, enduranceEventTypes } from '@programisto/endurance';
2
2
  import CandidateModel from '../models/candidate.model.js';
3
3
  import TestResult, { TestState } from '../models/test-result.model.js';
4
4
  import Test from '../models/test.model.js';
@@ -30,7 +30,52 @@ class ResultRouter extends EnduranceRouter {
30
30
  requireAuth: false,
31
31
  permissions: []
32
32
  };
33
- // Lister tous les résultats de tests d'un candidat
33
+ /**
34
+ * @swagger
35
+ * /results/{candidateId}:
36
+ * get:
37
+ * summary: Lister les résultats d'un candidat
38
+ * description: Liste paginée des résultats d'un candidat avec filtrage par état et tri.
39
+ * tags: [Résultats]
40
+ * parameters:
41
+ * - in: path
42
+ * name: candidateId
43
+ * required: true
44
+ * schema:
45
+ * type: string
46
+ * - in: query
47
+ * name: page
48
+ * schema:
49
+ * type: integer
50
+ * default: 1
51
+ * - in: query
52
+ * name: limit
53
+ * schema:
54
+ * type: integer
55
+ * default: 10
56
+ * - in: query
57
+ * name: state
58
+ * schema:
59
+ * type: string
60
+ * default: all
61
+ * - in: query
62
+ * name: sortBy
63
+ * schema:
64
+ * type: string
65
+ * default: invitationDate
66
+ * - in: query
67
+ * name: sortOrder
68
+ * schema:
69
+ * type: string
70
+ * default: desc
71
+ * responses:
72
+ * 200:
73
+ * description: Résultats paginés
74
+ * 404:
75
+ * description: Candidat non trouvé
76
+ * 500:
77
+ * description: Erreur interne
78
+ */
34
79
  this.get('/results/:candidateId', authenticatedOptions, async (req, res) => {
35
80
  try {
36
81
  const { candidateId } = req.params;
@@ -125,7 +170,27 @@ class ResultRouter extends EnduranceRouter {
125
170
  res.status(500).json({ message: 'Erreur interne du serveur' });
126
171
  }
127
172
  });
128
- // Obtenir les infos de base d'un test (sans les questions), avec categoryName et maxTime
173
+ /**
174
+ * @swagger
175
+ * /results/test/{id}:
176
+ * get:
177
+ * summary: Obtenir un test sans questions
178
+ * description: Récupère un test avec catégories nommées, temps total et nombre de questions.
179
+ * tags: [Résultats]
180
+ * parameters:
181
+ * - in: path
182
+ * name: id
183
+ * required: true
184
+ * schema:
185
+ * type: string
186
+ * responses:
187
+ * 200:
188
+ * description: Test trouvé
189
+ * 404:
190
+ * description: Test non trouvé
191
+ * 500:
192
+ * description: Erreur interne
193
+ */
129
194
  this.get('/test/:id', authenticatedOptions, async (req, res) => {
130
195
  try {
131
196
  const { id } = req.params;
@@ -166,7 +231,32 @@ class ResultRouter extends EnduranceRouter {
166
231
  res.status(500).json({ message: 'Erreur interne du serveur' });
167
232
  }
168
233
  });
169
- // Obtenir l'ID de la prochaine question non répondue pour un résultat de test
234
+ /**
235
+ * @swagger
236
+ * /results/{id}/nextQuestion:
237
+ * get:
238
+ * summary: Obtenir la prochaine question
239
+ * description: Retourne l'identifiant de la prochaine question non répondue ou "result" s'il n'y en a plus.
240
+ * tags: [Résultats]
241
+ * parameters:
242
+ * - in: path
243
+ * name: id
244
+ * required: true
245
+ * schema:
246
+ * type: string
247
+ * - in: query
248
+ * name: currentQuestionId
249
+ * schema:
250
+ * type: string
251
+ * description: Question courante pour avancer dans l'ordre
252
+ * responses:
253
+ * 200:
254
+ * description: Prochaine question ou fin
255
+ * 404:
256
+ * description: Ressource non trouvée
257
+ * 500:
258
+ * description: Erreur interne
259
+ */
170
260
  this.get('/:id/nextQuestion', authenticatedOptions, async (req, res) => {
171
261
  try {
172
262
  const { id } = req.params;
@@ -239,7 +329,34 @@ class ResultRouter extends EnduranceRouter {
239
329
  res.status(500).json({ message: 'Erreur interne du serveur' });
240
330
  }
241
331
  });
242
- // Afficher une question par son ID (optionnellement vérifier la session)
332
+ /**
333
+ * @swagger
334
+ * /results/question/{idQuestion}:
335
+ * get:
336
+ * summary: Obtenir une question
337
+ * description: Retourne une question; peut vérifier l'appartenance à une session si sessionId est fourni.
338
+ * tags: [Résultats]
339
+ * parameters:
340
+ * - in: path
341
+ * name: idQuestion
342
+ * required: true
343
+ * schema:
344
+ * type: string
345
+ * - in: query
346
+ * name: sessionId
347
+ * schema:
348
+ * type: string
349
+ * description: TestResult pour vérifier l'accès
350
+ * responses:
351
+ * 200:
352
+ * description: Question retournée
353
+ * 404:
354
+ * description: Question ou session non trouvée
355
+ * 403:
356
+ * description: Question non autorisée
357
+ * 500:
358
+ * description: Erreur interne
359
+ */
243
360
  this.get('/question/:idQuestion', authenticatedOptions, async (req, res) => {
244
361
  try {
245
362
  const { idQuestion } = req.params;
@@ -302,7 +419,37 @@ class ResultRouter extends EnduranceRouter {
302
419
  res.status(500).json({ message: 'Erreur interne du serveur' });
303
420
  }
304
421
  });
305
- // Enregistrer la réponse à une question pour un résultat de test
422
+ /**
423
+ * @swagger
424
+ * /results/response:
425
+ * post:
426
+ * summary: Enregistrer une réponse
427
+ * description: Enregistre une réponse de candidat pour une question d'un TestResult et déclenche la correction si nécessaire.
428
+ * tags: [Résultats]
429
+ * requestBody:
430
+ * required: true
431
+ * content:
432
+ * application/json:
433
+ * schema:
434
+ * type: object
435
+ * required: [response, questionId, testResultId]
436
+ * properties:
437
+ * response:
438
+ * type: string
439
+ * questionId:
440
+ * type: string
441
+ * testResultId:
442
+ * type: string
443
+ * responses:
444
+ * 200:
445
+ * description: Réponse enregistrée
446
+ * 404:
447
+ * description: Ressource non trouvée
448
+ * 403:
449
+ * description: Question déjà répondue ou non autorisée
450
+ * 500:
451
+ * description: Erreur interne
452
+ */
306
453
  this.post('/response', authenticatedOptions, async (req, res) => {
307
454
  try {
308
455
  const { response, questionId, testResultId } = req.body;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@programisto/edrm-exams",
4
- "version": "0.3.7",
4
+ "version": "0.3.9",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -17,7 +17,7 @@
17
17
  "prepare": "husky install"
18
18
  },
19
19
  "dependencies": {
20
- "@programisto/endurance-core": "^1.1.6",
20
+ "@programisto/endurance": "^1.0.2",
21
21
  "aws-sdk": "^2.1692.0",
22
22
  "debug": "^4.3.7",
23
23
  "fs": "^0.0.1-security",