diff --git a/api/pom.xml b/api/pom.xml
index 9f431e35..6391bf15 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -6,7 +6,7 @@
ca.bc.gov.educ
educ-grad-student-api
- 1.8.56
+ 1.8.57
educ-grad-student-api
Student Demographics API for GRAD team
diff --git a/api/src/main/java/ca/bc/gov/educ/api/gradstudent/controller/GraduationStatusController.java b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/controller/GraduationStatusController.java
index 2638e05c..69e94364 100644
--- a/api/src/main/java/ca/bc/gov/educ/api/gradstudent/controller/GraduationStatusController.java
+++ b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/controller/GraduationStatusController.java
@@ -387,10 +387,10 @@ public ResponseEntity> getStudentsForAmalgamatedSchoolReport(@PathVar
@PreAuthorize(PermissionsConstants.UPDATE_GRADUATION_STUDENT)
@Operation(summary = "Update Student Flag ready for batch by Batch Job Type and Student IDs", description = "Update Student Flag ready for batch by Batch Job Type and Student IDs", tags = { "Batch Algorithm" })
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")})
- public ResponseEntity> updateStudentFlagReadyForBatchJobByStudentIDs(@PathVariable String batchJobType, @RequestBody StudentList sList) {
+ public ResponseEntity updateStudentFlagReadyForBatchJobByStudentIDs(@PathVariable String batchJobType, @RequestBody StudentList sList) {
logger.debug("Update Student Flag ready for batch by Student IDs and Batch Job Type - {}", batchJobType);
- List gradRecords = gradStatusService.updateStudentFlagReadyForBatchJobByStudentIDs(batchJobType, sList.getStudentids());
- return response.GET(gradRecords);
+ gradStatusService.updateStudentFlagReadyForBatchJobByStudentIDs(batchJobType, sList.getStudentids());
+ return response.GET("SUCCESS");
}
@GetMapping (EducGradStudentApiConstants.GRAD_STUDENT_NON_GRAD_REASON_BY_PEN)
diff --git a/api/src/main/java/ca/bc/gov/educ/api/gradstudent/messaging/jetstream/FetchGradStatusSubscriber.java b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/messaging/jetstream/FetchGradStatusSubscriber.java
index 07b0df3d..b82192f6 100644
--- a/api/src/main/java/ca/bc/gov/educ/api/gradstudent/messaging/jetstream/FetchGradStatusSubscriber.java
+++ b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/messaging/jetstream/FetchGradStatusSubscriber.java
@@ -5,8 +5,10 @@
import ca.bc.gov.educ.api.gradstudent.model.dc.Event;
import ca.bc.gov.educ.api.gradstudent.model.dc.GradStatusPayload;
import ca.bc.gov.educ.api.gradstudent.model.dto.GraduationStudentRecord;
+import ca.bc.gov.educ.api.gradstudent.model.dto.messaging.GraduationStudentRecordGradStatus;
import ca.bc.gov.educ.api.gradstudent.service.GraduationStatusService;
import ca.bc.gov.educ.api.gradstudent.util.EducGradStudentApiConstants;
+import ca.bc.gov.educ.api.gradstudent.util.EducGradStudentApiUtils;
import ca.bc.gov.educ.api.gradstudent.util.JsonUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import io.nats.client.*;
@@ -50,7 +52,7 @@ public void onMessage(Message message) {
try {
Event event = JsonUtil.getJsonObjectFromString(Event.class, eventString);
UUID stdId = JsonUtil.getJsonObjectFromString(UUID.class, event.getEventPayload());
- GraduationStudentRecord graduationStatus = graduationStatusService.getGraduationStatus(stdId);
+ GraduationStudentRecordGradStatus graduationStatus = graduationStatusService.getGraduationStatusProjection(stdId);
response = getResponse(graduationStatus);
} catch (Exception e) {
response = getErrorResponse(e);
@@ -61,10 +63,12 @@ public void onMessage(Message message) {
this.natsConnection.publish(message.getReplyTo(), response.getBytes());
}
- private String getResponse(GraduationStudentRecord graduationStudentRecord) throws JsonProcessingException {
+ private String getResponse(GraduationStudentRecordGradStatus graduationStudentRecord) throws JsonProcessingException {
GradStatusPayload gradStatusPayload = GradStatusPayload.builder()
.program(graduationStudentRecord.getProgram())
- .programCompletionDate(graduationStudentRecord.getProgramCompletionDate())
+ .programCompletionDate(
+ graduationStudentRecord.getProgramCompletionDate() != null ?
+ EducGradStudentApiUtils.formatDate(graduationStudentRecord.getProgramCompletionDate()) : null)
.build();
return JsonUtil.getJsonStringFromObject(gradStatusPayload);
}
diff --git a/api/src/main/java/ca/bc/gov/educ/api/gradstudent/model/dto/messaging/GraduationStudentRecordGradStatus.java b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/model/dto/messaging/GraduationStudentRecordGradStatus.java
new file mode 100644
index 00000000..b2fcc0cc
--- /dev/null
+++ b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/model/dto/messaging/GraduationStudentRecordGradStatus.java
@@ -0,0 +1,19 @@
+package ca.bc.gov.educ.api.gradstudent.model.dto.messaging;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.UUID;
+
+@Data
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+public class GraduationStudentRecordGradStatus {
+
+ private UUID studentID;
+ private String program;
+ private Date programCompletionDate;
+
+}
diff --git a/api/src/main/java/ca/bc/gov/educ/api/gradstudent/model/entity/GraduationStudentRecordView.java b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/model/entity/GraduationStudentRecordView.java
new file mode 100644
index 00000000..8a7c834d
--- /dev/null
+++ b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/model/entity/GraduationStudentRecordView.java
@@ -0,0 +1,27 @@
+package ca.bc.gov.educ.api.gradstudent.model.entity;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.UUID;
+
+public interface GraduationStudentRecordView {
+
+ public String getProgram();
+ public Date getProgramCompletionDate();
+ public String getGpa();
+ public String getHonoursStanding();
+ public String getRecalculateGradStatus();
+ public String getSchoolOfRecord();
+ public String getStudentGrade();
+ public String getStudentStatus();
+ public UUID getStudentID();
+ public String getSchoolAtGrad();
+ public String getRecalculateProjectedGrad();
+ public Long getBatchId();
+ public String getConsumerEducationRequirementMet();
+ public String getStudentCitizenship();
+ public Date getAdultStartDate();
+ public String getStudentProjectedGradData() ;
+ public LocalDateTime getCreateDate();
+ public LocalDateTime getUpdateDate();
+}
\ No newline at end of file
diff --git a/api/src/main/java/ca/bc/gov/educ/api/gradstudent/model/transformer/GraduationStatusTransformer.java b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/model/transformer/GraduationStatusTransformer.java
index a36d4d61..f59c1488 100644
--- a/api/src/main/java/ca/bc/gov/educ/api/gradstudent/model/transformer/GraduationStatusTransformer.java
+++ b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/model/transformer/GraduationStatusTransformer.java
@@ -1,15 +1,15 @@
package ca.bc.gov.educ.api.gradstudent.model.transformer;
-import ca.bc.gov.educ.api.gradstudent.model.dto.GraduationData;
-import ca.bc.gov.educ.api.gradstudent.model.dto.GraduationStudentRecord;
-import ca.bc.gov.educ.api.gradstudent.model.dto.GraduationStudentRecordDistribution;
-import ca.bc.gov.educ.api.gradstudent.model.dto.ProjectedRunClob;
+import ca.bc.gov.educ.api.gradstudent.model.dto.*;
import ca.bc.gov.educ.api.gradstudent.model.entity.GraduationStudentRecordEntity;
+import ca.bc.gov.educ.api.gradstudent.model.entity.GraduationStudentRecordView;
+import ca.bc.gov.educ.api.gradstudent.model.entity.ReportGradStudentDataEntity;
+import ca.bc.gov.educ.api.gradstudent.repository.ReportGradStudentDataRepository;
import ca.bc.gov.educ.api.gradstudent.util.EducGradStudentApiUtils;
import ca.bc.gov.educ.api.gradstudent.util.GradValidation;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import ca.bc.gov.educ.api.gradstudent.util.JsonTransformer;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+import org.apache.commons.lang3.StringUtils;
import org.modelmapper.ModelMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -18,6 +18,8 @@
import java.sql.Date;
import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
@Component
@@ -33,6 +35,12 @@ public class GraduationStatusTransformer {
@Autowired
GradValidation validation;
+ @Autowired
+ JsonTransformer jsonTransformer;
+
+ @Autowired
+ ReportGradStudentDataRepository reportGradStudentDataRepository;
+
public GraduationStudentRecord transformToDTOWithModifiedProgramCompletionDate(GraduationStudentRecordEntity gradStatusEntity) {
GraduationStudentRecord gradStatus = modelMapper.map(gradStatusEntity, GraduationStudentRecord.class);
gradStatus.setProgramCompletionDate(EducGradStudentApiUtils.parseDateFromString(gradStatusEntity.getProgramCompletionDate() != null ?
@@ -107,12 +115,7 @@ public GraduationStudentRecordDistribution tToDForDistribution(GraduationStudent
distObj.setStudentID(ent.getStudentID());
distObj.setStudentCitizenship(ent.getStudentCitizenship());
if(ent.getStudentGradData() != null) {
- GraduationData existingData = null;
- try {
- existingData = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).readValue(ent.getStudentGradData(), GraduationData.class);
- } catch (JsonProcessingException e) {
- logger.error(JSON_PARSING_ERROR, e.getMessage());
- }
+ GraduationData existingData = (GraduationData)jsonTransformer.unmarshall(ent.getStudentGradData(), GraduationData.class);
if(existingData != null) {
distObj.setPen(existingData.getGradStudent().getPen());
distObj.setLegalFirstName(existingData.getGradStudent().getLegalFirstName());
@@ -125,14 +128,14 @@ public GraduationStudentRecordDistribution tToDForDistribution(GraduationStudent
return distObj;
}
- public List tToDForBatch(Iterable gradStatusEntities) {
+ public List tToDForBatchView(List gradStatusEntities) {
List gradStatusList = new ArrayList<>();
- for (GraduationStudentRecordEntity gradStatusEntity : gradStatusEntities) {
+ Map reportGradStudentDataMap = convertGraduationStudentRecordViewToReportGradStudentDataMap(gradStatusEntities);
+ for (GraduationStudentRecordView gradStatusEntity : gradStatusEntities) {
GraduationStudentRecord gradStatus = modelMapper.map(gradStatusEntity, GraduationStudentRecord.class);
- logger.debug("GraduationStudentRecordEntity {} with database program completion date {}", gradStatusEntity.getPen(), gradStatusEntity.getProgramCompletionDate());
gradStatus.setProgramCompletionDate(EducGradStudentApiUtils.formatDate(gradStatusEntity.getProgramCompletionDate(), "yyyy/MM"));
+ populatePenAndLegalNamesAndNonGradReasons(gradStatus, reportGradStudentDataMap);
logger.debug("GraduationStudentRecord {} with trax program completion date {}", gradStatus.getPen(), gradStatus.getProgramCompletionDate());
- populatePenAndLegalNamesAndNonGradReasons(gradStatus);
gradStatus.setStudentCitizenship(gradStatusEntity.getStudentCitizenship());
gradStatus.setStudentGradData(null);
gradStatus.setCreateDate((gradStatusEntity.getCreateDate()));
@@ -142,20 +145,17 @@ public List tToDForBatch(Iterable tToDForAmalgamation(Iterable gradStatusEntities, String type) {
+ public List tToDForAmalgamation(List gradStatusEntities, String type) {
List results = new ArrayList<>();
- for (GraduationStudentRecordEntity gradStatusEntity : gradStatusEntities) {
+ Map reportGradStudentDataMap = convertGraduationStudentRecordViewToReportGradStudentDataMap(gradStatusEntities);
+ for (GraduationStudentRecordView gradStatusEntity : gradStatusEntities) {
GraduationStudentRecord gradStatus = modelMapper.map(gradStatusEntity, GraduationStudentRecord.class);
gradStatus.setProgramCompletionDate(EducGradStudentApiUtils.parseTraxDate(gradStatusEntity.getProgramCompletionDate() != null ? gradStatusEntity.getProgramCompletionDate().toString():null));
- populatePenAndLegalNamesAndNonGradReasons(gradStatus);
+ populatePenAndLegalNamesAndNonGradReasons(gradStatus, reportGradStudentDataMap);
if(gradStatus.getStudentProjectedGradData() != null) {
- try {
- ProjectedRunClob existingData = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).readValue(gradStatus.getStudentProjectedGradData(), ProjectedRunClob.class);
- if((!existingData.isGraduated() && type.equalsIgnoreCase("TVRNONGRAD")) || (existingData.isGraduated() && type.equalsIgnoreCase("TVRGRAD"))) {
- results.add(gradStatus);
- }
- } catch (JsonProcessingException e) {
- logger.error(JSON_PARSING_ERROR ,e.getMessage());
+ ProjectedRunClob existingData = (ProjectedRunClob)jsonTransformer.unmarshall(gradStatus.getStudentProjectedGradData(), ProjectedRunClob.class);
+ if((!existingData.isGraduated() && type.equalsIgnoreCase("TVRNONGRAD")) || (existingData.isGraduated() && type.equalsIgnoreCase("TVRGRAD"))) {
+ results.add(gradStatus);
}
}
@@ -171,20 +171,23 @@ public List tToDForAmalgamation(Iterable gr
return results.stream().map(GraduationStudentRecord::getStudentID).toList();
}
- private void populatePenAndLegalNamesAndNonGradReasons(GraduationStudentRecord gradStatus) {
- if(gradStatus.getStudentGradData() != null) {
- GraduationData existingData = null;
- try {
- existingData = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).readValue(gradStatus.getStudentGradData(), GraduationData.class);
- } catch (JsonProcessingException e) {
- logger.error(JSON_PARSING_ERROR, e.getMessage());
- }
- if (existingData != null) {
- gradStatus.setPen(existingData.getGradStudent().getPen());
- gradStatus.setLegalFirstName(existingData.getGradStudent().getLegalFirstName());
- gradStatus.setLegalMiddleNames(existingData.getGradStudent().getLegalMiddleNames());
- gradStatus.setLegalLastName(existingData.getGradStudent().getLegalLastName());
- gradStatus.setNonGradReasons(existingData.getNonGradReasons());
+ private Map convertGraduationStudentRecordViewToReportGradStudentDataMap(List gradStatusEntities) {
+ List uuids = gradStatusEntities.stream().map(GraduationStudentRecordView::getStudentID).toList();
+ List reportGradStudentData = reportGradStudentDataRepository.findReportGradStudentDataEntityByGraduationStudentRecordIdInOrderByMincodeAscSchoolNameAscLastNameAsc(uuids);
+ return reportGradStudentData.stream().collect(Collectors.toMap(ReportGradStudentDataEntity::getGraduationStudentRecordId, Function.identity()));
+ }
+
+ private void populatePenAndLegalNamesAndNonGradReasons(GraduationStudentRecord gradStatus, Map reportGradStudentDataMap) {
+ ReportGradStudentDataEntity existingData = reportGradStudentDataMap.get(gradStatus.getStudentID());
+ if (existingData != null) {
+ gradStatus.setPen(existingData.getPen());
+ gradStatus.setLegalFirstName(existingData.getFirstName());
+ gradStatus.setLegalMiddleNames(existingData.getMiddleName());
+ gradStatus.setLegalLastName(existingData.getLastName());
+ if (StringUtils.isNotBlank(existingData.getNonGradReasons())) {
+ TypeFactory typeFactory = jsonTransformer.getTypeFactory();
+ List nonGradReasons = (List) jsonTransformer.unmarshall(existingData.getNonGradReasons(), typeFactory.constructCollectionType(List.class, GradRequirement.class));
+ gradStatus.setNonGradReasons(nonGradReasons);
}
}
}
diff --git a/api/src/main/java/ca/bc/gov/educ/api/gradstudent/repository/GraduationStudentRecordRepository.java b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/repository/GraduationStudentRecordRepository.java
index 4cc26667..5d34fecd 100644
--- a/api/src/main/java/ca/bc/gov/educ/api/gradstudent/repository/GraduationStudentRecordRepository.java
+++ b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/repository/GraduationStudentRecordRepository.java
@@ -2,6 +2,7 @@
import ca.bc.gov.educ.api.gradstudent.model.dto.BatchGraduationStudentRecord;
import ca.bc.gov.educ.api.gradstudent.model.entity.GraduationStudentRecordEntity;
+import ca.bc.gov.educ.api.gradstudent.model.entity.GraduationStudentRecordView;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
@@ -39,16 +40,14 @@ public interface GraduationStudentRecordRepository extends JpaRepository findStudentWithFilter(String gradProgram,String schoolOfRecord, Pageable paging);
- List findByStudentIDIn(List studentIds);
+ List findByStudentIDIn(List studentIds);
@Query("select c.studentID from GraduationStudentRecordEntity c where c.programCompletionDate is null and c.studentStatus='CUR' and (c.studentGrade='AD' or c.studentGrade='12')")
Page findStudentsForYearlyDistribution(Pageable page);
- @Query("select c from GraduationStudentRecordEntity c where c.schoolOfRecord=:schoolOfRecord and c.studentStatus='CUR'")
- List findBySchoolOfRecord(String schoolOfRecord);
+ List findBySchoolOfRecordAndStudentStatus(String schoolOfRecord, String studentStatus);
- @Query("select c from GraduationStudentRecordEntity c where c.schoolOfRecord=:schoolOfRecord and c.studentStatus='CUR' and (c.studentGrade='AD' or c.studentGrade='12')")
- List findBySchoolOfRecordAmalgamated(String schoolOfRecord);
+ List findBySchoolOfRecordAndStudentStatusAndStudentGradeIn(String schoolOfRecord, String studentStatus, List studentGrade);
// Data Conversion
@Modifying
@@ -91,4 +90,15 @@ void updateStudentGuidPenXrefRecord(
@Modifying
@Query( "update GraduationStudentRecordEntity e set e.recalculateProjectedGrad = 'Y' where e.studentStatus = 'CUR' and e.programCompletionDate is null and (e.studentGrade = '12' or e.studentGrade = 'AD')")
void updateGradStudentRecalcFlagsForCurrentStudentsWithNullCompletion();
+
+ /**
+ * Find a GraduationStudentRecord By Student ID using generics. Pass an object with the
+ * same subset of field names, getters/setters of GraduationStudentRecordEntity to return
+ * objects with a subset of values. More info: https://docs.spring.io/spring-data/jpa/reference/repositories/projections.html
+ * @param studentId the student ID
+ * @param type The class type of the object you wish to use
+ * @return
+ * @param
+ */
+ T findByStudentID(UUID studentId, Class type);
}
diff --git a/api/src/main/java/ca/bc/gov/educ/api/gradstudent/service/GradStudentService.java b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/service/GradStudentService.java
index 41179c08..9472a754 100644
--- a/api/src/main/java/ca/bc/gov/educ/api/gradstudent/service/GradStudentService.java
+++ b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/service/GradStudentService.java
@@ -2,6 +2,7 @@
import ca.bc.gov.educ.api.gradstudent.model.dto.*;
import ca.bc.gov.educ.api.gradstudent.model.entity.GraduationStudentRecordEntity;
+import ca.bc.gov.educ.api.gradstudent.model.entity.GraduationStudentRecordView;
import ca.bc.gov.educ.api.gradstudent.model.transformer.GraduationStatusTransformer;
import ca.bc.gov.educ.api.gradstudent.repository.GraduationStudentRecordRepository;
import ca.bc.gov.educ.api.gradstudent.util.EducGradStudentApiConstants;
@@ -221,7 +222,7 @@ private List buildPartitions(List studentLists, Stri
for (int i = 0; i < partitions.size(); i++) {
List subList = partitions.get(i);
logger.debug(" sub list length {} par {}", subList.size(), i);
- List gradList = graduationStatusRepository.findByStudentIDIn(subList);
+ List gradList = graduationStatusRepository.findByStudentIDIn(subList);
if (!gradList.isEmpty()) {
gradList.forEach(st -> {
GradSearchStudent gradStu = populateGradStudent(st, accessToken);
@@ -273,9 +274,9 @@ private void getSearchCriteria(String value, String value2, String paramterType,
if(StringUtils.isNotBlank(value) && StringUtils.isNotBlank(value2)) {
criteria = SearchCriteria.builder().condition(Condition.AND).key(paramterType).operation(FilterOperation.BETWEEN).value(value + "," + value2).valueType(ValueType.DATE).build();
}
- }else if (paramterType.equalsIgnoreCase("studentID")) {
+ } else if (paramterType.equalsIgnoreCase("studentID")) {
criteria = SearchCriteria.builder().key(paramterType).operation(FilterOperation.IN).value(value).valueType(ValueType.UUID).condition(Condition.AND).build();
- }else {
+ } else {
if(StringUtils.isNotBlank(value)) {
if(StringUtils.contains(value,"*")) {
criteria = SearchCriteria.builder().key(paramterType).operation(FilterOperation.STARTS_WITH_IGNORE_CASE).value(StringUtils.strip(value,"*")).valueType(ValueType.STRING).condition(Condition.AND).build();
@@ -290,21 +291,32 @@ private void getSearchCriteria(String value, String value2, String paramterType,
private GradSearchStudent populateGradStudent(GraduationStudentRecordEntity gradRecord, String accessToken) {
GradSearchStudent gradStu = new GradSearchStudent();
BeanUtils.copyProperties(gradRecord, gradStu);
- Student studentPen = webClient.get().uri(String.format(constants.getPenStudentApiByStudentIdUrl(), gradRecord.getStudentID()))
- .headers(h -> {
- h.setBearerAuth(accessToken);
- h.set(EducGradStudentApiConstants.CORRELATION_ID, ThreadLocalStateUtil.getCorrelationID());
- })
- .retrieve().bodyToMono(Student.class).block();
+ return populateGradStudent(gradStu, accessToken);
+ }
+
+ private GradSearchStudent populateGradStudent(GraduationStudentRecordView gradRecord, String accessToken) {
+ GradSearchStudent gradStu = new GradSearchStudent();
+ BeanUtils.copyProperties(gradRecord, gradStu);
+ gradStu.setStudentID(gradRecord.getStudentID().toString());
+ return populateGradStudent(gradStu, accessToken);
+ }
+
+ private GradSearchStudent populateGradStudent(GradSearchStudent gradStu, String accessToken) {
+ Student studentPen = webClient.get().uri(String.format(constants.getPenStudentApiByStudentIdUrl(), gradStu.getStudentID()))
+ .headers(h -> {
+ h.setBearerAuth(accessToken);
+ h.set(EducGradStudentApiConstants.CORRELATION_ID, ThreadLocalStateUtil.getCorrelationID());
+ })
+ .retrieve().bodyToMono(Student.class).block();
if(studentPen != null) {
BeanUtils.copyProperties(studentPen, gradStu);
}
School school = webClient.get().uri(String.format(constants.getSchoolByMincodeUrl(), gradStu.getSchoolOfRecord()))
- .headers(h -> {
- h.setBearerAuth(accessToken);
- h.set(EducGradStudentApiConstants.CORRELATION_ID, ThreadLocalStateUtil.getCorrelationID());
- })
- .retrieve().bodyToMono(School.class).block();
+ .headers(h -> {
+ h.setBearerAuth(accessToken);
+ h.set(EducGradStudentApiConstants.CORRELATION_ID, ThreadLocalStateUtil.getCorrelationID());
+ })
+ .retrieve().bodyToMono(School.class).block();
if (school != null) {
gradStu.setSchoolOfRecordName(school.getSchoolName());
gradStu.setSchoolOfRecordindependentAffiliation(school.getIndependentAffiliation());
diff --git a/api/src/main/java/ca/bc/gov/educ/api/gradstudent/service/GraduationStatusService.java b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/service/GraduationStatusService.java
index ce14f480..20c51cc2 100644
--- a/api/src/main/java/ca/bc/gov/educ/api/gradstudent/service/GraduationStatusService.java
+++ b/api/src/main/java/ca/bc/gov/educ/api/gradstudent/service/GraduationStatusService.java
@@ -5,6 +5,7 @@
import ca.bc.gov.educ.api.gradstudent.constant.Generated;
import ca.bc.gov.educ.api.gradstudent.exception.EntityNotFoundException;
import ca.bc.gov.educ.api.gradstudent.model.dto.*;
+import ca.bc.gov.educ.api.gradstudent.model.dto.messaging.GraduationStudentRecordGradStatus;
import ca.bc.gov.educ.api.gradstudent.model.entity.*;
import ca.bc.gov.educ.api.gradstudent.model.transformer.GradStudentCareerProgramTransformer;
import ca.bc.gov.educ.api.gradstudent.model.transformer.GradStudentOptionalProgramTransformer;
@@ -167,6 +168,20 @@ public GraduationStudentRecord getGraduationStatus(UUID studentID) throws Entity
throw new EntityNotFoundException(String.format("Student with ID: %s not found", studentID));
}
+ /**
+ * Returns a condensed version of GraduationStudentRecord without the CLOB etc
+ * @param studentID
+ * @return
+ * @throws EntityNotFoundException
+ */
+ public GraduationStudentRecordGradStatus getGraduationStatusProjection(UUID studentID) throws EntityNotFoundException {
+ GraduationStudentRecordGradStatus response = graduationStatusRepository.findByStudentID(studentID, GraduationStudentRecordGradStatus.class);
+ if (response != null) {
+ return response;
+ }
+ throw new EntityNotFoundException(String.format("Student with ID: %s not found", studentID));
+ }
+
@Transactional
@Retry(name = "generalpostcall")
public Pair saveGraduationStatus(UUID studentID, GraduationStudentRecord graduationStatus, Long batchId, String accessToken) throws JsonProcessingException {
@@ -1250,7 +1265,7 @@ public GraduationStudentRecord saveStudentRecordProjectedTVRRun(UUID studentID,
}
public List getStudentDataByStudentIDs(List studentIds) {
- return graduationStatusTransformer.tToDForBatch(graduationStatusRepository.findByStudentIDIn(studentIds));
+ return graduationStatusTransformer.tToDForBatchView(graduationStatusRepository.findByStudentIDIn(studentIds));
}
public List getStudentsForYearlyDistribution() {
@@ -1349,32 +1364,30 @@ private GraduationStudentRecord processReceivedStudent(GraduationStudentRecord e
}
public List getStudentsForSchoolReport(String schoolOfRecord) {
- return graduationStatusTransformer.tToDForBatch(graduationStatusRepository.findBySchoolOfRecord(schoolOfRecord));
+ return graduationStatusTransformer.tToDForBatchView(graduationStatusRepository.findBySchoolOfRecordAndStudentStatus(schoolOfRecord, "CUR"));
}
public List getStudentsForAmalgamatedSchoolReport(String schoolOfRecord,String type) {
- return graduationStatusTransformer.tToDForAmalgamation(graduationStatusRepository.findBySchoolOfRecordAmalgamated(schoolOfRecord),type);
+ return graduationStatusTransformer.tToDForAmalgamation(graduationStatusRepository.findBySchoolOfRecordAndStudentStatusAndStudentGradeIn(schoolOfRecord, "CUR", List.of("AD", "12")),type);
}
- public List updateStudentFlagReadyForBatchJobByStudentIDs(String batchJobType, List studentIDs) {
+ public void updateStudentFlagReadyForBatchJobByStudentIDs(String batchJobType, List studentIDs) {
logger.debug("updateStudentFlagReadyForBatchJobByStudentIDs");
- return studentIDs.stream()
- .map(stid -> updateStudentFlagReadyForBatchJob(stid, batchJobType))
- .filter(Objects::nonNull).collect(Collectors.toList());
+ for(UUID uuid: studentIDs) {
+ updateStudentFlagReadyForBatchJob(uuid, batchJobType);
+ }
}
- private GraduationStudentRecord updateStudentFlagReadyForBatchJob(UUID studentID, String batchJobType) {
+ private void updateStudentFlagReadyForBatchJob(UUID studentID, String batchJobType) {
logger.debug("updateStudentFlagReadyByJobType for studentID - {}", studentID);
- GraduationStudentRecord result = null;
Optional optional = graduationStatusRepository.findById(studentID);
if (optional.isPresent()) {
GraduationStudentRecordEntity entity = optional.get();
- result = saveBatchFlagsOfGraduationStudentRecord(entity, batchJobType);
+ saveBatchFlagsOfGraduationStudentRecord(entity, batchJobType);
}
- return result;
}
- private GraduationStudentRecord saveBatchFlagsOfGraduationStudentRecord(GraduationStudentRecordEntity entity, String batchJobType) {
+ private void saveBatchFlagsOfGraduationStudentRecord(GraduationStudentRecordEntity entity, String batchJobType) {
boolean isUpdated = false;
if (entity.getBatchId() != null) {
if (StringUtils.equals("REGALG", batchJobType)) {
@@ -1390,10 +1403,8 @@ private GraduationStudentRecord saveBatchFlagsOfGraduationStudentRecord(Graduati
}
if (isUpdated) {
graduationStatusRepository.save(entity);
- return graduationStatusTransformer.transformToDTOWithModifiedProgramCompletionDate(entity);
}
}
- return null;
}
private void resetBatchFlags(GraduationStudentRecordEntity gradEntity, boolean projectedRun) {
diff --git a/api/src/test/java/ca/bc/gov/educ/api/gradstudent/controller/GraduationStatusControllerTest.java b/api/src/test/java/ca/bc/gov/educ/api/gradstudent/controller/GraduationStatusControllerTest.java
index 7a5dc68b..e586471f 100644
--- a/api/src/test/java/ca/bc/gov/educ/api/gradstudent/controller/GraduationStatusControllerTest.java
+++ b/api/src/test/java/ca/bc/gov/educ/api/gradstudent/controller/GraduationStatusControllerTest.java
@@ -619,7 +619,7 @@ public void testUpdateStudentFlagReadyForBatchJobByStudentIDs() {
graduationStatus.setStudentGrade("12");
graduationStatus.setGpa("4");
- Mockito.when(graduationStatusService.updateStudentFlagReadyForBatchJobByStudentIDs(batchJobType, stList.getStudentids())).thenReturn(Arrays.asList(graduationStatus));
+ Mockito.doNothing().when(graduationStatusService).updateStudentFlagReadyForBatchJobByStudentIDs(batchJobType, stList.getStudentids());
graduationStatusController.updateStudentFlagReadyForBatchJobByStudentIDs(batchJobType, stList);
Mockito.verify(graduationStatusService).updateStudentFlagReadyForBatchJobByStudentIDs(batchJobType, stList.getStudentids());
}
diff --git a/api/src/test/java/ca/bc/gov/educ/api/gradstudent/service/GradStudentServiceTest.java b/api/src/test/java/ca/bc/gov/educ/api/gradstudent/service/GradStudentServiceTest.java
index 5ff85087..50f27a05 100644
--- a/api/src/test/java/ca/bc/gov/educ/api/gradstudent/service/GradStudentServiceTest.java
+++ b/api/src/test/java/ca/bc/gov/educ/api/gradstudent/service/GradStudentServiceTest.java
@@ -6,6 +6,7 @@
import ca.bc.gov.educ.api.gradstudent.messaging.jetstream.Subscriber;
import ca.bc.gov.educ.api.gradstudent.model.dto.*;
import ca.bc.gov.educ.api.gradstudent.model.entity.GraduationStudentRecordEntity;
+import ca.bc.gov.educ.api.gradstudent.model.entity.GraduationStudentRecordView;
import ca.bc.gov.educ.api.gradstudent.model.transformer.GraduationStatusTransformer;
import ca.bc.gov.educ.api.gradstudent.repository.GraduationStudentRecordRepository;
import ca.bc.gov.educ.api.gradstudent.util.EducGradStudentApiConstants;
@@ -34,13 +35,12 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
+import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Consumer;
import java.util.function.Function;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
@@ -340,13 +340,105 @@ public void testGetStudentFromStudentAPIGradOnly() {
graduationStatusEntity.setStudentGrade(stdGrade);
graduationStatusEntity.setProgram(program);
graduationStatusEntity.setSchoolOfRecord(mincode);
+
+ final GraduationStudentRecordView graduationStatusView = new GraduationStudentRecordView() {
+ @Override
+ public String getProgram() {
+ return program;
+ }
+
+ @Override
+ public Date getProgramCompletionDate() {
+ return null;
+ }
+
+ @Override
+ public String getGpa() {
+ return null;
+ }
+
+ @Override
+ public String getHonoursStanding() {
+ return null;
+ }
+
+ @Override
+ public String getRecalculateGradStatus() {
+ return null;
+ }
+
+ @Override
+ public String getSchoolOfRecord() {
+ return mincode;
+ }
+
+ @Override
+ public String getStudentGrade() {
+ return stdGrade;
+ }
+
+ @Override
+ public String getStudentStatus() {
+ return gradStatus;
+ }
+
+ @Override
+ public UUID getStudentID() {
+ return studentID;
+ }
+
+ @Override
+ public String getSchoolAtGrad() {
+ return null;
+ }
+
+ @Override
+ public String getRecalculateProjectedGrad() {
+ return null;
+ }
+
+ @Override
+ public Long getBatchId() {
+ return null;
+ }
+
+ @Override
+ public String getConsumerEducationRequirementMet() {
+ return null;
+ }
+
+ @Override
+ public String getStudentCitizenship() {
+ return null;
+ }
+
+ @Override
+ public Date getAdultStartDate() {
+ return null;
+ }
+
+ @Override
+ public String getStudentProjectedGradData() {
+ return null;
+ }
+
+ @Override
+ public LocalDateTime getCreateDate() {
+ return null;
+ }
+
+ @Override
+ public LocalDateTime getUpdateDate() {
+ return null;
+ }
+ };
List studentSubList = new ArrayList<>();
- studentSubList.add(graduationStatusEntity.getStudentID());
+ studentSubList.add(graduationStatusView.getStudentID());
when(this.graduationStatusRepository.findByStudentID(studentID)).thenReturn(graduationStatusEntity);
when(this.graduationStatusTransformer.transformToDTOWithModifiedProgramCompletionDate(graduationStatusEntity)).thenReturn(graduationStatus);
- when(this.graduationStatusRepository.findByStudentIDIn(studentSubList)).thenReturn(List.of(graduationStatusEntity));
+ when(this.graduationStatusRepository.findByStudentIDIn(studentSubList)).thenReturn(List.of(graduationStatusView));
RestResponsePage response = new RestResponsePage<>(List.of(student));
final ParameterizedTypeReference> studentResponseType = new ParameterizedTypeReference<>() {
};
diff --git a/api/src/test/java/ca/bc/gov/educ/api/gradstudent/service/GraduationStatusServiceTest.java b/api/src/test/java/ca/bc/gov/educ/api/gradstudent/service/GraduationStatusServiceTest.java
index 766ba3d1..275b7ee6 100644
--- a/api/src/test/java/ca/bc/gov/educ/api/gradstudent/service/GraduationStatusServiceTest.java
+++ b/api/src/test/java/ca/bc/gov/educ/api/gradstudent/service/GraduationStatusServiceTest.java
@@ -6,15 +6,12 @@
import ca.bc.gov.educ.api.gradstudent.messaging.jetstream.Publisher;
import ca.bc.gov.educ.api.gradstudent.messaging.jetstream.Subscriber;
import ca.bc.gov.educ.api.gradstudent.model.dto.*;
+import ca.bc.gov.educ.api.gradstudent.model.dto.messaging.GraduationStudentRecordGradStatus;
import ca.bc.gov.educ.api.gradstudent.model.entity.*;
import ca.bc.gov.educ.api.gradstudent.repository.*;
-import ca.bc.gov.educ.api.gradstudent.util.EducGradStudentApiConstants;
-import ca.bc.gov.educ.api.gradstudent.util.EducGradStudentApiUtils;
-import ca.bc.gov.educ.api.gradstudent.util.GradBusinessRuleException;
-import ca.bc.gov.educ.api.gradstudent.util.GradValidation;
+import ca.bc.gov.educ.api.gradstudent.util.*;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-import lombok.val;
import org.apache.commons.lang3.time.DateUtils;
import org.junit.After;
import org.junit.Before;
@@ -39,6 +36,7 @@
import reactor.core.publisher.Mono;
import java.sql.Date;
+import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -61,6 +59,7 @@ public class GraduationStatusServiceTest {
@MockBean GradStudentService gradStudentService;
@MockBean HistoryService historyService;
@Autowired GradStudentReportService gradStudentReportService;
+ @Autowired JsonTransformer jsonTransformer;
@MockBean GraduationStudentRecordRepository graduationStatusRepository;
@MockBean StudentOptionalProgramRepository gradStudentOptionalProgramRepository;
@MockBean StudentCareerProgramRepository gradStudentCareerProgramRepository;
@@ -142,6 +141,25 @@ public void testGetGraduationStatus_givenNotFound_ExpectEntityNotFoundExcetpion(
});
}
+ @Test
+ public void testGetGraduationStatusProjection_GivenValidProgramCompletionDate_ExpectTrue() throws EntityNotFoundException {
+ UUID studentID = UUID.randomUUID();
+ GraduationStudentRecordEntity graduationStatusEntity = new GraduationStudentRecordEntity();
+ graduationStatusEntity.setProgramCompletionDate(new java.util.Date());
+ when(graduationStatusRepository.findByStudentID(studentID, GraduationStudentRecordGradStatus.class)).thenReturn(new GraduationStudentRecordGradStatus(studentID, "2018-EN", new java.util.Date()));
+ GraduationStudentRecordGradStatus result = graduationStatusService.getGraduationStatusProjection(studentID);
+ assertNotNull(result);
+ }
+
+ @Test
+ public void testGetGraduationStatusProjection_givenNotFound_ExpectEntityNotFoundExcetpion() {
+ UUID studentID = UUID.randomUUID();
+ when(graduationStatusRepository.findByStudentID(studentID, GraduationStudentRecordGradStatus.class)).thenReturn(null);
+ assertThrows(EntityNotFoundException.class, () -> {
+ graduationStatusService.getGraduationStatusProjection(studentID);
+ });
+ }
+
@Test
public void testGetGraduationStatusForAlgorithm() {
// ID
@@ -2204,7 +2222,7 @@ public void testSaveStudentRecord_DistributionRun() {
public void testGetStudentDataByStudentIds() {
// ID
List sList = Arrays.asList(UUID.randomUUID());
- List histList = new ArrayList<>();
+ List histList = new ArrayList<>();
GradSearchStudent serObj = new GradSearchStudent();
serObj.setPen("123123");
@@ -2214,26 +2232,98 @@ public void testGetStudentDataByStudentIds() {
GraduationData gd = new GraduationData();
gd.setGradStudent(serObj);
- GraduationStudentRecordEntity graduationStatusEntity = new GraduationStudentRecordEntity();
- graduationStatusEntity.setStudentID(sList.get(0));
- graduationStatusEntity.setStudentStatus("A");
- try {
- graduationStatusEntity.setStudentGradData(new ObjectMapper().writeValueAsString(gd));
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- }
- graduationStatusEntity.setRecalculateGradStatus("Y");
- graduationStatusEntity.setProgram("2018-EN");
- graduationStatusEntity.setSchoolOfRecord("223333");
- graduationStatusEntity.setGpa("4");
- graduationStatusEntity.setBatchId(4000L);
- graduationStatusEntity.setPen("123123");
- graduationStatusEntity.setLegalFirstName("Asdad");
- graduationStatusEntity.setLegalMiddleNames("Adad");
- graduationStatusEntity.setLegalLastName("sadad");
- graduationStatusEntity.setProgramCompletionDate(new Date(System.currentTimeMillis()));
- histList.add(graduationStatusEntity);
+ GraduationStudentRecordView graduationStatusEntity = new GraduationStudentRecordView() {
+ @Override
+ public String getProgram() {
+ return null;
+ }
+
+ @Override
+ public java.util.Date getProgramCompletionDate() {
+ return null;
+ }
+
+ @Override
+ public String getGpa() {
+ return null;
+ }
+
+ @Override
+ public String getHonoursStanding() {
+ return null;
+ }
+
+ @Override
+ public String getRecalculateGradStatus() {
+ return null;
+ }
+
+ @Override
+ public String getSchoolOfRecord() {
+ return null;
+ }
+
+ @Override
+ public String getStudentGrade() {
+ return null;
+ }
+
+ @Override
+ public String getStudentStatus() {
+ return null;
+ }
+
+ @Override
+ public UUID getStudentID() {
+ return null;
+ }
+
+ @Override
+ public String getSchoolAtGrad() {
+ return null;
+ }
+
+ @Override
+ public String getRecalculateProjectedGrad() {
+ return null;
+ }
+
+ @Override
+ public Long getBatchId() {
+ return null;
+ }
+
+ @Override
+ public String getConsumerEducationRequirementMet() {
+ return null;
+ }
+
+ @Override
+ public String getStudentCitizenship() {
+ return null;
+ }
+
+ @Override
+ public java.util.Date getAdultStartDate() {
+ return null;
+ }
+
+ @Override
+ public String getStudentProjectedGradData() {
+ return null;
+ }
+
+ @Override
+ public LocalDateTime getCreateDate() {
+ return null;
+ }
+ @Override
+ public LocalDateTime getUpdateDate() {
+ return null;
+ }
+ };
+ histList.add(graduationStatusEntity);
when(graduationStatusRepository.findByStudentIDIn(sList)).thenReturn(histList);
List list = graduationStatusService.getStudentDataByStudentIDs(sList);
assertThat(list).isNotEmpty().hasSize(1);
@@ -2615,23 +2705,99 @@ public Page map(Function converter) {
@Test
public void testGetStudentsForSchoolReport() {
String mincode = "123213123";
- GraduationStudentRecordEntity graduationStatus = new GraduationStudentRecordEntity();
- graduationStatus.setStudentID(new UUID(1,1));
- graduationStatus.setSchoolOfRecord(mincode);
- GraduationData gradData = new GraduationData();
- GradSearchStudent gS = new GradSearchStudent();
- gS.setPen("123123123123");
- gS.setLegalFirstName("sadas");
- gS.setLegalMiddleNames("fdf");
- gS.setLegalLastName("rrw");
- gradData.setGradStudent(gS);
- graduationStatus.setStudentStatus("CUR");
- try {
- graduationStatus.setStudentGradData(new ObjectMapper().writeValueAsString(gradData));
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- }
- when(graduationStatusRepository.findBySchoolOfRecord(mincode)).thenReturn(List.of(graduationStatus));
+ GraduationStudentRecordView graduationStatus = new GraduationStudentRecordView() {
+
+ @Override
+ public String getProgram() {
+ return null;
+ }
+
+ @Override
+ public java.util.Date getProgramCompletionDate() {
+ return null;
+ }
+
+ @Override
+ public String getGpa() {
+ return null;
+ }
+
+ @Override
+ public String getHonoursStanding() {
+ return null;
+ }
+
+ @Override
+ public String getRecalculateGradStatus() {
+ return null;
+ }
+
+ @Override
+ public String getSchoolOfRecord() {
+ return mincode;
+ }
+
+ @Override
+ public String getStudentGrade() {
+ return "AD";
+ }
+
+ @Override
+ public String getStudentStatus() {
+ return "CUR";
+ }
+
+ @Override
+ public UUID getStudentID() {
+ return new UUID(1,1);
+ }
+
+ @Override
+ public String getSchoolAtGrad() {
+ return mincode;
+ }
+
+ @Override
+ public String getRecalculateProjectedGrad() {
+ return null;
+ }
+
+ @Override
+ public Long getBatchId() {
+ return null;
+ }
+
+ @Override
+ public String getConsumerEducationRequirementMet() {
+ return null;
+ }
+
+ @Override
+ public String getStudentCitizenship() {
+ return null;
+ }
+
+ @Override
+ public java.util.Date getAdultStartDate() {
+ return null;
+ }
+
+ @Override
+ public String getStudentProjectedGradData() {
+ return null;
+ }
+
+ @Override
+ public LocalDateTime getCreateDate() {
+ return null;
+ }
+
+ @Override
+ public LocalDateTime getUpdateDate() {
+ return null;
+ }
+ };
+ when(graduationStatusRepository.findBySchoolOfRecordAndStudentStatus(mincode, "CUR")).thenReturn(List.of(graduationStatus));
var result = graduationStatusService.getStudentsForSchoolReport(mincode);
assertThat(result).isNotNull().hasSize(1);
GraduationStudentRecord responseGraduationStatus = result.get(0);
@@ -2735,25 +2901,98 @@ private List amalgamatedReports(String type,boolean isGraduated) {
projectedRunClob.setGraduated(isGraduated);
projectedRunClob.setNonGradReasons(null);
- GraduationStudentRecordEntity graduationStatusEntity = new GraduationStudentRecordEntity();
- graduationStatusEntity.setStudentID(UUID.randomUUID());
- graduationStatusEntity.setStudentStatus("A");
- try {
- graduationStatusEntity.setStudentProjectedGradData(new ObjectMapper().writeValueAsString(projectedRunClob));
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- }
- graduationStatusEntity.setRecalculateGradStatus("Y");
- graduationStatusEntity.setProgram("2018-EN");
- graduationStatusEntity.setSchoolOfRecord("21313121");
- graduationStatusEntity.setGpa("4");
- graduationStatusEntity.setBatchId(4000L);
- graduationStatusEntity.setPen("123123");
- graduationStatusEntity.setLegalFirstName("Asdad");
- graduationStatusEntity.setLegalMiddleNames("Adad");
- graduationStatusEntity.setLegalLastName("sadad");
+ GraduationStudentRecordView graduationStatusEntity = new GraduationStudentRecordView() {
+ @Override
+ public String getProgram() {
+ return "2018-EN";
+ }
+
+ @Override
+ public java.util.Date getProgramCompletionDate() {
+ return null;
+ }
+
+ @Override
+ public String getGpa() {
+ return "4";
+ }
+
+ @Override
+ public String getHonoursStanding() {
+ return null;
+ }
+
+ @Override
+ public String getRecalculateGradStatus() {
+ return "Y";
+ }
+
+ @Override
+ public String getSchoolOfRecord() {
+ return "21313121";
+ }
+
+ @Override
+ public String getStudentGrade() {
+ return null;
+ }
+
+ @Override
+ public String getStudentStatus() {
+ return "A";
+ }
+
+ @Override
+ public UUID getStudentID() {
+ return UUID.randomUUID();
+ }
+
+ @Override
+ public String getSchoolAtGrad() {
+ return null;
+ }
- Mockito.when(graduationStatusRepository.findBySchoolOfRecordAmalgamated(mincode)).thenReturn(List.of(graduationStatusEntity));
+ @Override
+ public String getRecalculateProjectedGrad() {
+ return "Y";
+ }
+
+ @Override
+ public Long getBatchId() {
+ return 4000L;
+ }
+
+ @Override
+ public String getConsumerEducationRequirementMet() {
+ return null;
+ }
+
+ @Override
+ public String getStudentCitizenship() {
+ return "C";
+ }
+
+ @Override
+ public java.util.Date getAdultStartDate() {
+ return null;
+ }
+
+ @Override
+ public String getStudentProjectedGradData() {
+ return jsonTransformer.marshall(projectedRunClob);
+ }
+
+ @Override
+ public LocalDateTime getCreateDate() {
+ return null;
+ }
+
+ @Override
+ public LocalDateTime getUpdateDate() {
+ return null;
+ }
+ };
+ Mockito.when(graduationStatusRepository.findBySchoolOfRecordAndStudentStatusAndStudentGradeIn(mincode, "CUR", List.of("AD", "12"))).thenReturn(List.of(graduationStatusEntity));
return graduationStatusService.getStudentsForAmalgamatedSchoolReport(mincode,type);
}
@@ -2795,14 +3034,8 @@ public void testUpdateStudentFlagReadyForBatchJobByStudentIDs_when_relcalculateG
Mockito.when(graduationStatusRepository.findById(studentID1)).thenReturn(Optional.of(graduationStatusEntity1));
Mockito.when(graduationStatusRepository.findById(studentID2)).thenReturn(Optional.of(graduationStatusEntity2));
- val results = graduationStatusService.updateStudentFlagReadyForBatchJobByStudentIDs("REGALG", studentIDs);
- assertThat(results).hasSize(1);
-
- // result is updated
- GraduationStudentRecord result = results.get(0);
- assertThat(result.getStudentID()).isEqualTo(studentID1);
- assertThat(result.getRecalculateGradStatus()).isEqualTo("Y");
- assertThat(result.getRecalculateProjectedGrad()).isEqualTo("Y");
+ graduationStatusService.updateStudentFlagReadyForBatchJobByStudentIDs("REGALG", studentIDs);
+ assertThat(studentIDs).hasSize(2);
}
@Test
@@ -2842,14 +3075,8 @@ public void testUpdateStudentFlagReadyForBatchJobByStudentIDs_when_relcalculateP
Mockito.when(graduationStatusRepository.findById(studentID1)).thenReturn(Optional.of(graduationStatusEntity1));
Mockito.when(graduationStatusRepository.findById(studentID2)).thenReturn(Optional.of(graduationStatusEntity2));
- val results = graduationStatusService.updateStudentFlagReadyForBatchJobByStudentIDs("TVRRUN", studentIDs);
- assertThat(results).hasSize(1);
-
- // result is updated
- GraduationStudentRecord result = results.get(0);
- assertThat(result.getStudentID()).isEqualTo(studentID2);
- assertThat(result.getRecalculateGradStatus()).isEqualTo("Y");
- assertThat(result.getRecalculateProjectedGrad()).isEqualTo("Y");
+ graduationStatusService.updateStudentFlagReadyForBatchJobByStudentIDs("TVRRUN", studentIDs);
+ assertThat(studentIDs).hasSize(2);
}
@Test
@@ -2887,8 +3114,8 @@ public void testUpdateStudentFlagReadyForBatchJobByStudentIDs_when_batchID_is_nu
Mockito.when(graduationStatusRepository.findById(studentID1)).thenReturn(Optional.of(graduationStatusEntity1));
Mockito.when(graduationStatusRepository.findById(studentID2)).thenReturn(Optional.of(graduationStatusEntity2));
- val results = graduationStatusService.updateStudentFlagReadyForBatchJobByStudentIDs("TVRRUN", studentIDs);
- assertThat(results).isEmpty();
+ graduationStatusService.updateStudentFlagReadyForBatchJobByStudentIDs("TVRRUN", studentIDs);
+ assertThat(studentIDs).isNotEmpty();
}
@Test