use of ca.bc.gov.educ.penreg.api.struct.v1.reportstructs.ReportListItem in project EDUC-PEN-REG-BATCH-API by bcgov.
the class PenRequestBatchReportDataDecorator method toReportData.
/**
* To pen request batch student entity pen request batch student entity.
*
* @param data the saga data
* @return the pen request batch report data entity
*/
@Override
public PenRequestBatchReportData toReportData(final BasePenRequestBatchReturnFilesSagaData data) {
final var reportData = this.delegate.toReportData(data);
final List<ReportListItem> pendingList = new ArrayList<>();
final List<ReportListItem> newPenList = new ArrayList<>();
final List<ReportListItem> sysMatchedList = new ArrayList<>();
final List<ReportUserMatchedListItem> diffList = new ArrayList<>();
final List<ReportUserMatchedListItem> confirmedList = new ArrayList<>();
if (data != null && !CollectionUtils.isEmpty(data.getPenRequestBatchStudents())) {
final Map<String, Student> students = this.setStudents(data.getStudents());
for (final PenRequestBatchStudent penRequestBatchStudent : data.getPenRequestBatchStudents()) {
switch(Objects.requireNonNull(PenRequestBatchStudentStatusCodes.valueOfCode(penRequestBatchStudent.getPenRequestBatchStudentStatusCode()))) {
case DUPLICATE:
case ERROR:
case REPEAT:
case INFOREQ:
case FIXABLE:
val issues = data.getPenRequestBatchStudentValidationIssues().get(penRequestBatchStudent.getPenRequestBatchStudentID());
val pendingItem = listItemMapper.toReportListItem(penRequestBatchStudent, issues);
if (!"Duplicate".equals(pendingItem.getPen())) {
pendingItem.setPen("Pending");
}
pendingList.add(pendingItem);
break;
case SYS_NEW_PEN:
case USR_NEW_PEN:
this.populateForNewPenStatus(newPenList, students, penRequestBatchStudent);
break;
case SYS_MATCHED:
this.populateForSystemMatchedStatus(sysMatchedList, diffList, students, penRequestBatchStudent);
break;
case USR_MATCHED:
this.populateForUserMatchedStatus(sysMatchedList, diffList, students, penRequestBatchStudent);
break;
default:
log.error("Unexpected pen request batch student status code encountered while attempting generate report data :: " + penRequestBatchStudent.getPenRequestBatchStudentStatusCode());
break;
}
}
val processDateTime = data.getPenRequestBatch() == null || data.getPenRequestBatch().getProcessDate() == null ? LocalDateTime.now() : LocalDateTime.parse(data.getPenRequestBatch().getProcessDate());
reportData.setProcessDate(processDateTime.format(DateTimeFormatter.ofPattern("yyyy/MM/dd")));
reportData.setProcessTime(processDateTime.format(DateTimeFormatter.ofPattern("HH:mm")));
reportData.setReportDate(processDateTime.format(DateTimeFormatter.ofPattern("yyyy-MMM-dd")).toUpperCase().replace(".", ""));
reportData.setReviewer(this.setReviewer(data.getPenCoordinator()));
}
reportData.setSysMatchedList(sysMatchedList);
reportData.setPendingList(pendingList);
reportData.setNewPenList(newPenList);
reportData.setDiffList(diffList);
reportData.setConfirmedList(confirmedList);
return reportData;
}
Aggregations