1919
2020import static ca .bc .gov .educ .api .pen .replication .constants .EventType .UPDATE_STUDENT_COURSES ;
2121
22- /**
23- * The type Student update service.
24- */
2522@ Service
2623@ Slf4j
2724public class StudentCourseUpdateService extends BaseService <StudentCourseUpdate > {
@@ -50,7 +47,8 @@ public void processEvent(final StudentCourseUpdate studentCourseUpdate, final Ev
5047 var studentPEN = restUtils .getStudentPen (studentCourseUpdate .getStudentID ());
5148 val existingTraxStudentRecord = this .traxStudentService .findTraxStudentByPen (StringUtils .rightPad (studentPEN , 10 ));
5249 if (existingTraxStudentRecord .isPresent ()) {
53- this .traxStudentCourseService .deletePriorAndSaveTraxStudentCourses (studentPEN , getStudentCourseEntityList (studentPEN , studentCourseUpdate .getStudentCourses ()));
50+ var existingCourses = this .traxStudentCourseService .findTraxStudentCoursesByPen (studentPEN );
51+ this .traxStudentCourseService .deletePriorAndSaveTraxStudentCourses (studentPEN , getStudentCourseEntityList (studentPEN , studentCourseUpdate .getStudentCourses (), existingCourses ));
5452 log .info ("Processing choreography update event with ID {} :: payload is: {}" , event .getEventId (), studentCourseUpdate );
5553 }else {
5654 log .info ("Student course event not processed {} :: payload is: {} :: student does not yet exist in TRAX STUDENT_MASTER" , event .getEventId (), studentCourseUpdate );
@@ -59,7 +57,7 @@ public void processEvent(final StudentCourseUpdate studentCourseUpdate, final Ev
5957 this .updateEvent (event );
6058 }
6159
62- private List <TraxStudentCourseEntity > getStudentCourseEntityList (String studentPEN , List <StudentCourse > studentCourse ) {
60+ private List <TraxStudentCourseEntity > getStudentCourseEntityList (String studentPEN , List <StudentCourse > studentCourse , List < TraxStudentCourseEntity > existingTraxStudentCourses ) {
6361 var entityList = new ArrayList <TraxStudentCourseEntity >();
6462 studentCourse .forEach (student -> {
6563 TraxStudentCourseEntity traxStudentCourseEntity = new TraxStudentCourseEntity ();
@@ -69,13 +67,24 @@ private List<TraxStudentCourseEntity> getStudentCourseEntityList(String studentP
6967 traxStudentCourseEntity .setFinalLetterGrade (student .getFinalLetterGrade ());
7068 traxStudentCourseEntity .setFinalPercentage (student .getFinalPercent () != null ? student .getFinalPercent ().toString () : null );
7169 traxStudentCourseEntity .setNumberOfCredits (student .getCredits () != null ? student .getCredits ().toString () : null );
72- // traxStudentCourseEntity.setStudyType();
73- // traxStudentCourseEntity.setUsedForGrad();
70+ setStudyTypeAndUsedForGradFields (traxStudentCourseEntity , existingTraxStudentCourses );
7471 entityList .add (traxStudentCourseEntity );
7572 });
7673 return entityList ;
7774 }
7875
76+ private void setStudyTypeAndUsedForGradFields (TraxStudentCourseEntity traxStudentCourseEntity , List <TraxStudentCourseEntity > existingTraxStudentCourses ){
77+ for (TraxStudentCourseEntity course : existingTraxStudentCourses ){
78+ if (course .getStudXcrseId ().getCourseCode ().equals (traxStudentCourseEntity .getStudXcrseId ().getCourseCode ()) &&
79+ course .getStudXcrseId ().getCourseLevel ().equals (traxStudentCourseEntity .getStudXcrseId ().getCourseLevel ()) &&
80+ course .getStudXcrseId ().getCourseSession ().equals (traxStudentCourseEntity .getStudXcrseId ().getCourseSession ())){
81+ traxStudentCourseEntity .setStudyType (course .getStudyType ());
82+ traxStudentCourseEntity .setUsedForGrad (course .getUsedForGrad ());
83+ break ;
84+ }
85+ }
86+ }
87+
7988 private void setCourseCodeAndLevel (TraxStudentCourseEntity traxStudentCourseEntity , String courseID ){
8089 var optionalCourse = restUtils .getCoreg39CourseByID (courseID );
8190 if (optionalCourse .isPresent ()) {
0 commit comments