From 4b11d463e2ca296f306e71eee55ba904413199cf Mon Sep 17 00:00:00 2001 From: rajesh Date: Wed, 30 Oct 2024 15:34:50 +0530 Subject: [PATCH] Updated code for the email signature while sending emails --- .../tendermanagement/dao/ApplicationDao.java | 10 ++++- .../dao/EmailNotificationDao.java | 20 +++++---- .../gepafin/tendermanagement/dao/HubDao.java | 2 +- .../dao/SystemEmailTemplatesDao.java | 43 +++++++++++++------ .../tendermanagement/entities/HubEntity.java | 4 ++ .../tendermanagement/service/HubService.java | 1 + .../service/SystemEmailTemplatesService.java | 4 +- .../service/impl/HubServiceImpl.java | 4 ++ .../impl/SystemEmailTemplatesServiceImpl.java | 6 +-- src/main/resources/application.properties | 1 + .../db/changelog/db.changelog-1.0.0.xml | 22 ++++++++++ ...e_for_application_submition_30-10-2024.sql | 37 ++++++++++++++++ 12 files changed, 125 insertions(+), 29 deletions(-) create mode 100644 src/main/resources/db/dump/updated_system_email_template_for_application_submition_30-10-2024.sql diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index f7068c4a..f8334632 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -20,6 +20,7 @@ import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.service.CompanyService; import net.gepafin.tendermanagement.service.DocumentService; import net.gepafin.tendermanagement.service.FormService; +import net.gepafin.tendermanagement.service.HubService; import net.gepafin.tendermanagement.service.SystemEmailTemplatesService; import net.gepafin.tendermanagement.service.UserService; import net.gepafin.tendermanagement.util.DateTimeUtil; @@ -126,6 +127,9 @@ public class ApplicationDao { @Autowired private ProtocolDao protocolDao; + + @Autowired + private HubService hubService; public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId, Long applicationId) { @@ -699,9 +703,10 @@ public class ApplicationDao { CallEntity call =applicationEntity.getCall(); CompanyEntity company = applicationEntity.getCompany(); ProtocolEntity protocol = applicationEntity.getProtocol(); + HubEntity hub = hubService.valdateHub(applicationEntity.getHubId()); SystemEmailTemplateResponse systemEmailTemplateResponse = systemEmailTemplatesService .retrieveTemplateByTypeAndCall(SystemEmailTemplatesEntityTypeEnum.APPLICATION_SUBMISSION_TO_USER_AND_COMPANY, - call, null); + hub, null); // Create the map for subject placeholders Map subjectPlaceholders = new HashMap<>(); @@ -732,9 +737,10 @@ public class ApplicationDao { CallEntity call = applicationEntity.getCall(); CompanyEntity company = applicationEntity.getCompany(); ProtocolEntity protocol = applicationEntity.getProtocol(); + HubEntity hub = hubService.valdateHub(applicationEntity.getHubId()); SystemEmailTemplateResponse systemEmailTemplateResponse = systemEmailTemplatesService .retrieveTemplateByTypeAndCall(SystemEmailTemplatesEntityTypeEnum.APPLICATION_SUBMISSION_TO_GEPAFIN, - call, null); + hub, null); // Create the map for subject placeholders Map subjectPlaceholders = new HashMap<>(); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java index cacbe281..75b5dbf6 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java @@ -3,11 +3,12 @@ package net.gepafin.tendermanagement.dao; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity; import net.gepafin.tendermanagement.entities.ApplicationEntity; +import net.gepafin.tendermanagement.entities.HubEntity; import net.gepafin.tendermanagement.entities.SystemEmailTemplatesEntity; import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.model.response.SystemEmailTemplateResponse; -import net.gepafin.tendermanagement.repositories.CallRepository; import net.gepafin.tendermanagement.service.ApplicationService; +import net.gepafin.tendermanagement.service.HubService; import net.gepafin.tendermanagement.service.SystemEmailTemplatesService; import net.gepafin.tendermanagement.service.UserService; import net.gepafin.tendermanagement.util.DateTimeUtil; @@ -34,16 +35,16 @@ public class EmailNotificationDao { @Autowired private UserService userService; - + @Autowired - CallRepository callRepository; + private HubService hubService; public void sendMailToNotifyBeneficiaryRegardingNewAmendment(ApplicationAmendmentRequestEntity applicationAmendmentRequest) { ApplicationEntity applicationEntity = applicationService.validateApplication(applicationAmendmentRequest.getApplicationId()); - + HubEntity hub = hubService.valdateHub(applicationEntity.getHubId()); SystemEmailTemplateResponse systemEmailTemplateResponse = systemEmailTemplatesService.retrieveTemplateByTypeAndCall( - SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST, applicationEntity.getCall(), null); + SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST, hub, null); // Create the map for subject placeholders Map subjectPlaceholders = new HashMap<>(); @@ -68,8 +69,9 @@ public class EmailNotificationDao { public void sendApplicationFailureNotificationEmail(ApplicationAmendmentRequestEntity amendmentRequest) { ApplicationEntity applicationEntity = applicationService.validateApplication(amendmentRequest.getApplicationId()); + HubEntity hub = hubService.valdateHub(applicationEntity.getHubId()); SystemEmailTemplateResponse systemEmailTemplateResponse = systemEmailTemplatesService.retrieveTemplateByTypeAndCall( - SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE, applicationEntity.getCall(), null); + SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE, hub, null); // Create the map for subject placeholders Map subjectPlaceholders = new HashMap<>(); @@ -93,8 +95,9 @@ public class EmailNotificationDao { public void sendAdmissibilityNotificationEmailForApprovedApplication(ApplicationAmendmentRequestEntity amendmentRequest) { ApplicationEntity applicationEntity = applicationService.validateApplication(amendmentRequest.getApplicationId()); + HubEntity hub = hubService.valdateHub(applicationEntity.getHubId()); SystemEmailTemplateResponse systemEmailTemplateResponse = systemEmailTemplatesService.retrieveTemplateByTypeAndCall( - SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.ADMISSIBILITY_NOTIFICATION, applicationEntity.getCall(), null); + SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.ADMISSIBILITY_NOTIFICATION, hub, null); // Create the map for subject placeholders Map subjectPlaceholders = new HashMap<>(); @@ -126,8 +129,9 @@ public class EmailNotificationDao { public void sendInadmissibilityEmailForRejectedApplication(ApplicationAmendmentRequestEntity amendmentRequest) { ApplicationEntity applicationEntity = applicationService.validateApplication(amendmentRequest.getApplicationId()); + HubEntity hub = hubService.valdateHub(applicationEntity.getHubId()); SystemEmailTemplateResponse systemEmailTemplateResponse = systemEmailTemplatesService.retrieveTemplateByTypeAndCall( - SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_TEMPLATE, applicationEntity.getCall(), null); + SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_TEMPLATE, hub, null); // Create the map for subject placeholders Map subjectPlaceholders = new HashMap<>(); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/HubDao.java b/src/main/java/net/gepafin/tendermanagement/dao/HubDao.java index 3d5d6e7d..ee6e0d8a 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/HubDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/HubDao.java @@ -49,7 +49,7 @@ public class HubDao { hubRepository.save(hubEntity); } - private HubEntity validateHub(Long hubId) { + public HubEntity validateHub(Long hubId) { return hubRepository.findById(hubId) .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.HUB_NOT_FOUND))); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/SystemEmailTemplatesDao.java b/src/main/java/net/gepafin/tendermanagement/dao/SystemEmailTemplatesDao.java index 9218a33d..1665a724 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/SystemEmailTemplatesDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/SystemEmailTemplatesDao.java @@ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import net.gepafin.tendermanagement.entities.CallEntity; +import net.gepafin.tendermanagement.entities.HubEntity; import net.gepafin.tendermanagement.entities.SystemEmailTemplatesEntity; import net.gepafin.tendermanagement.entities.SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum; import net.gepafin.tendermanagement.model.response.SystemEmailTemplateResponse; @@ -25,24 +25,27 @@ public class SystemEmailTemplatesDao { @Value("${fe.base.url}") private String feBaseUrl; + @Value("${default.email.signature}") + private String defaultEmailSignature; - public SystemEmailTemplateResponse retrieveTemplate(SystemEmailTemplatesEntityTypeEnum type, CallEntity call, Locale language) { + + public SystemEmailTemplateResponse retrieveTemplate(SystemEmailTemplatesEntityTypeEnum type, HubEntity hub, Locale language) { SystemEmailTemplatesEntity dbSystemEmailTemplatesEntity = null; - if(call != null){ + if(hub != null){ // dbSystemEmailTemplatesEntity = systemEmailTemplatesRespository // .findByTypeAndCallId(type.getValue(), call.getId()); } - if(dbSystemEmailTemplatesEntity == null){ + if(dbSystemEmailTemplatesEntity == null) { dbSystemEmailTemplatesEntity = systemEmailTemplatesRespository .findByType(type.getValue()); } - SystemEmailTemplateResponse systemEmailTemplateResponse = replaceHtmlContant(dbSystemEmailTemplatesEntity, call, language, Boolean.TRUE); + SystemEmailTemplateResponse systemEmailTemplateResponse = replaceHtmlContant(dbSystemEmailTemplatesEntity, hub, language, Boolean.TRUE); return systemEmailTemplateResponse; } private SystemEmailTemplateResponse replaceHtmlContant(SystemEmailTemplatesEntity dbSystemEmailTemplatesEntity, - CallEntity call, Locale language1, Boolean isDefaultReplace) { + HubEntity hub, Locale language1, Boolean isDefaultReplace) { String language = null; String htmlContent = dbSystemEmailTemplatesEntity.getHtmlContent(); String subject = dbSystemEmailTemplatesEntity.getSubject(); @@ -69,7 +72,8 @@ public class SystemEmailTemplatesDao { } - htmlContent = replacePlatformLinkPlaceholder(call, htmlContent, languageMap); + htmlContent = replacePlatformLinkPlaceholderAndEmailSignature(hub, htmlContent, languageMap); + subject = replacePlatformLinkPlaceholderAndEmailSignature(hub, subject, languageMap); SystemEmailTemplateResponse systemEmailTemplateResponse = new SystemEmailTemplateResponse(); systemEmailTemplateResponse.setHtmlContent(htmlContent); systemEmailTemplateResponse.setSubject(subject); @@ -102,15 +106,28 @@ public class SystemEmailTemplatesDao { } return ""; } - private String replacePlatformLinkPlaceholder(CallEntity call, String htmlContent, + private String replacePlatformLinkPlaceholderAndEmailSignature(HubEntity hub, String htmlContent, Map languageMap) { - String platformLink = feBaseUrl; + htmlContent = replacePlatformLinkPlaceholder(hub, htmlContent, languageMap); + htmlContent = replaceEmailSignature(hub, htmlContent, languageMap); -// if(hubEntity != null && Boolean.FALSE.equals(isEmpty(hubEntity.getDomainName()))){ -// platformLink = hubEntity.getDomainName(); -// } - htmlContent = htmlContent.replace("{{platform_link}}", platformLink); return htmlContent; } + private String replaceEmailSignature(HubEntity hub, String htmlContent, Map languageMap) { + String emailSignature = defaultEmailSignature; + if(hub != null && Boolean.FALSE.equals(StringUtils.isEmpty(hub.getEmailSignature()))){ + emailSignature = hub.getEmailSignature(); + } + return htmlContent.replace("{{email_signature}}", emailSignature); + } + + private String replacePlatformLinkPlaceholder(HubEntity hub, String htmlContent, Map languageMap) { + String platformLink = feBaseUrl; + if(hub != null && Boolean.FALSE.equals(StringUtils.isEmpty(hub.getDomainName()))){ + platformLink = hub.getDomainName(); + } + return htmlContent.replace("{{platform_link}}", platformLink); + } + } diff --git a/src/main/java/net/gepafin/tendermanagement/entities/HubEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/HubEntity.java index 1b03f913..f3796342 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/HubEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/HubEntity.java @@ -42,4 +42,8 @@ public class HubEntity extends BaseEntity{ @Column(name = "UNIQUE_UUID") private String uniqueUuid; + + @Column(name = "EMAIL_SIGNATURE") + private String emailSignature; + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/HubService.java b/src/main/java/net/gepafin/tendermanagement/service/HubService.java index 397bc533..ad763419 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/HubService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/HubService.java @@ -15,4 +15,5 @@ public interface HubService { void deleteHub(Long hubId); HubEntity getHubByUuid(String hubUuid); HubResponseBean getHubByHubUuid(String uuid); + HubEntity valdateHub(Long hubId); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/SystemEmailTemplatesService.java b/src/main/java/net/gepafin/tendermanagement/service/SystemEmailTemplatesService.java index b40dc80f..5d50893f 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/SystemEmailTemplatesService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/SystemEmailTemplatesService.java @@ -2,12 +2,12 @@ package net.gepafin.tendermanagement.service; import java.util.Locale; -import net.gepafin.tendermanagement.entities.CallEntity; +import net.gepafin.tendermanagement.entities.HubEntity; import net.gepafin.tendermanagement.entities.SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum; import net.gepafin.tendermanagement.model.response.SystemEmailTemplateResponse; public interface SystemEmailTemplatesService { - SystemEmailTemplateResponse retrieveTemplateByTypeAndCall(SystemEmailTemplatesEntityTypeEnum type, CallEntity call, Locale language); + SystemEmailTemplateResponse retrieveTemplateByTypeAndCall(SystemEmailTemplatesEntityTypeEnum type, HubEntity hub, Locale language); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/HubServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/HubServiceImpl.java index 513a89e4..3490a0e6 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/HubServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/HubServiceImpl.java @@ -56,4 +56,8 @@ public class HubServiceImpl implements HubService { public HubResponseBean getHubByHubUuid(String uuid) { return hubDao.getHubByHubUuid(uuid); } + @Override + public HubEntity valdateHub(Long hubId) { + return hubDao.validateHub(hubId); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/SystemEmailTemplatesServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/SystemEmailTemplatesServiceImpl.java index 802f2580..34885c5b 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/SystemEmailTemplatesServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/SystemEmailTemplatesServiceImpl.java @@ -6,7 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import net.gepafin.tendermanagement.dao.SystemEmailTemplatesDao; -import net.gepafin.tendermanagement.entities.CallEntity; +import net.gepafin.tendermanagement.entities.HubEntity; import net.gepafin.tendermanagement.entities.SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum; import net.gepafin.tendermanagement.model.response.SystemEmailTemplateResponse; import net.gepafin.tendermanagement.service.SystemEmailTemplatesService; @@ -19,8 +19,8 @@ public class SystemEmailTemplatesServiceImpl implements SystemEmailTemplatesServ @Override - public SystemEmailTemplateResponse retrieveTemplateByTypeAndCall(SystemEmailTemplatesEntityTypeEnum type, CallEntity call, Locale language) { - return systemEmailTemplatesDao.retrieveTemplate(type, call, language); + public SystemEmailTemplateResponse retrieveTemplateByTypeAndCall(SystemEmailTemplatesEntityTypeEnum type, HubEntity hub, Locale language) { + return systemEmailTemplatesDao.retrieveTemplate(type, hub, language); } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index a870b853..51a9199a 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -61,4 +61,5 @@ apiKey=xkeysib-d15439fedd7ff36d86676ac248153fc2c496ed9b879ca9dc8cee9a27fa309087- #senderEmail=mailer@bflows.net application.amendment.expiration.days=30 +default.email.signature=Gepafin S.p.a 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 683246e4..251314c8 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 @@ -1652,6 +1652,28 @@ + + + + + + + + + + + + + + + UNIQUE_UUID = 'p4lk3bcx1RStqTaIVVbXs' + + + + UNIQUE_UUID = 't7jh5wfg9QXylNaTZkPoE' + + diff --git a/src/main/resources/db/dump/updated_system_email_template_for_application_submition_30-10-2024.sql b/src/main/resources/db/dump/updated_system_email_template_for_application_submition_30-10-2024.sql new file mode 100644 index 00000000..035a64cf --- /dev/null +++ b/src/main/resources/db/dump/updated_system_email_template_for_application_submition_30-10-2024.sql @@ -0,0 +1,37 @@ +UPDATE gepafin_schema.system_email_template SET html_content=' + +
+

Buongiorno,

+

+ Si comunica che, in riferimento alla domanda di concessione di + Finanziamento agevolato a valere sul Fondo prestiti + {{call_name}} di cui all''oggetto, la stessa è stata + regolarmente acquisita ed è stata registrata con Protocollo n. + {{protocol_number}} del {{date}} alle + {{time}}. +

+

Distinti Saluti,

+

+ {{email_signature}} +

+
+ +' WHERE "type"='APPLICATION_SUBMISSION_TO_USER_AND_COMPANY' AND "system"=true ; + + +UPDATE gepafin_schema.system_email_template SET html_content=' + +
+

+ In riferimento alla domanda di concessione di Finanziamento agevolato a valere sul Fondo prestiti + {{call_name}} di cui all’oggetto, la stessa è stata regolarmente acquisita ed è stata + registrata con Protocollo n. {{protocol_number}} del {{date}} alle {{time}}. +

+

Distinti Saluti,

+

+ {{email_signature}} +

+
+ +' WHERE "type"='APPLICATION_SUBMISSION_TO_GEPAFIN' AND "system"=true; +