Skip to content

Commit c5f4387

Browse files
Merge pull request #381 from bcgov/fix/GRAD2-3170
Changes to sync trax changes to GRAD based on new student status.
2 parents 550c9cd + 883e8c8 commit c5f4387

File tree

2 files changed

+23
-17
lines changed

2 files changed

+23
-17
lines changed

api/src/main/java/ca/bc/gov/educ/api/dataconversion/service/student/StudentGraduationUpdateBaseService.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ protected void handleAdultStartDate(StudentGradDTO currentStudent) {
5656

5757
protected boolean processSchoolOfRecordId(StudentGradDTO currentStudent, UUID value) {
5858
boolean isChanged = false;
59-
switch(currentStudent.getStudentStatus()) {
59+
String studentStatus = StringUtils.defaultIfEmpty(currentStudent.getNewStudentStatus(), currentStudent.getStudentStatus());
60+
switch(studentStatus) {
6061
case STUDENT_STATUS_CURRENT -> {
6162
// UpdData
6263
currentStudent.setNewSchoolOfRecordId(value);
@@ -94,7 +95,8 @@ protected boolean processSchoolOfRecordId(StudentGradDTO currentStudent, UUID va
9495

9596
protected boolean processStudentGrade(StudentGradDTO currentStudent, String value) {
9697
boolean isChanged = false;
97-
switch(currentStudent.getStudentStatus()) {
98+
String studentStatus = StringUtils.defaultIfEmpty(currentStudent.getNewStudentStatus(), currentStudent.getStudentStatus());
99+
switch(studentStatus) {
98100
case STUDENT_STATUS_CURRENT -> {
99101
// UpdData
100102
currentStudent.setNewStudentGrade(value);
@@ -134,7 +136,8 @@ protected boolean processStudentGrade(StudentGradDTO currentStudent, String valu
134136

135137
protected boolean processGraduationProgram(StudentGradDTO currentStudent, String pen, String gradProgram, String accessToken) {
136138
boolean isChanged = false;
137-
switch(currentStudent.getStudentStatus()) {
139+
String studentStatus = StringUtils.defaultIfEmpty(currentStudent.getNewStudentStatus(), currentStudent.getStudentStatus());
140+
switch(studentStatus) {
138141
case STUDENT_STATUS_CURRENT -> {
139142
if (!currentStudent.isGraduated() || currentStudent.isSCCP()) {
140143
// UpdData
@@ -173,7 +176,8 @@ protected boolean processGraduationProgram(StudentGradDTO currentStudent, String
173176

174177
protected boolean processSlpDate(StudentGradDTO currentStudent, String value) {
175178
boolean isChanged = false;
176-
switch(currentStudent.getStudentStatus()) {
179+
String studentStatus = StringUtils.defaultIfEmpty(currentStudent.getNewStudentStatus(), currentStudent.getStudentStatus());
180+
switch(studentStatus) {
177181
case STUDENT_STATUS_CURRENT -> {
178182
if (!currentStudent.isGraduated()) {
179183
// UpdData
@@ -209,7 +213,8 @@ protected boolean processSlpDate(StudentGradDTO currentStudent, String value) {
209213

210214
protected boolean processCitizenship(StudentGradDTO currentStudent, String value) {
211215
boolean isChanged = false;
212-
switch(currentStudent.getStudentStatus()) {
216+
String studentStatus = StringUtils.defaultIfEmpty(currentStudent.getNewStudentStatus(), currentStudent.getStudentStatus());
217+
switch(studentStatus) {
213218
case STUDENT_STATUS_CURRENT -> {
214219
// UpdData
215220
currentStudent.setNewCitizenship(value);

api/src/main/java/ca/bc/gov/educ/api/dataconversion/service/student/StudentGraduationUpdateEventService.java

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -70,16 +70,24 @@ public <T extends Object> void processEvent(T request, Event event) {
7070
public void processStudent(TraxGraduationUpdateDTO updateGrad, StudentGradDTO currentStudent, String accessToken) {
7171
boolean isChanged = false;
7272
log.info(" Process Student : studentID = {}, pen = {}", currentStudent.getStudentID(), updateGrad.getPen());
73+
74+
// Student Status - This step is moved to top to determine the update fields based on new status.
75+
String newStudentStatus = getGradStudentStatus(updateGrad.getStudentStatus(), updateGrad.getArchiveFlag());
76+
if (newStudentStatus != null) {
77+
processStudentStatus(currentStudent, newStudentStatus);
78+
log.info(" => student status : current = {}, request = {}", currentStudent.getStudentStatus(), currentStudent.getNewStudentStatus());
79+
isChanged = true;
80+
}
7381
// Processing order is important for the first 3 fields below.
7482
// 1. School of Record Guid
7583
if (updateGrad.getSchoolOfRecordId() != null) {
76-
isChanged = processSchoolOfRecordId(currentStudent, updateGrad.getSchoolOfRecordId());
84+
isChanged = processSchoolOfRecordId(currentStudent, updateGrad.getSchoolOfRecordId()) || isChanged;
7785
log.info(" => school of record id : current = {}, request = {}", currentStudent.getSchoolOfRecordId(), currentStudent.getNewSchoolOfRecordId());
7886
}
7987
// 2. Grad Program
8088
String gradProgram = getGradProgram(updateGrad.getGraduationRequirementYear(), currentStudent.getUpToDateSchoolOfRecordId(), null);
8189
if (gradProgram != null) {
82-
isChanged = processGraduationProgram(currentStudent, updateGrad.getPen(), gradProgram, accessToken);
90+
isChanged = processGraduationProgram(currentStudent, updateGrad.getPen(), gradProgram, accessToken) || isChanged;
8391
if (isChanged && StringUtils.isNotBlank(currentStudent.getNewProgram())) {
8492
log.info(" => grad program : current = {}, request = {}", currentStudent.getProgram(), currentStudent.getNewProgram());
8593
} else {
@@ -89,7 +97,7 @@ public void processStudent(TraxGraduationUpdateDTO updateGrad, StudentGradDTO cu
8997
// 3. SLP Date
9098
String slpDate = updateGrad.getSlpDateWithDefaultFormat();
9199
if (slpDate != null && "SCCP".equalsIgnoreCase(currentStudent.getUpToDateGradProgram())) {
92-
isChanged = processSlpDate(currentStudent, slpDate);
100+
isChanged = processSlpDate(currentStudent, slpDate) || isChanged;
93101
if (isChanged) {
94102
log.info(" => slp date : current = {}, request = {}", currentStudent.getGradDate(), slpDate);
95103
} else {
@@ -98,21 +106,14 @@ public void processStudent(TraxGraduationUpdateDTO updateGrad, StudentGradDTO cu
98106
}
99107
// 4. Student Grade
100108
if (StringUtils.isNotBlank(updateGrad.getStudentGrade())) {
101-
isChanged = processStudentGrade(currentStudent, updateGrad.getStudentGrade());
109+
isChanged = processStudentGrade(currentStudent, updateGrad.getStudentGrade()) || isChanged;
102110
log.info(" => student grade : current = {}, request = {}", currentStudent.getStudentGrade(), currentStudent.getNewStudentGrade());
103111
}
104112
// 5. Citizenship
105113
if (StringUtils.isNotBlank(updateGrad.getCitizenship())) {
106-
isChanged = processCitizenship(currentStudent, updateGrad.getCitizenship());
114+
isChanged = processCitizenship(currentStudent, updateGrad.getCitizenship()) || isChanged;
107115
log.info(" => student citizenship : current = {}, request = {}", currentStudent.getCitizenship(), currentStudent.getNewCitizenship());
108116
}
109-
String newStudentStatus = getGradStudentStatus(updateGrad.getStudentStatus(), updateGrad.getArchiveFlag());
110-
// 6. Student Status
111-
if (newStudentStatus != null) {
112-
processStudentStatus(currentStudent, newStudentStatus);
113-
log.info(" => student status : current = {}, request = {}", currentStudent.getStudentStatus(), currentStudent.getNewStudentStatus());
114-
isChanged = true;
115-
}
116117

117118
if (isChanged) {
118119
log.info(" Save Student : studentID = {}, pen = {}", currentStudent.getStudentID(), updateGrad.getPen());

0 commit comments

Comments
 (0)