diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java index ed5f6362..3e6bf38d 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java @@ -597,9 +597,9 @@ public class ApplicationAmendmentRequestDao { Map bodyPlaceholders = emailNotificationDao.prepareEmailPlaceholders(applicationEntity, entity); EmailContentResponse emailContent =null; if(entity.getType()!=null && entity.getType().equals(ApplicationAmendmentRequestTypeEnum.SPECIAL.getValue())){ - emailContent=emailNotificationDao.prepareEmailContent(applicationEntity, SystemEmailTemplatesEntityTypeEnum.SPECIAL_APPLICATION_AMENDMENT_REQUESTED, hubEntity, bodyPlaceholders); + emailContent=emailNotificationDao.prepareEmailContent(applicationEntity, SystemEmailTemplatesEntityTypeEnum.SPECIAL_APPLICATION_AMENDMENT_REQUESTED, hubEntity, bodyPlaceholders,null); }else { - emailContent = emailNotificationDao.prepareEmailContent(applicationEntity, SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST, hubEntity, bodyPlaceholders); + emailContent = emailNotificationDao.prepareEmailContent(applicationEntity, SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST, hubEntity, bodyPlaceholders,null); } String body = emailContent.getBody(); response.setEmailTemplate(body); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java index 37c4c9db..00f37bc1 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java @@ -2034,8 +2034,9 @@ public class ApplicationEvaluationDao { } if (Boolean.TRUE.equals(statusType.equals((ApplicationStatusTypeEnum.REJECTED.getValue())))) { String tipoInammissibilita =null; + String emailType=null; if(Boolean.TRUE.equals(hub.getUniqueUuid().equals(defaultHubUuid))) { - if (applicationEvaluationRequest.getMotivation() == null || applicationEvaluationRequest.getRejectedReason() == null) { + if (applicationEvaluationRequest.getMotivation() == null || applicationEvaluationRequest.getRejectedReason() == null || applicationEvaluationRequest.getRejectedReasonSubject()==null) { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.MORE_FIELDS_REQUIRED_FOR_REJECTION)); } if (files != null) { @@ -2049,12 +2050,13 @@ public class ApplicationEvaluationDao { application.setRejectedDocument(rejectedDocumentId); } tipoInammissibilita=applicationEvaluationRequest.getRejectedReason(); + emailType=applicationEvaluationRequest.getRejectedReasonSubject(); application.setRejectedReason(applicationEvaluationRequest.getRejectedReason()); } application.setDateRejected(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); application.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); application = applicationRepository.save(application); - emailNotificationDao.sendInadmissibilityEmailForRejectedApplication(application,existingEntity,tipoInammissibilita); + emailNotificationDao.sendInadmissibilityEmailForRejectedApplication(application,existingEntity,tipoInammissibilita,emailType); emailSendResponse = emailDao.buildEmailSendResponseFromRequest(request); responses = List.of(emailSendResponse); if (!Boolean.TRUE.equals(emailSendResponse.getIsEmailSend())) { @@ -2470,6 +2472,7 @@ public class ApplicationEvaluationDao { request.setMotivation(formRequestBean.getMotivation()); request.setAmountAccepted(formRequestBean.getAmountAccepted()); request.setRejectedReason(formRequestBean.getRejectedReason()); + request.setRejectedReasonSubject(formRequestBean.getRejectedReasonSubject()); request.setCriteria(null); request.setChecklist(null); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java index bc35b897..87b23c05 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java @@ -98,13 +98,13 @@ public class EmailNotificationDao { private ApplicationDao applicationDao; public void sendEmail(ApplicationEntity applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum templateType, Map bodyPlaceholders, - List additionalRecipients, Long amendmentId) { + List additionalRecipients, Long amendmentId,String emailType) { HubEntity hubEntity = hubService.valdateHub(applicationEntity.getHubId()); // String service = determineService(applicationEntity.getHubId()); // String legalMail = service.equals("Gepafin S.p.a.") ? "bandi.gepafin@legalmail.it" : "bandi.sviluppumbria@legalmail.it"; - EmailContentResponse emailContent = prepareEmailContent(applicationEntity, templateType, hubEntity, bodyPlaceholders); + EmailContentResponse emailContent = prepareEmailContent(applicationEntity, templateType, hubEntity, bodyPlaceholders,emailType); UserEntity userEntity = userService.validateUser(applicationEntity.getUserId()); sendEmails(applicationEntity, userEntity, additionalRecipients,amendmentId,emailContent.getSystemEmailTemplateResponse(),emailContent.getSubject(),emailContent.getBody()); } @@ -113,7 +113,7 @@ public class EmailNotificationDao { ApplicationEntity applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum templateType, HubEntity hubEntity, - Map bodyPlaceholders + Map bodyPlaceholders,String emailType ) { SystemEmailTemplateResponse systemEmailTemplateResponse = systemEmailTemplatesService.retrieveTemplateByTypeAndCall(templateType, hubEntity, null); if(Boolean.TRUE.equals(templateType.equals(SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST)) && Boolean.TRUE.equals(validator.isProductionProfileActivated()) && applicationEntity.getCall().getId().equals(23l)) { @@ -124,6 +124,7 @@ public class EmailNotificationDao { subjectPlaceholders.put("{{call_name}}", applicationEntity.getCall().getName()); subjectPlaceholders.put("{{company_name}}", company.getCompanyName()); // bodyPlaceholders.put("{{legal_mail}}", legalMail); + subjectPlaceholders.put("{{email_type}}",emailType); String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders); String body = Utils.replacePlaceholders(systemEmailTemplateResponse.getHtmlContent(), bodyPlaceholders); @@ -270,7 +271,7 @@ public class EmailNotificationDao { ApplicationEntity applicationEntity = applicationService.validateApplication(applicationAmendmentRequestEntity.getApplicationId()); Map bodyPlaceholders = prepareEmailPlaceholders(applicationEntity, applicationAmendmentRequestEntity); sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST, bodyPlaceholders, null, - applicationAmendmentRequestEntity.getId()); + applicationAmendmentRequestEntity.getId(),null); } public Map prepareEmailPlaceholders(ApplicationEntity applicationEntity, ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity){ Map bodyPlaceholders = new HashMap<>(); @@ -362,7 +363,7 @@ public class EmailNotificationDao { } bodyPlaceholders.put("{{date_time_emailSend}}", DateTimeUtil.formatLocalDateTime(lastReminderDateTime, GepafinConstant.DD_MM_YYYY)); - sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE, bodyPlaceholders, null,amendmentRequest.getId()); + sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE, bodyPlaceholders, null,amendmentRequest.getId(),null); } public void sendAdmissibilityNotificationEmailForAdmissibleApplication(ApplicationEntity applicationEntity) { @@ -380,10 +381,10 @@ public class EmailNotificationDao { bodyPlaceholders.put("{{protocol_date}}", protocolDate); bodyPlaceholders.put("{{protocol_time}}", DateTimeUtil.parseLocalTimeToString(applicationEntity.getProtocol().getTime(), GepafinConstant.HH_MM_SS)); - sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.ADMISSIBILITY_NOTIFICATION, bodyPlaceholders, null,null); + sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.ADMISSIBILITY_NOTIFICATION, bodyPlaceholders, null,null,null); } - public void sendInadmissibilityEmailForRejectedApplication(ApplicationEntity applicationEntity,ApplicationEvaluationEntity applicationEvaluationEntity,String tipoInammissibilita) { + public void sendInadmissibilityEmailForRejectedApplication(ApplicationEntity applicationEntity,ApplicationEvaluationEntity applicationEvaluationEntity,String tipoInammissibilita,String emailType) { Map bodyPlaceholders = new HashMap<>(); bodyPlaceholders.put("{{call_name}}", applicationEntity.getCall().getName()); String protocolNumber=applicationEntity.getProtocol().getExternalProtocolNumber(); @@ -400,7 +401,7 @@ public class EmailNotificationDao { HubEntity hubEntity = hubService.valdateHub(applicationEntity.getHubId()); bodyPlaceholders.put("{{tipo_inammissibilita}}", tipoInammissibilita); bodyPlaceholders.put("{{form_text}}", applicationEvaluationEntity.getMotivation()); - sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_TEMPLATE, bodyPlaceholders, null,null); + sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_TEMPLATE, bodyPlaceholders, null,null,emailType); } public void sendMail(Long hubId, String subject, String body, List recipientEmails, EmailLogRequest emailLogRequest) { @@ -442,7 +443,7 @@ public class EmailNotificationDao { Map bodyPlaceholders = prepareEmailPlaceholdersForTechnicalEvaluationRejected(applicationEntity,hub,applicationEvaluationEntity); sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_NOTIFICATION_DUE_TO_TECHNICAL_EVALUATION_FAILURE, bodyPlaceholders, null, - null); + null,null); } // public void sendMailForApplicationTechnicalEvaluationRejected(ApplicationEntity applicationEntity,HubEntity hub,ApplicationEvaluationEntity applicationEvaluationEntity,Map emailJson) { @@ -491,6 +492,6 @@ public class EmailNotificationDao { Map bodyPlaceholders = prepareEmailPlaceholders(applicationEntity, applicationAmendmentRequestEntity); sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.SPECIAL_APPLICATION_AMENDMENT_REQUESTED, bodyPlaceholders, null, - applicationAmendmentRequestEntity.getId()); + applicationAmendmentRequestEntity.getId(),null); } } \ No newline at end of file diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationEvaluationFormRequestBean.java b/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationEvaluationFormRequestBean.java index 5564f08b..6d526122 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationEvaluationFormRequestBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationEvaluationFormRequestBean.java @@ -17,4 +17,6 @@ public class ApplicationEvaluationFormRequestBean { private String motivation; private BigDecimal amountAccepted; private String rejectedReason; + private String rejectedReasonSubject; + } diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationEvaluationRequest.java b/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationEvaluationRequest.java index e19358c9..71405f74 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationEvaluationRequest.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationEvaluationRequest.java @@ -18,4 +18,5 @@ public class ApplicationEvaluationRequest { private String motivation; private BigDecimal amountAccepted; private String rejectedReason; + private String rejectedReasonSubject; } diff --git a/src/main/resources/db/changelog/db.changelog-1.0.0.xml b/src/main/resources/db/changelog/db.changelog-1.0.0.xml index 56bc650d..1f58437f 100644 --- a/src/main/resources/db/changelog/db.changelog-1.0.0.xml +++ b/src/main/resources/db/changelog/db.changelog-1.0.0.xml @@ -3080,4 +3080,9 @@ + + + + + diff --git a/src/main/resources/db/dump/update_system_email_template_of_application_rejected_17_10_2025.sql b/src/main/resources/db/dump/update_system_email_template_of_application_rejected_17_10_2025.sql new file mode 100644 index 00000000..a42ce4a8 --- /dev/null +++ b/src/main/resources/db/dump/update_system_email_template_of_application_rejected_17_10_2025.sql @@ -0,0 +1,3 @@ +UPDATE gepafin_schema.system_email_template +SET subject = 'BANDO {{call_name}} – {{email_type}} {{company_name}}' +WHERE "type" = 'INADMISSIBILITY_NOTIFICATION' and "email_scenario" = 'APPLICATION_REJECTED' and "system" = true; \ No newline at end of file