1
+ /**
2
+ * @typedef {import('./index.js').CertificationRescoringRepository } CertificationRescoringRepository
3
+ */
1
4
import { logger } from '../../../../shared/infrastructure/utils/logger.js' ;
2
5
import { PromiseUtils } from '../../../../shared/infrastructure/utils/promise-utils.js' ;
3
6
import { AutoJuryDone } from '../events/AutoJuryDone.js' ;
@@ -6,125 +9,120 @@ import { CertificationAssessment } from '../models/CertificationAssessment.js';
6
9
import { CertificationIssueReportResolutionAttempt } from '../models/CertificationIssueReportResolutionAttempt.js' ;
7
10
import { CertificationIssueReportResolutionStrategies } from '../models/CertificationIssueReportResolutionStrategies.js' ;
8
11
9
- export const processAutoJury = async ( {
12
+ /**
13
+ * @param {Object } params
14
+ * @param {CertificationRescoringRepository } params.certificationRescoringRepository
15
+ */
16
+ export async function processAutoJury ( {
10
17
sessionFinalized,
11
18
certificationIssueReportRepository,
12
19
certificationAssessmentRepository,
13
20
certificationCourseRepository,
14
21
challengeRepository,
15
- } ) => {
22
+ certificationRescoringRepository,
23
+ } ) {
16
24
const certificationCourses = await certificationCourseRepository . findCertificationCoursesBySessionId ( {
17
25
sessionId : sessionFinalized . sessionId ,
18
26
} ) ;
19
27
20
- if ( _areV3CertificationCourses ( certificationCourses ) ) {
21
- return await _handleAutoJuryV3 ( {
22
- sessionFinalized,
23
- certificationCourses,
24
- certificationAssessmentRepository,
28
+ for ( const certificationCourse of certificationCourses ) {
29
+ const certificationAssessment = await certificationAssessmentRepository . getByCertificationCourseId ( {
30
+ certificationCourseId : certificationCourse . getId ( ) ,
25
31
} ) ;
32
+ if ( _areV3CertificationCourses ( certificationCourses ) ) {
33
+ await _handleAutoJuryV3 ( {
34
+ certificationAssessment,
35
+ certificationCourse,
36
+ certificationAssessmentRepository,
37
+ certificationRescoringRepository,
38
+ } ) ;
39
+ } else {
40
+ const resolutionStrategies = new CertificationIssueReportResolutionStrategies ( {
41
+ certificationIssueReportRepository,
42
+ challengeRepository,
43
+ } ) ;
44
+
45
+ await _handleAutoJuryV2 ( {
46
+ certificationAssessment,
47
+ resolutionStrategies,
48
+ certificationCourse,
49
+ certificationIssueReportRepository,
50
+ certificationAssessmentRepository,
51
+ certificationRescoringRepository,
52
+ } ) ;
53
+ }
26
54
}
27
55
28
- return await _handleAutoJuryV2 ( {
29
- sessionFinalized,
30
- certificationCourses,
31
- certificationIssueReportRepository,
32
- challengeRepository,
33
- certificationAssessmentRepository,
56
+ return new AutoJuryDone ( {
57
+ sessionId : sessionFinalized . sessionId ,
58
+ finalizedAt : sessionFinalized . finalizedAt ,
59
+ certificationCenterName : sessionFinalized . certificationCenterName ,
60
+ sessionDate : sessionFinalized . sessionDate ,
61
+ sessionTime : sessionFinalized . sessionTime ,
62
+ hasExaminerGlobalComment : sessionFinalized . hasExaminerGlobalComment ,
34
63
} ) ;
35
- } ;
64
+ }
36
65
37
66
async function _handleAutoJuryV2 ( {
38
- sessionFinalized,
39
- certificationCourses,
67
+ certificationCourse,
40
68
certificationIssueReportRepository,
41
- challengeRepository,
42
69
certificationAssessmentRepository,
70
+ certificationRescoringRepository,
71
+ resolutionStrategies,
72
+ certificationAssessment,
43
73
} ) {
44
- const resolutionStrategies = new CertificationIssueReportResolutionStrategies ( {
45
- certificationIssueReportRepository,
46
- challengeRepository,
74
+ const hasAutoCompleteAnEffectOnScoring = await _autoCompleteUnfinishedTest ( {
75
+ certificationCourse,
76
+ certificationAssessment,
77
+ certificationAssessmentRepository,
47
78
} ) ;
48
79
49
- const certificationJuryDoneEvents = [ ] ;
80
+ const hasAutoResolutionAnEffectOnScoring = await _autoResolveCertificationIssueReport ( {
81
+ certificationCourse,
82
+ certificationAssessment,
83
+ certificationIssueReportRepository,
84
+ certificationAssessmentRepository,
85
+ resolutionStrategies,
86
+ } ) ;
50
87
51
- for ( const certificationCourse of certificationCourses ) {
52
- const certificationAssessment = await certificationAssessmentRepository . getByCertificationCourseId ( {
88
+ if ( hasAutoResolutionAnEffectOnScoring || hasAutoCompleteAnEffectOnScoring ) {
89
+ const certificationJuryDoneEvent = new CertificationJuryDone ( {
53
90
certificationCourseId : certificationCourse . getId ( ) ,
54
91
} ) ;
55
92
56
- const hasAutoCompleteAnEffectOnScoring = await _autoCompleteUnfinishedTest ( {
57
- certificationCourse,
58
- certificationAssessment,
59
- certificationAssessmentRepository,
93
+ await certificationRescoringRepository . execute ( {
94
+ event : certificationJuryDoneEvent ,
60
95
} ) ;
61
-
62
- const hasAutoResolutionAnEffectOnScoring = await _autoResolveCertificationIssueReport ( {
63
- certificationCourse,
64
- certificationAssessment,
65
- certificationIssueReportRepository,
66
- certificationAssessmentRepository,
67
- resolutionStrategies,
68
- } ) ;
69
-
70
- if ( hasAutoResolutionAnEffectOnScoring || hasAutoCompleteAnEffectOnScoring ) {
71
- const certificationJuryDoneEvent = new CertificationJuryDone ( {
72
- certificationCourseId : certificationCourse . getId ( ) ,
73
- } ) ;
74
-
75
- certificationJuryDoneEvents . push ( certificationJuryDoneEvent ) ;
76
- }
77
96
}
78
-
79
- return {
80
- certificationJuryDoneEvents,
81
- autoJuryDone : new AutoJuryDone ( {
82
- sessionId : sessionFinalized . sessionId ,
83
- finalizedAt : sessionFinalized . finalizedAt ,
84
- certificationCenterName : sessionFinalized . certificationCenterName ,
85
- sessionDate : sessionFinalized . sessionDate ,
86
- sessionTime : sessionFinalized . sessionTime ,
87
- hasExaminerGlobalComment : sessionFinalized . hasExaminerGlobalComment ,
88
- } ) ,
89
- } ;
90
97
}
91
98
92
99
function _areV3CertificationCourses ( certificationCourses ) {
93
100
return certificationCourses [ 0 ] . isV3 ( ) ;
94
101
}
95
102
96
- async function _handleAutoJuryV3 ( { sessionFinalized, certificationCourses, certificationAssessmentRepository } ) {
97
- const certificationJuryDoneEvents = [ ] ;
98
-
99
- for ( const certificationCourse of certificationCourses ) {
100
- const certificationAssessment = await certificationAssessmentRepository . getByCertificationCourseId ( {
103
+ /**
104
+ * @param {Object } params
105
+ * @param {CertificationRescoringRepository } params.certificationRescoringRepository
106
+ */
107
+ async function _handleAutoJuryV3 ( {
108
+ certificationCourse,
109
+ certificationAssessment,
110
+ certificationAssessmentRepository,
111
+ certificationRescoringRepository,
112
+ } ) {
113
+ if ( _v3CertificationShouldBeScored ( certificationAssessment ) ) {
114
+ const certificationJuryDoneEvent = new CertificationJuryDone ( {
101
115
certificationCourseId : certificationCourse . getId ( ) ,
102
116
} ) ;
103
117
104
- if ( _v3CertificationShouldBeScored ( certificationAssessment ) ) {
105
- const certificationJuryDoneEvent = new CertificationJuryDone ( {
106
- certificationCourseId : certificationCourse . getId ( ) ,
107
- } ) ;
108
-
109
- certificationJuryDoneEvents . push ( certificationJuryDoneEvent ) ;
110
- }
111
-
112
- certificationAssessment . endDueToFinalization ( ) ;
113
-
114
- await certificationAssessmentRepository . save ( certificationAssessment ) ;
118
+ await certificationRescoringRepository . execute ( {
119
+ event : certificationJuryDoneEvent ,
120
+ } ) ;
115
121
}
116
122
117
- return {
118
- certificationJuryDoneEvents,
119
- autoJuryDone : new AutoJuryDone ( {
120
- sessionId : sessionFinalized . sessionId ,
121
- finalizedAt : sessionFinalized . finalizedAt ,
122
- certificationCenterName : sessionFinalized . certificationCenterName ,
123
- sessionDate : sessionFinalized . sessionDate ,
124
- sessionTime : sessionFinalized . sessionTime ,
125
- hasExaminerGlobalComment : sessionFinalized . hasExaminerGlobalComment ,
126
- } ) ,
127
- } ;
123
+ certificationAssessment . endDueToFinalization ( ) ;
124
+
125
+ await certificationAssessmentRepository . save ( certificationAssessment ) ;
128
126
}
129
127
130
128
function _v3CertificationShouldBeScored ( certificationAssessment ) {
@@ -165,6 +163,7 @@ async function _autoResolveCertificationIssueReport({
165
163
const certificationIssueReports = await certificationIssueReportRepository . findByCertificationCourseId ( {
166
164
certificationCourseId : certificationCourse . getId ( ) ,
167
165
} ) ;
166
+
168
167
if ( certificationIssueReports . length === 0 ) {
169
168
return null ;
170
169
}
0 commit comments