diff --git a/api/src/main/java/ca/bc/gov/educ/eas/api/service/v1/AssessmentStudentService.java b/api/src/main/java/ca/bc/gov/educ/eas/api/service/v1/AssessmentStudentService.java index 40488ec..5fb0f3a 100644 --- a/api/src/main/java/ca/bc/gov/educ/eas/api/service/v1/AssessmentStudentService.java +++ b/api/src/main/java/ca/bc/gov/educ/eas/api/service/v1/AssessmentStudentService.java @@ -38,6 +38,10 @@ public AssessmentStudentEntity getStudentByID(UUID assessmentStudentID) { ); } + public Optional getStudentByAssessmentIDAndStudentID(UUID assessmentID, UUID studentID) { + return assessmentStudentRepository.findByAssessmentEntity_AssessmentIDAndStudentID(assessmentID, studentID); + } + @Transactional(propagation = Propagation.REQUIRES_NEW) public AssessmentStudentEntity updateStudent(AssessmentStudentEntity assessmentStudentEntity) { AssessmentStudentEntity currentAssessmentStudentEntity = assessmentStudentRepository.findById(assessmentStudentEntity.getAssessmentStudentID()).orElseThrow(() -> diff --git a/api/src/main/java/ca/bc/gov/educ/eas/api/service/v1/StudentRegistrationOrchestrationService.java b/api/src/main/java/ca/bc/gov/educ/eas/api/service/v1/StudentRegistrationOrchestrationService.java index 98e55e3..519bcbd 100644 --- a/api/src/main/java/ca/bc/gov/educ/eas/api/service/v1/StudentRegistrationOrchestrationService.java +++ b/api/src/main/java/ca/bc/gov/educ/eas/api/service/v1/StudentRegistrationOrchestrationService.java @@ -1,6 +1,7 @@ package ca.bc.gov.educ.eas.api.service.v1; import ca.bc.gov.educ.eas.api.mappers.v1.AssessmentStudentMapper; +import ca.bc.gov.educ.eas.api.model.v1.AssessmentStudentEntity; import ca.bc.gov.educ.eas.api.model.v1.EasSagaEntity; import ca.bc.gov.educ.eas.api.struct.v1.AssessmentStudent; import lombok.AccessLevel; @@ -8,6 +9,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.Optional; +import java.util.UUID; + @Service @Slf4j public class StudentRegistrationOrchestrationService { @@ -15,7 +19,6 @@ public class StudentRegistrationOrchestrationService { private static final AssessmentStudentMapper mapper = AssessmentStudentMapper.mapper; protected final SagaService sagaService; - //Inject Downstream Service @Getter(AccessLevel.PRIVATE) private final AssessmentStudentService assessmentStudentService; @@ -25,7 +28,12 @@ public StudentRegistrationOrchestrationService(AssessmentStudentService assessme } public void createNewStudentRegistration(AssessmentStudent assessmentStudent) { - assessmentStudentService.createStudent(mapper.toModel(assessmentStudent)); + Optional studentEntity = assessmentStudentService.getStudentByAssessmentIDAndStudentID(UUID.fromString(assessmentStudent.getAssessmentID()), UUID.fromString(assessmentStudent.getStudentID())); + if (studentEntity.isEmpty()) { + assessmentStudentService.createStudent(mapper.toModel(assessmentStudent)); + } else { + log.info("Student already exists in assessment {} ", assessmentStudent); + } } public void publishStudentRegistration(AssessmentStudent assessmentStudent, EasSagaEntity sagaEntity) {