diff --git a/api/src/main/java/ca/bc/gov/educ/grad/report/dao/CertificateTypeCodeRepository.java b/api/src/main/java/ca/bc/gov/educ/grad/report/dao/CertificateTypeCodeRepository.java index 5ba22208..11b70717 100644 --- a/api/src/main/java/ca/bc/gov/educ/grad/report/dao/CertificateTypeCodeRepository.java +++ b/api/src/main/java/ca/bc/gov/educ/grad/report/dao/CertificateTypeCodeRepository.java @@ -14,4 +14,7 @@ public interface CertificateTypeCodeRepository extends JpaRepository getStudentCertificateTypes(UUID graduationStudentRecordId); + + @Query("select t from CertificateTypeCodeEntity t join StudentCertificateEntity c on t.certificateTypeCode = c.certificateTypeCode where c.documentStatusCode='COMPL' and c.graduationStudentRecordId=:graduationStudentRecordId and c.certificateTypeCode in (:certificateTypeCode)") + List getStudentCertificateTypes(UUID graduationStudentRecordId, List certificateTypeCode); } \ No newline at end of file diff --git a/api/src/main/java/ca/bc/gov/educ/grad/report/dao/GradDataConvertionBean.java b/api/src/main/java/ca/bc/gov/educ/grad/report/dao/GradDataConvertionBean.java index b2f0353e..a2a9bc9c 100644 --- a/api/src/main/java/ca/bc/gov/educ/grad/report/dao/GradDataConvertionBean.java +++ b/api/src/main/java/ca/bc/gov/educ/grad/report/dao/GradDataConvertionBean.java @@ -488,7 +488,19 @@ public Pair, TotalCounts> getStudents(ReportData reportData) { Optional distributionDate = studentCertificateRepository.getCertificateDistributionDate(UUID.fromString(pen.getEntityId())); distributionDate.ifPresent(student::setCertificateDistributionDate); - List certificateTypes = certificateTypeCodeRepository.getStudentCertificateTypes(UUID.fromString(pen.getEntityId())); + List studentCertificateTypeCodes = new ArrayList<>(); + if(st.getGraduationStatus() != null && StringUtils.isNotBlank(st.getGraduationStatus().getCertificates())) { + String studentCertificateTypeCodesString = st.getGraduationStatus().getCertificates(); + log.debug("Process student {} certificate credentials {}", student.getPen(), studentCertificateTypeCodesString); + studentCertificateTypeCodes = Arrays.asList(StringUtils.split(studentCertificateTypeCodesString, ",")); + } + + List certificateTypes; + if(!studentCertificateTypeCodes.isEmpty()) { + certificateTypes = certificateTypeCodeRepository.getStudentCertificateTypes(UUID.fromString(pen.getEntityId()), studentCertificateTypeCodes); + } else { + certificateTypes = certificateTypeCodeRepository.getStudentCertificateTypes(UUID.fromString(pen.getEntityId())); + } student.setCertificateTypes(certificateTypes.stream().map(CertificateTypeCodeEntity::getLabel).collect(Collectors.toList())); totals.countCertificate(certificateTypes.size());