@SuppressWarnings("unchecked") @Override protected Map referenceData( final HttpServletRequest request, final Object cmd, final Errors errors) throws Exception { ReviewAeReportCommand command = (ReviewAeReportCommand) cmd; Map<String, Object> refdata = new HashMap<String, Object>(); Map<Integer, ReportSubmittability> reportMessages = new HashMap<Integer, ReportSubmittability>(); // evaluate business rules. ReportSubmittability reportSubmittability = new ReportSubmittability(); for (ExpeditedReportSection section : ExpeditedReportSection.values()) { if (!section.isAssociatedToBusinessRules()) continue; ValidationErrors validationErrors = evaluationService.validateReportingBusinessRules(command.getAeReport(), section); for (ValidationError vError : validationErrors.getErrors()) { reportSubmittability.addValidityMessage( section, messageSource.getMessage( vError.getCode(), vError.getReplacementVariables(), vError.getMessage(), Locale.getDefault())); } } reportMessages.put(ExpeditedAdverseEventInputCommand.ZERO, reportSubmittability); // -- check the report submittability for (Report report : command.getAeReport().getReports()) { reportMessages.put(report.getId(), reportValidationService.isSubmittable(report)); } refdata.put("reportMessages", reportMessages); // This is to check if the logged in person is SAE-Coordinator. // Data coordinator cannot submit a report. boolean isReportReviewer = SecurityUtils.hasAuthorityOf(UserGroupType.ae_expedited_report_reviewer); // boolean canSubmit = false; // if(reportMessages.get(command.ZERO).isSubmittable() && // reportMessages.get(command.getReportId()).isSubmittable() && isReportReviewer) // canSubmit = true; // refdata.put("canSubmit", canSubmit); refdata.put("isUserSAECoordinato", isReportReviewer); // additional information documents Integer additionalInformationId = command.getAeReport().getAdditionalInformation().getId(); List<AdditionalInformationDocument> additionalInformationDocuments = additionalInformationDocumentService.findByAdditionalInformationId(additionalInformationId); Map<String, List<AdditionalInformationDocument>> documents = AdditionalInformationDocument.groupDocumentsByDocumentType(additionalInformationDocuments); refdata.put("documents", documents); refdata.put("additionalInformationId", additionalInformationId); return refdata; }