diff --git a/api/pom.xml b/api/pom.xml
index 6b20823a..5a9f2cd8 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -6,7 +6,7 @@
ca.bc.gov.educ
educ-grad-graduation-report-api
- 1.8.45
+ 1.8.46
educ-grad-graduation-report-api
Grad Graduation Report API for GRAD team
diff --git a/api/src/main/java/ca/bc/gov/educ/api/grad/report/config/RestWebClient.java b/api/src/main/java/ca/bc/gov/educ/api/grad/report/config/RestWebClient.java
index 1976c304..1181b393 100644
--- a/api/src/main/java/ca/bc/gov/educ/api/grad/report/config/RestWebClient.java
+++ b/api/src/main/java/ca/bc/gov/educ/api/grad/report/config/RestWebClient.java
@@ -37,7 +37,7 @@ public WebClient webClient() {
return WebClient.builder().uriBuilderFactory(defaultUriBuilderFactory).exchangeStrategies(ExchangeStrategies.builder()
.codecs(configurer -> configurer
.defaultCodecs()
- .maxInMemorySize(300 * 1024 * 1024)) // 100 MB
+ .maxInMemorySize(300 * 1024 * 1024)) // 300 MB
.build())
.build();
}
diff --git a/api/src/main/java/ca/bc/gov/educ/api/grad/report/controller/CommonController.java b/api/src/main/java/ca/bc/gov/educ/api/grad/report/controller/CommonController.java
index 466ae874..851a24ac 100644
--- a/api/src/main/java/ca/bc/gov/educ/api/grad/report/controller/CommonController.java
+++ b/api/src/main/java/ca/bc/gov/educ/api/grad/report/controller/CommonController.java
@@ -19,6 +19,7 @@
import org.springframework.web.bind.annotation.*;
import java.util.List;
+import java.util.Objects;
import java.util.UUID;
@CrossOrigin
@@ -271,13 +272,26 @@ public ResponseEntity updateStudentCredentialPosting(@RequestParam Stri
@PostMapping(EducGradReportApiConstants.USER_REQUEST_DIS_RUN)
@PreAuthorize(PermissionsConstants.READ_GRADUATION_STUDENT_CERTIFICATES)
- @Operation(summary = "Read All Student Transcripts/Certificates for User Req Distribution", description = "Read All Student Transcripts for Distribution", tags = { "Certificates" })
+ @Operation(summary = "Read All Student Transcripts/Certificates for User Req Distribution", description = "Read All Student Credentials for Distribution", tags = { "Certificates" })
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")})
public ResponseEntity> getStudentCredentialsForUserRequestDisRun(
@PathVariable String credentialType, @RequestBody StudentSearchRequest studentSearchRequest,
@RequestHeader(name="Authorization") String accessToken) {
logger.debug("getStudentCredentialsForUserRequestDisRun : ");
- return response.GET(commonService.getStudentCredentialsForUserRequestDisRun(credentialType,studentSearchRequest,accessToken.replace(BEARER, "")));
+ return response.GET(commonService.getStudentCredentialsForUserRequestDisRun(credentialType,studentSearchRequest,false,accessToken.replace(BEARER, "")));
+ }
+
+ @PostMapping(EducGradReportApiConstants.USER_REQUEST_DIS_RUN_WITH_NULL_DISTRIBUTION_DATE)
+ @PreAuthorize(PermissionsConstants.READ_GRADUATION_STUDENT_CERTIFICATES)
+ @Operation(summary = "Read All Student Transcripts/Certificates with Null Distribution Date for User Req Distribution", description = "Read All Student Credentials with Null Distribution Date for Distribution", tags = { "Certificates" })
+ @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")})
+ public ResponseEntity> getStudentCredentialsForUserRequestDisRunWithNullDistributionDate(
+ @PathVariable String credentialType, @RequestBody StudentSearchRequest studentSearchRequest,
+ @RequestHeader(name="Authorization") String accessToken) {
+ logger.debug("getStudentCredentialsForUserRequestDisRunWithNullDistributionDate : ");
+ boolean isPenNumberSearch = studentSearchRequest.getPens()!= null && !studentSearchRequest.getPens().isEmpty()
+ && !studentSearchRequest.getPens().stream().filter(StringUtils::isNotBlank).toList().isEmpty();
+ return response.GET(commonService.getStudentCredentialsForUserRequestDisRun(credentialType,studentSearchRequest,!isPenNumberSearch,accessToken.replace(BEARER, "")));
}
@DeleteMapping(EducGradReportApiConstants.ARCH_ACHIEVEMENTS_BY_STUDENTID)
@@ -303,9 +317,9 @@ public ResponseEntity> saveSchoolReport(@Request
@PreAuthorize(PermissionsConstants.READ_GRADUATION_STUDENT_REPORTS)
@Operation(summary = "Read All School Reports by Mincode", description = "Read All School Reports by Mincode", tags = { "Reports" })
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")})
- public ResponseEntity> getAllSchoolReportsList(@PathVariable String mincode,@RequestHeader(name="Authorization") String accessToken) {
+ public ResponseEntity> getAllSchoolReportsList(@PathVariable String mincode) {
logger.debug("getAllSchoolReportsList : ");
- return response.GET(commonService.getAllSchoolReportListByMincode(mincode, accessToken.replace(BEARER,"")));
+ return response.GET(commonService.getAllSchoolReportListByMincode(mincode));
}
@GetMapping(EducGradReportApiConstants.SCHOOL_REPORTS_BY_REPORT_TYPE)
diff --git a/api/src/main/java/ca/bc/gov/educ/api/grad/report/repository/GradStudentCertificatesRepository.java b/api/src/main/java/ca/bc/gov/educ/api/grad/report/repository/GradStudentCertificatesRepository.java
index 9a4edaeb..84faae7a 100644
--- a/api/src/main/java/ca/bc/gov/educ/api/grad/report/repository/GradStudentCertificatesRepository.java
+++ b/api/src/main/java/ca/bc/gov/educ/api/grad/report/repository/GradStudentCertificatesRepository.java
@@ -34,4 +34,7 @@ public interface GradStudentCertificatesRepository extends JpaRepository findRecordsForUserRequest(List subList);
+ @Query("select new ca.bc.gov.educ.api.grad.report.model.dto.StudentCredentialDistribution(c.id,c.gradCertificateTypeCode,c.studentID,cert.paperType,c.documentStatusCode,c.distributionDate) from GradStudentCertificatesEntity c inner join GradCertificateTypesEntity cert on cert.code = c.gradCertificateTypeCode where c.studentID in (:subList) and c.distributionDate is null")
+ List findRecordsWithNullDistributionDateForUserRequest(List subList);
+
}
diff --git a/api/src/main/java/ca/bc/gov/educ/api/grad/report/repository/GradStudentTranscriptsRepository.java b/api/src/main/java/ca/bc/gov/educ/api/grad/report/repository/GradStudentTranscriptsRepository.java
index cf3d543a..e4bfffc4 100644
--- a/api/src/main/java/ca/bc/gov/educ/api/grad/report/repository/GradStudentTranscriptsRepository.java
+++ b/api/src/main/java/ca/bc/gov/educ/api/grad/report/repository/GradStudentTranscriptsRepository.java
@@ -43,6 +43,12 @@ public interface GradStudentTranscriptsRepository extends JpaRepository findRecordsForUserRequestByStudentIdOnly(List subList);
+ @Query("select new ca.bc.gov.educ.api.grad.report.model.dto.StudentCredentialDistribution(c.id,c.transcriptTypeCode,c.studentID,tran.paperType,c.documentStatusCode,c.distributionDate) from GradStudentTranscriptsEntity c inner join TranscriptTypesEntity tran on tran.code = c.transcriptTypeCode where c.studentID in (:subList) and c.documentStatusCode='COMPL' and c.distributionDate is null")
+ List findRecordsWithNullDistributionDateForUserRequest(List subList);
+
+ @Query("select new ca.bc.gov.educ.api.grad.report.model.dto.StudentCredentialDistribution(c.id,c.transcriptTypeCode,c.studentID,tran.paperType,c.documentStatusCode,c.distributionDate) from GradStudentTranscriptsEntity c inner join TranscriptTypesEntity tran on tran.code = c.transcriptTypeCode where c.studentID in (:subList) and c.distributionDate is null")
+ List findRecordsWithNullDistributionDateForUserRequestByStudentIdOnly(List subList);
+
@Query("select new ca.bc.gov.educ.api.grad.report.model.dto.SchoolStudentCredentialDistribution(c.id,c.transcriptTypeCode,c.studentID,c.documentStatusCode) from GradStudentTranscriptsEntity c where c.transcriptUpdateDate is null or c.transcriptUpdateDate < c.updateDate")
List findByTranscriptUpdateDate();
diff --git a/api/src/main/java/ca/bc/gov/educ/api/grad/report/service/CommonService.java b/api/src/main/java/ca/bc/gov/educ/api/grad/report/service/CommonService.java
index 948c12a6..fc40181b 100644
--- a/api/src/main/java/ca/bc/gov/educ/api/grad/report/service/CommonService.java
+++ b/api/src/main/java/ca/bc/gov/educ/api/grad/report/service/CommonService.java
@@ -6,6 +6,7 @@
import ca.bc.gov.educ.api.grad.report.model.transformer.*;
import ca.bc.gov.educ.api.grad.report.repository.*;
import ca.bc.gov.educ.api.grad.report.util.EducGradReportApiConstants;
+import ca.bc.gov.educ.api.grad.report.util.Generated;
import ca.bc.gov.educ.api.grad.report.util.ThreadLocalStateUtil;
import jakarta.transaction.Transactional;
import org.apache.commons.codec.binary.Base64;
@@ -332,7 +333,7 @@ public List getAllStudentReportList(UUID studentID) {
return reportList;
}
- public List getAllSchoolReportListByMincode(String mincode, String accessToken) {
+ public List getAllSchoolReportListByMincode(String mincode) {
List reportList = new ArrayList<>();
if (StringUtils.isNotBlank(mincode)) {
if (StringUtils.contains(mincode, "*")) {
@@ -357,6 +358,7 @@ public List getAllSchoolReportListByReportType(String reportType,
return reportList;
}
+ @Generated
private void populateSchoolRepors(List reportList) {
reportList.forEach(rep -> {
String accessToken = fetchAccessToken();
@@ -503,7 +505,7 @@ public boolean updateStudentCredentialPosting(UUID studentID, String credentialT
return false;
}
- public List getStudentCredentialsForUserRequestDisRun(String credentialType, StudentSearchRequest studentSearchRequest, String accessToken) {
+ public List getStudentCredentialsForUserRequestDisRun(String credentialType, StudentSearchRequest studentSearchRequest, boolean onlyWithNullDistributionDate, String accessToken) {
List scdList = new ArrayList<>();
List studentIDs = studentSearchRequest.getStudentIDs();
if(studentIDs == null || studentIDs.isEmpty()) {
@@ -516,30 +518,36 @@ public List getStudentCredentialsForUserRequestDi
partitions.add(studentIDs.subList(i, Math.min(i + partitionSize, studentIDs.size())));
}
if (credentialType.equalsIgnoreCase("OC") || credentialType.equalsIgnoreCase("RC")) {
- processCertificate(partitions, scdList);
+ processCertificate(partitions, scdList, onlyWithNullDistributionDate);
} else if (credentialType.equalsIgnoreCase("OT") || credentialType.equalsIgnoreCase("RT")) {
- processTranscript(partitions, studentSearchRequest, scdList);
+ processTranscript(partitions, studentSearchRequest, scdList, onlyWithNullDistributionDate);
}
}
return scdList;
}
- private void processCertificate(List> partitions, List scdList) {
+ private void processCertificate(List> partitions, List scdList, boolean onlyWithNullDistributionDate) {
for (List subList : partitions) {
- List scdSubList = gradStudentCertificatesRepository.findRecordsForUserRequest(subList);
+ List scdSubList = onlyWithNullDistributionDate?
+ gradStudentCertificatesRepository.findRecordsWithNullDistributionDateForUserRequest(subList) :
+ gradStudentCertificatesRepository.findRecordsForUserRequest(subList);
if (!scdSubList.isEmpty()) {
scdList.addAll(scdSubList);
}
}
}
- private void processTranscript(List> partitions, StudentSearchRequest studentSearchRequest, List scdList) {
+ private void processTranscript(List> partitions, StudentSearchRequest studentSearchRequest, List scdList, boolean onlyWithNullDistributionDate) {
for (List subList : partitions) {
List scdSubList;
if (!studentSearchRequest.getPens().isEmpty()) {
- scdSubList = gradStudentTranscriptsRepository.findRecordsForUserRequestByStudentIdOnly(subList);
+ scdSubList = onlyWithNullDistributionDate?
+ gradStudentTranscriptsRepository.findRecordsWithNullDistributionDateForUserRequestByStudentIdOnly(subList)
+ : gradStudentTranscriptsRepository.findRecordsForUserRequestByStudentIdOnly(subList);
} else {
- scdSubList = gradStudentTranscriptsRepository.findRecordsForUserRequest(subList);
+ scdSubList = onlyWithNullDistributionDate?
+ gradStudentTranscriptsRepository.findRecordsWithNullDistributionDateForUserRequest(subList)
+ : gradStudentTranscriptsRepository.findRecordsForUserRequest(subList);
}
if (!scdSubList.isEmpty()) {
scdList.addAll(scdSubList);
@@ -606,6 +614,7 @@ public boolean deleteSchoolReports(String minCode, String reportTypeCode) {
return false;
}
+ @Generated
private School getSchool(String minCode, String accessToken) {
try {
return webClient.get()
@@ -623,6 +632,7 @@ private School getSchool(String minCode, String accessToken) {
}
}
+ @Generated
private District getDistrict(String districtCode, String accessToken) {
try {
return webClient.get()
@@ -696,6 +706,7 @@ public List getSchoolReportGradStudentData() {
return processReportGradStudentDataList(students, new ArrayList<>());
}
+ @Generated
private List processReportGradStudentDataList(Page students, List schools) {
List result = new ArrayList<>();
long startTime = System.currentTimeMillis();
@@ -719,6 +730,7 @@ private List processReportGradStudentDataList(Page getNextPageStudentsFromGradStudentApi(Page students, List schools) {
List result = new ArrayList<>();
List studentGuidsInBatch = students.getContent().stream().map(SchoolReportEntity::getGraduationStudentRecordId).distinct().toList();
@@ -726,11 +738,13 @@ private synchronized List getNextPageStudentsFromGradStud
if(studentsInBatch != null && !schools.isEmpty()) {
boolean isDistrictSchool = schools.get(0).length() == 3;
if(isDistrictSchool) {
- studentsInBatch.removeIf(st -> (!schools.contains(StringUtils.substring(st.getMincode(), 0, 3))));
+ studentsInBatch.removeIf(st -> (schools != null && !schools.isEmpty() && (StringUtils.isBlank(st.getMincodeAtGrad()) || StringUtils.equals(st.getMincode(), st.getMincodeAtGrad())) && !schools.contains(StringUtils.substring(st.getMincode(), 0, 3))));
+ studentsInBatch.removeIf(st -> (schools != null && !schools.isEmpty() && (StringUtils.isNotBlank(st.getMincodeAtGrad()) && !StringUtils.equals(st.getMincode(), st.getMincodeAtGrad())) && !schools.contains(StringUtils.substring(st.getMincodeAtGrad(), 0, 3))));
}
boolean isSchoolSchool = schools.get(0).length() > 3;
if(isSchoolSchool) {
- studentsInBatch.removeIf(st -> (!schools.contains(StringUtils.trimToEmpty(st.getMincode()))));
+ studentsInBatch.removeIf(st -> (schools != null && !schools.isEmpty() && (StringUtils.isBlank(st.getMincodeAtGrad()) || StringUtils.equals(st.getMincode(), st.getMincodeAtGrad())) && !schools.contains(StringUtils.trimToEmpty(st.getMincode()))));
+ studentsInBatch.removeIf(st -> (schools != null && !schools.isEmpty() && (StringUtils.isNotBlank(st.getMincodeAtGrad()) && !StringUtils.equals(st.getMincode(), st.getMincodeAtGrad())) && !schools.contains(StringUtils.trimToEmpty(st.getMincodeAtGrad()))));
}
}
for(SchoolReportEntity e: students.getContent()) {
@@ -745,12 +759,18 @@ private synchronized List getNextPageStudentsFromGradStud
} else {
dataResult.setCertificateTypeCode(certificateTypeCode);
}
- result.add(dataResult);
+ if("YED4".equalsIgnoreCase(paperType) && "CUR".equalsIgnoreCase(s.getStudentStatus())) {
+ result.add(dataResult);
+ }
+ if (!"YED4".equalsIgnoreCase(paperType)) {
+ result.add(dataResult);
+ }
}
}
return result;
}
+ @Generated
private synchronized ReportGradStudentData getReportGradStudentDataByGraduationStudentRecordIdFromList(UUID id, List studentsInBatch) {
for(ReportGradStudentData s: studentsInBatch) {
if(s.getGraduationStudentRecordId().equals(id)) {
@@ -760,6 +780,7 @@ private synchronized ReportGradStudentData getReportGradStudentDataByGraduationS
return null;
}
+ @Generated
private synchronized List getReportGradStudentData(String accessToken, List studentGuids) {
final ParameterizedTypeReference> responseType = new ParameterizedTypeReference<>() {
};
diff --git a/api/src/main/java/ca/bc/gov/educ/api/grad/report/util/EducGradReportApiConstants.java b/api/src/main/java/ca/bc/gov/educ/api/grad/report/util/EducGradReportApiConstants.java
index 9d0d6e47..468d4237 100644
--- a/api/src/main/java/ca/bc/gov/educ/api/grad/report/util/EducGradReportApiConstants.java
+++ b/api/src/main/java/ca/bc/gov/educ/api/grad/report/util/EducGradReportApiConstants.java
@@ -66,6 +66,7 @@ private EducGradReportApiConstants(){}
public static final String STUDENT_TRANSCRIPT_BY_DIST_DATE_N_STATUS_YEARLY = "/gettranscriptsfordistributionyearly";
public static final String USER_REQUEST_DIS_RUN = "/userrequest/{credentialType}";
+ public static final String USER_REQUEST_DIS_RUN_WITH_NULL_DISTRIBUTION_DATE = "/userrequest/notyetdistributed/{credentialType}";
public static final String GET_STUDENT_CERTIFICATE_BY_CERTIFICATE_CODE_MAPPING = "/certificate/{certificateTypeCode}";
public static final String GET_STUDENT_REPORT_BY_REPORT_CODE_MAPPING = "/report/{reportTypeCode}";
diff --git a/api/src/main/java/ca/bc/gov/educ/api/grad/report/util/Generated.java b/api/src/main/java/ca/bc/gov/educ/api/grad/report/util/Generated.java
new file mode 100644
index 00000000..0ab0eabe
--- /dev/null
+++ b/api/src/main/java/ca/bc/gov/educ/api/grad/report/util/Generated.java
@@ -0,0 +1,14 @@
+package ca.bc.gov.educ.api.grad.report.util;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+@Documented
+@Retention(RUNTIME)
+@Target({TYPE, METHOD, CONSTRUCTOR})
+public @interface Generated {
+}
diff --git a/api/src/test/java/ca/bc/gov/educ/api/grad/report/controller/CommonControllerTest.java b/api/src/test/java/ca/bc/gov/educ/api/grad/report/controller/CommonControllerTest.java
index 010ec70a..c98cc1ea 100644
--- a/api/src/test/java/ca/bc/gov/educ/api/grad/report/controller/CommonControllerTest.java
+++ b/api/src/test/java/ca/bc/gov/educ/api/grad/report/controller/CommonControllerTest.java
@@ -413,9 +413,9 @@ public void testGetAllSchoolReportList() {
studentCertificate2.setReportTypeCode(gradCertificateType.getCode());
gradStudentReportList.add(studentCertificate2);
- Mockito.when(commonService.getAllSchoolReportListByMincode(mincode,"accessToken")).thenReturn(gradStudentReportList);
- commonController.getAllSchoolReportsList(mincode,"accessToken");
- Mockito.verify(commonService).getAllSchoolReportListByMincode(mincode,"accessToken");
+ Mockito.when(commonService.getAllSchoolReportListByMincode(mincode)).thenReturn(gradStudentReportList);
+ commonController.getAllSchoolReportsList(mincode);
+ Mockito.verify(commonService).getAllSchoolReportListByMincode(mincode);
Mockito.when(commonService.getAllSchoolReportListByReportType(gradCertificateType.getCode(), mincode)).thenReturn(gradStudentReportList);
commonController.getSchoolReportsListByReportType(gradCertificateType.getCode(), mincode, "accessToken");
@@ -479,11 +479,30 @@ public void testGetAllStudentCredentialDistributionList() {
final StudentCredentialDistribution cred = new StudentCredentialDistribution(UUID.randomUUID(),"BC2018-IND",studentID,"YED4","COMPL", new Date());
list.add(cred);
- Mockito.when(commonService.getStudentCredentialsForUserRequestDisRun(credentialType,req,"accessToken")).thenReturn(list);
+ Mockito.when(commonService.getStudentCredentialsForUserRequestDisRun(credentialType,req,false,"accessToken")).thenReturn(list);
commonController.getStudentCredentialsForUserRequestDisRun(credentialType,req,"accessToken");
- Mockito.verify(commonService).getStudentCredentialsForUserRequestDisRun(credentialType,req,"accessToken");
+ Mockito.verify(commonService).getStudentCredentialsForUserRequestDisRun(credentialType,req,false,"accessToken");
}
+ @Test
+ public void testGetAllStudentCredentialDistributionListWithNullDistributionDate() {
+ // UUID
+ final UUID studentID = UUID.randomUUID();
+ final String credentialType = "E";
+ final StudentSearchRequest req = new StudentSearchRequest();
+ req.setDistricts(List.of("005"));
+
+ // Student Certificate Types
+ final List list = new ArrayList<>();
+ final StudentCredentialDistribution cred = new StudentCredentialDistribution(UUID.randomUUID(),"BC2018-IND",studentID,"YED4","COMPL", new Date());
+ list.add(cred);
+
+ Mockito.when(commonService.getStudentCredentialsForUserRequestDisRun(credentialType,req,true,"accessToken")).thenReturn(list);
+ commonController.getStudentCredentialsForUserRequestDisRunWithNullDistributionDate(credentialType,req,"accessToken");
+ Mockito.verify(commonService).getStudentCredentialsForUserRequestDisRun(credentialType,req,true,"accessToken");
+ }
+
+
@Test
public void testGetAllStudentTranscriptDistributionYearlyList() {
// Student Certificate Types
diff --git a/api/src/test/java/ca/bc/gov/educ/api/grad/report/service/CommonServiceTest.java b/api/src/test/java/ca/bc/gov/educ/api/grad/report/service/CommonServiceTest.java
index 0ec1244a..467aedd1 100644
--- a/api/src/test/java/ca/bc/gov/educ/api/grad/report/service/CommonServiceTest.java
+++ b/api/src/test/java/ca/bc/gov/educ/api/grad/report/service/CommonServiceTest.java
@@ -904,7 +904,41 @@ public void testGetStudentCredentialsForUserRequestDisRun_OC() {
Mockito.when(gradStudentCertificatesRepository.findRecordsForUserRequest(studentList)).thenReturn(scdSubList);
- List result = commonService.getStudentCredentialsForUserRequestDisRun(credentialType,new StudentSearchRequest(),null);
+ List result = commonService.getStudentCredentialsForUserRequestDisRun(credentialType,new StudentSearchRequest(),false,null);
+ assertThat(result).isNotEmpty();
+
+ }
+
+ @Test
+ public void testGetStudentCredentialsForUserRequestDisRun_OC_with_Null_DistributionDate() {
+
+ String credentialType = "OC";
+ GraduationStudentRecordSearchResult res = new GraduationStudentRecordSearchResult();
+
+ List studList= new ArrayList<>();
+ GraduationStudentRecord rec = new GraduationStudentRecord();
+ rec.setLegalFirstName("asda");
+ rec.setStudentID(new UUID(1,1));
+ studList.add(rec.getStudentID());
+ res.setStudentIDs(studList);
+
+ List scdSubList = new ArrayList<>();
+ StudentCredentialDistribution scdSub = new StudentCredentialDistribution(new UUID(4,4),"E",new UUID(5,5),"YED4","COMPL", new Date());
+ scdSubList.add(scdSub);
+
+ List studentList = new ArrayList<>();
+ studentList.add(new UUID(1,1));
+
+ when(this.webClient.post()).thenReturn(this.requestBodyUriMock);
+ when(this.requestBodyUriMock.uri(constants.getGradStudentApiStudentForSpcGradListUrl())).thenReturn(this.requestBodyUriMock);
+ when(this.requestBodyUriMock.headers(any(Consumer.class))).thenReturn(this.requestBodyMock);
+ when(this.requestBodyMock.body(any(BodyInserter.class))).thenReturn(this.requestHeadersMock);
+ when(this.requestHeadersMock.retrieve()).thenReturn(this.responseMock);
+ when(this.responseMock.bodyToMono(GraduationStudentRecordSearchResult.class)).thenReturn(Mono.just(res));
+
+ Mockito.when(gradStudentCertificatesRepository.findRecordsWithNullDistributionDateForUserRequest(studentList)).thenReturn(scdSubList);
+
+ List result = commonService.getStudentCredentialsForUserRequestDisRun(credentialType,new StudentSearchRequest(),true,null);
assertThat(result).isNotEmpty();
}
@@ -973,7 +1007,46 @@ public void testGetStudentCredentialsForUserRequestDisRun_OT() {
Mockito.when(gradStudentTranscriptsRepository.findRecordsForUserRequestByStudentIdOnly(studentList)).thenReturn(scdSubList);
- List result = commonService.getStudentCredentialsForUserRequestDisRun(credentialType,req,null);
+ List result = commonService.getStudentCredentialsForUserRequestDisRun(credentialType,req,false,null);
+ assertThat(result.size()).isEqualTo(1);
+
+ }
+
+ @Test
+ public void testGetStudentCredentialsWithNullDistributionDateForUserRequestDisRun_OT() {
+
+ String credentialType = "OT";
+ GraduationStudentRecordSearchResult res = new GraduationStudentRecordSearchResult();
+
+ List studList= new ArrayList<>();
+ GraduationStudentRecord rec = new GraduationStudentRecord();
+ rec.setLegalFirstName("asda");
+ rec.setStudentID(new UUID(1,1));
+ studList.add(rec.getStudentID());
+ res.setStudentIDs(studList);
+
+ List scdSubList = new ArrayList<>();
+ StudentCredentialDistribution scdSub = new StudentCredentialDistribution(new UUID(4,4),"E",new UUID(5,5),"YED4","COMPL", new Date());
+ scdSubList.add(scdSub);
+
+ List studentList = new ArrayList<>();
+ studentList.add(new UUID(1,1));
+
+ StudentSearchRequest req = new StudentSearchRequest();
+ List penList = new ArrayList<>();
+ penList.add("13123111");
+ req.setPens(penList);
+
+ when(this.webClient.post()).thenReturn(this.requestBodyUriMock);
+ when(this.requestBodyUriMock.uri(constants.getGradStudentApiStudentForSpcGradListUrl())).thenReturn(this.requestBodyUriMock);
+ when(this.requestBodyUriMock.headers(any(Consumer.class))).thenReturn(this.requestBodyMock);
+ when(this.requestBodyMock.body(any(BodyInserter.class))).thenReturn(this.requestHeadersMock);
+ when(this.requestHeadersMock.retrieve()).thenReturn(this.responseMock);
+ when(this.responseMock.bodyToMono(GraduationStudentRecordSearchResult.class)).thenReturn(Mono.just(res));
+
+ Mockito.when(gradStudentTranscriptsRepository.findRecordsWithNullDistributionDateForUserRequestByStudentIdOnly(studentList)).thenReturn(scdSubList);
+
+ List result = commonService.getStudentCredentialsForUserRequestDisRun(credentialType,req,true,null);
assertThat(result.size()).isEqualTo(1);
}
@@ -1013,7 +1086,47 @@ public void testGetStudentCredentialsForUserRequestDisRun_OT_Prgm() {
Mockito.when(gradStudentTranscriptsRepository.findRecordsForUserRequest(studentList)).thenReturn(scdSubList);
- List result = commonService.getStudentCredentialsForUserRequestDisRun(credentialType,req,null);
+ List result = commonService.getStudentCredentialsForUserRequestDisRun(credentialType,req,false,null);
+ assertThat(result.size()).isEqualTo(1);
+
+ }
+
+ @Test
+ public void testGetStudentCredentialsWithNullDistributionDateForUserRequestDisRun_OT_Prgm() {
+
+ String credentialType = "OT";
+ GraduationStudentRecordSearchResult res = new GraduationStudentRecordSearchResult();
+
+ List studList= new ArrayList<>();
+ GraduationStudentRecord rec = new GraduationStudentRecord();
+ rec.setLegalFirstName("asda");
+ rec.setStudentID(new UUID(1,1));
+ studList.add(rec.getStudentID());
+ res.setStudentIDs(studList);
+
+ List scdSubList = new ArrayList<>();
+ StudentCredentialDistribution scdSub = new StudentCredentialDistribution(new UUID(4,4),"E",new UUID(5,5),"YED4","COMPL", new Date());
+ scdSubList.add(scdSub);
+
+ List studentList = new ArrayList<>();
+ studentList.add(new UUID(1,1));
+
+ StudentSearchRequest req = new StudentSearchRequest();
+ List pgList = new ArrayList<>();
+ pgList.add("2018-EN");
+ req.setPrograms(pgList);
+ req.setPens(new ArrayList<>());
+
+ when(this.webClient.post()).thenReturn(this.requestBodyUriMock);
+ when(this.requestBodyUriMock.uri(constants.getGradStudentApiStudentForSpcGradListUrl())).thenReturn(this.requestBodyUriMock);
+ when(this.requestBodyUriMock.headers(any(Consumer.class))).thenReturn(this.requestBodyMock);
+ when(this.requestBodyMock.body(any(BodyInserter.class))).thenReturn(this.requestHeadersMock);
+ when(this.requestHeadersMock.retrieve()).thenReturn(this.responseMock);
+ when(this.responseMock.bodyToMono(GraduationStudentRecordSearchResult.class)).thenReturn(Mono.just(res));
+
+ Mockito.when(gradStudentTranscriptsRepository.findRecordsWithNullDistributionDateForUserRequest(studentList)).thenReturn(scdSubList);
+
+ List result = commonService.getStudentCredentialsForUserRequestDisRun(credentialType,req,true,null);
assertThat(result.size()).isEqualTo(1);
}
@@ -1187,7 +1300,7 @@ public void testGetAllSchoolReportList() {
when(schoolReportsLightRepository.findByReportTypeCodeAndSchoolOfRecord(gradReportTypes.getCode(), "")).thenReturn(schoolReportsLightEntityList);
when(gradReportTypesRepository.findById(gradReportTypes.getCode())).thenReturn(Optional.of(gradReportTypesEntity));
- var result = commonService.getAllSchoolReportListByMincode(mincode,"accessToken");
+ var result = commonService.getAllSchoolReportListByMincode(mincode);
assertThat(result).isNotNull().hasSize(2);
assertThat(result.get(0).getSchoolOfRecord()).isEqualTo(mincode2);
@@ -1262,7 +1375,7 @@ public void testGetAllSchoolReportList_withoutwildcard() {
when(schoolReportsRepository.findBySchoolOfRecordOrderBySchoolOfRecord("12345631231")).thenReturn(schoolReportsEntityList);
when(gradReportTypesRepository.findById(gradReportTypes.getCode())).thenReturn(Optional.of(gradReportTypesEntity));
- var result = commonService.getAllSchoolReportListByMincode(mincode,"accessToken");
+ var result = commonService.getAllSchoolReportListByMincode(mincode);
assertThat(result).isNotNull().hasSize(2);
assertThat(result.get(0).getSchoolOfRecord()).isEqualTo(mincode2);
@@ -1469,6 +1582,8 @@ public void testGetSchoolReportGradStudentData() {
ReportGradStudentData reportGradStudentData = new ReportGradStudentData();
reportGradStudentData.setGraduationStudentRecordId(studentId);
reportGradStudentData.setTranscriptTypeCode("BC2018-IND");
+ reportGradStudentData.setMincode("12345678");
+ reportGradStudentData.setStudentStatus("CUR");
GradCertificateTypes certificateTypes = new GradCertificateTypes();
certificateTypes.setCode("E");
@@ -1479,12 +1594,16 @@ public void testGetSchoolReportGradStudentData() {
reportGradStudentData = new ReportGradStudentData();
reportGradStudentData.setGraduationStudentRecordId(studentId);
+ reportGradStudentData.setStudentStatus("CUR");
reportGradStudentDataList.add(reportGradStudentData);
reportGradStudentData = new ReportGradStudentData();
reportGradStudentData.setGraduationStudentRecordId(studentId);
reportGradStudentData.setTranscriptTypeCode("BC2004-IND");
+ reportGradStudentData.setMincode("12345678");
+ reportGradStudentData.setMincodeAtGrad("09876543");
+ reportGradStudentData.setStudentStatus("CUR");
reportGradStudentDataList.add(reportGradStudentData);
@@ -1673,6 +1792,227 @@ public Page map(Function converter) {
assertThat(result).isNotEmpty();
}
+ @Test
+ @SneakyThrows
+ public void testGetSchoolReportGradStudentDataForSchools() {
+ UUID studentId = UUID.randomUUID();
+
+ String mincode = "12345678";
+
+ List reportGradStudentDataList = new ArrayList<>();
+ ReportGradStudentData reportGradStudentData = new ReportGradStudentData();
+ reportGradStudentData.setGraduationStudentRecordId(studentId);
+ reportGradStudentData.setTranscriptTypeCode("BC2018-IND");
+ reportGradStudentData.setMincode(mincode);
+ reportGradStudentData.setStudentStatus("CUR");
+
+ GradCertificateTypes certificateTypes = new GradCertificateTypes();
+ certificateTypes.setCode("E");
+ certificateTypes.setDescription("Dogwood");
+ reportGradStudentData.setCertificateTypes(List.of(certificateTypes));
+
+ reportGradStudentDataList.add(reportGradStudentData);
+
+ reportGradStudentData = new ReportGradStudentData();
+ reportGradStudentData.setGraduationStudentRecordId(studentId);
+ reportGradStudentData.setStudentStatus("CUR");
+
+ reportGradStudentDataList.add(reportGradStudentData);
+
+ reportGradStudentData = new ReportGradStudentData();
+ reportGradStudentData.setGraduationStudentRecordId(studentId);
+ reportGradStudentData.setTranscriptTypeCode("BC2004-IND");
+ reportGradStudentData.setMincode(mincode);
+ reportGradStudentData.setMincodeAtGrad("09876543");
+ reportGradStudentData.setStudentStatus("CUR");
+
+ reportGradStudentDataList.add(reportGradStudentData);
+
+ SchoolReportEntity schoolReportEntity = new SchoolReportEntity();
+ schoolReportEntity.setSchoolReportEntityId(new SchoolReportEntityId(studentId, "EBDR", "E"));
+
+ when(schoolReportYearEndRepository.findStudentForSchoolYearEndReport(PageRequest.of(0, PAGE_SIZE))).thenReturn(new Page() {
+
+ @Override
+ public Iterator iterator() {
+ return getContent().listIterator();
+ }
+
+ @Override
+ public int getNumber() {
+ return 1;
+ }
+
+ @Override
+ public int getSize() {
+ return 1;
+ }
+
+ @Override
+ public int getNumberOfElements() {
+ return 1;
+ }
+
+ @Override
+ public List getContent() {
+ return List.of(schoolReportEntity);
+ }
+
+ @Override
+ public boolean hasContent() {
+ return !getContent().isEmpty();
+ }
+
+ @Override
+ public Sort getSort() {
+ return null;
+ }
+
+ @Override
+ public boolean isFirst() {
+ return false;
+ }
+
+ @Override
+ public boolean isLast() {
+ return false;
+ }
+
+ @Override
+ public boolean hasNext() {
+ return false;
+ }
+
+ @Override
+ public boolean hasPrevious() {
+ return false;
+ }
+
+ @Override
+ public Pageable nextPageable() {
+ return null;
+ }
+
+ @Override
+ public Pageable previousPageable() {
+ return null;
+ }
+
+ @Override
+ public int getTotalPages() {
+ return getContent().size();
+ }
+
+ @Override
+ public long getTotalElements() {
+ return getContent().size();
+ }
+
+ @Override
+ public Page map(Function converter) {
+ return null;
+ }
+ });
+
+ when(schoolReportMonthlyRepository.findStudentForSchoolReport(PageRequest.of(0, PAGE_SIZE))).thenReturn(new Page() {
+
+ @Override
+ public Iterator iterator() {
+ return getContent().listIterator();
+ }
+
+ @Override
+ public int getNumber() {
+ return 1;
+ }
+
+ @Override
+ public int getSize() {
+ return 1;
+ }
+
+ @Override
+ public int getNumberOfElements() {
+ return 1;
+ }
+
+ @Override
+ public List getContent() {
+ return List.of(schoolReportEntity);
+ }
+
+ @Override
+ public boolean hasContent() {
+ return !getContent().isEmpty();
+ }
+
+ @Override
+ public Sort getSort() {
+ return null;
+ }
+
+ @Override
+ public boolean isFirst() {
+ return false;
+ }
+
+ @Override
+ public boolean isLast() {
+ return false;
+ }
+
+ @Override
+ public boolean hasNext() {
+ return false;
+ }
+
+ @Override
+ public boolean hasPrevious() {
+ return false;
+ }
+
+ @Override
+ public Pageable nextPageable() {
+ return null;
+ }
+
+ @Override
+ public Pageable previousPageable() {
+ return null;
+ }
+
+ @Override
+ public int getTotalPages() {
+ return getContent().size();
+ }
+
+ @Override
+ public long getTotalElements() {
+ return getContent().size();
+ }
+
+ @Override
+ public Page map(Function converter) {
+ return null;
+ }
+ });
+
+ when(this.webClient.post()).thenReturn(this.requestBodyUriMock);
+ when(this.requestBodyUriMock.uri(constants.getStudentsForSchoolDistribution())).thenReturn(this.requestBodyUriMock);
+ when(this.requestBodyUriMock.headers(any(Consumer.class))).thenReturn(this.requestBodyMock);
+ when(this.requestBodyMock.body(any(BodyInserter.class))).thenReturn(this.requestHeadersMock);
+ when(this.requestHeadersMock.retrieve()).thenReturn(this.responseMock);
+ when(this.responseMock.bodyToMono(new ParameterizedTypeReference>() {})).thenReturn(Mono.just(reportGradStudentDataList));
+
+ mockAccessToken();
+
+ var result = commonService.getSchoolYearEndReportGradStudentData(List.of(mincode));
+ assertThat(result).isNotEmpty();
+
+ result = commonService.getSchoolReportGradStudentData();
+ assertThat(result).isNotEmpty();
+ }
+
private void mockAccessToken() {
final TokenResponse tokenObject = new TokenResponse();
tokenObject.setAccess_token(MOCK_TOKEN);