|
10 | 10 | import ca.bc.gov.educ.studentdatacollection.api.exception.errors.ApiError;
|
11 | 11 | import ca.bc.gov.educ.studentdatacollection.api.model.v1.*;
|
12 | 12 | import ca.bc.gov.educ.studentdatacollection.api.repository.v1.*;
|
| 13 | +import ca.bc.gov.educ.studentdatacollection.api.struct.ReprocessSdcSchoolCollection; |
13 | 14 | import ca.bc.gov.educ.studentdatacollection.api.struct.v1.ReportZeroEnrollmentSdcSchoolCollection;
|
14 | 15 | import ca.bc.gov.educ.studentdatacollection.api.struct.v1.SdcFileSummary;
|
15 | 16 | import ca.bc.gov.educ.studentdatacollection.api.struct.v1.UnsubmitSdcSchoolCollection;
|
@@ -237,6 +238,39 @@ public SdcSchoolCollectionEntity unsubmitSchoolCollection(UnsubmitSdcSchoolColle
|
237 | 238 | return sdcSchoolCollectionEntity;
|
238 | 239 | }
|
239 | 240 |
|
| 241 | + @Transactional(propagation = Propagation.REQUIRES_NEW) |
| 242 | + public SdcSchoolCollectionEntity reprocessSchoolCollection(ReprocessSdcSchoolCollection reprocessData) { |
| 243 | + Optional<SdcSchoolCollectionEntity> sdcSchoolCollectionOptional = sdcSchoolCollectionRepository.findById(reprocessData.getSdcSchoolCollectionID()); |
| 244 | + SdcSchoolCollectionEntity sdcSchoolCollectionEntity = sdcSchoolCollectionOptional.orElseThrow(() -> new EntityNotFoundException(SdcSchoolCollectionEntity.class, SDC_SCHOOL_COLLECTION_ID_KEY, reprocessData.getSdcSchoolCollectionID().toString())); |
| 245 | + |
| 246 | + if(StringUtils.equals(sdcSchoolCollectionEntity.getSdcSchoolCollectionStatusCode(), SdcSchoolCollectionStatus.P_DUP_POST.getCode()) |
| 247 | + || StringUtils.equals(sdcSchoolCollectionEntity.getSdcSchoolCollectionStatusCode(), SdcSchoolCollectionStatus.P_DUP_VRFD.getCode())) { |
| 248 | + ApiError error = ApiError.builder().timestamp(LocalDateTime.now()).message(INVALID_PAYLOAD_MSG).status(BAD_REQUEST).build(); |
| 249 | + var validationError = ValidationUtil.createFieldError(SDC_SCHOOL_COLLECTION_ID_KEY, reprocessData.getSdcSchoolCollectionID(), "Cannot reprocess SDC School Collection that is in or beyond provincial duplicates."); |
| 250 | + List<FieldError> fieldErrorList = new ArrayList<>(); |
| 251 | + fieldErrorList.add(validationError); |
| 252 | + error.addValidationErrors(fieldErrorList); |
| 253 | + throw new InvalidPayloadException(error); |
| 254 | + } |
| 255 | + |
| 256 | + sdcSchoolCollectionEntity.getSDCSchoolStudentEntities().forEach(sdcSchoolCollectionStudentEntity -> { |
| 257 | + if (!StringUtils.equals(sdcSchoolCollectionStudentEntity.getSdcSchoolCollectionStudentStatusCode(), SdcSchoolStudentStatus.DELETED.getCode())) { |
| 258 | + TransformUtil.clearCalculatedFields(sdcSchoolCollectionStudentEntity, true); |
| 259 | + sdcSchoolCollectionStudentEntity.setSdcSchoolCollectionStudentStatusCode(SdcSchoolStudentStatus.LOADED.getCode()); |
| 260 | + sdcSchoolCollectionStudentEntity.setUpdateDate(LocalDateTime.now()); |
| 261 | + sdcSchoolCollectionStudentEntity.setUpdateUser(reprocessData.getUpdateUser()); |
| 262 | + } |
| 263 | + }); |
| 264 | + |
| 265 | + sdcSchoolCollectionStudentStorageService.saveAllSDCStudentsWithHistory(sdcSchoolCollectionEntity.getSDCSchoolStudentEntities().stream().toList()); |
| 266 | + |
| 267 | + sdcSchoolCollectionEntity.setUpdateDate(LocalDateTime.now()); |
| 268 | + sdcSchoolCollectionEntity.setUpdateUser(reprocessData.getUpdateUser()); |
| 269 | + saveSdcSchoolCollectionWithHistory(sdcSchoolCollectionEntity); |
| 270 | + |
| 271 | + return sdcSchoolCollectionEntity; |
| 272 | + } |
| 273 | + |
240 | 274 | @Transactional(propagation = Propagation.REQUIRES_NEW)
|
241 | 275 | public SdcSchoolCollectionEntity reportZeroEnrollment(ReportZeroEnrollmentSdcSchoolCollection reportZeroEnrollmentData) {
|
242 | 276 | Optional<SdcSchoolCollectionEntity> sdcSchoolCollectionOptional = sdcSchoolCollectionRepository.findById(reportZeroEnrollmentData.getSdcSchoolCollectionID());
|
|
0 commit comments