diff --git a/api/src/certification/enrolment/domain/usecases/verify-candidate-subscriptions.js b/api/src/certification/enrolment/domain/usecases/verify-candidate-subscriptions.js index 8c717a82a2..0187e32f7b 100644 --- a/api/src/certification/enrolment/domain/usecases/verify-candidate-subscriptions.js +++ b/api/src/certification/enrolment/domain/usecases/verify-candidate-subscriptions.js @@ -35,11 +35,10 @@ export async function verifyCandidateSubscriptions({ certificationBadgesService, }) { const session = await sessionRepository.get({ id: sessionId }); - const { userId } = candidate; if (candidate.hasCoreSubscription()) { const placementProfile = await placementProfileService.getPlacementProfile({ - userId, + userId: candidate.userId, limitDate: candidate.reconciledAt, }); @@ -49,23 +48,15 @@ export async function verifyCandidateSubscriptions({ } if (_doesNeedEligibilityCheck(session, candidate)) { - const userPixCertifications = await pixCertificationRepository.findByUserId({ userId }); + const userPixCertifications = await pixCertificationRepository.findByUserId({ userId: candidate.userId }); if (!_hasValidCoreCertification(userPixCertifications)) { throw new CertificationCandidateEligibilityError(); } - const highestUserValidPixScore = _getHighestUserValidPixScore(userPixCertifications); - - // TODO: petit refacto mettre ensemble userAcquiredBadges et subscribedHighestBadgeAcquisition - const userAcquiredBadgeAcquisitions = await certificationBadgesService.findLatestBadgeAcquisitions({ - userId, - limitDate: candidate.reconciledAt, - }); - - const subscribedHighestBadgeAcquisition = _getSubscribedHighestBadgeAcquisition({ - userAcquiredBadgeAcquisitions, + const subscribedHighestBadgeAcquisition = await _findHighestBadgeAcquisitionForCandidateSubscription({ candidate, + certificationBadgesService, }); if (_isSubscribedUserBadgeOutDated(subscribedHighestBadgeAcquisition)) { @@ -86,6 +77,7 @@ export async function verifyCandidateSubscriptions({ subscribedHighestBadgeAcquisition, ); + const highestUserValidPixScore = _getHighestUserValidPixScore(userPixCertifications); if ( !_isUserPixScoreSufficientForBadge({ subscribedComplementaryCertificationBadge, @@ -97,6 +89,25 @@ export async function verifyCandidateSubscriptions({ } } } + +/** + * @param {Object} params + * @param {CertificationBadgesService} params.certificationBadgesService + * @param {Candidate} params.candidate + * @returns {CertifiableBadgeAcquisition} highest badge acquired that the candidate has been subscribed to + */ +async function _findHighestBadgeAcquisitionForCandidateSubscription({ candidate, certificationBadgesService }) { + const userAcquiredBadgeAcquisitions = await certificationBadgesService.findLatestBadgeAcquisitions({ + userId: candidate.userId, + limitDate: candidate.reconciledAt, + }); + + return _getSubscribedHighestBadgeAcquisition({ + userAcquiredBadgeAcquisitions, + candidate, + }); +} + /** * @param {CertifiableBadgeAcquisition} subscribedBadgeAcquisition * @returns {boolean} true if badge exists and is tagged outdated