From e56b8aa9beef39e3c21bad8e2820a1c56786fa68 Mon Sep 17 00:00:00 2001 From: nisha Date: Mon, 30 Dec 2024 13:27:51 +0530 Subject: [PATCH] Added emailTemplate field in amendment response --- .../dao/ApplicationAmendmentRequestDao.java | 34 ++++++++++++------- .../dao/EmailNotificationDao.java | 29 ++++++++++++---- .../ApplicationAmendmentRequestResponse.java | 2 +- .../model/response/EmailContentResponse.java | 10 ++++++ 4 files changed, 55 insertions(+), 20 deletions(-) create mode 100644 src/main/java/net/gepafin/tendermanagement/model/response/EmailContentResponse.java diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java index 2937da2c..4e56814a 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java @@ -231,7 +231,7 @@ public class ApplicationAmendmentRequestDao { log.info("Submiting application data for amendment Process with details: {}", applicationEvaluationId); ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity = createApplicationAmendmentRequestEntity(applicationAmendmentRequest, applicationEvaluationId); - ApplicationAmendmentRequestResponse applicationAmendmentRequestResponse = convertEntityToResponse(applicationAmendmentRequestEntity); + ApplicationAmendmentRequestResponse applicationAmendmentRequestResponse = convertEntityToResponse(applicationAmendmentRequestEntity,false); log.info("Application submitted successfully for amendment", applicationAmendmentRequestResponse); if (Boolean.TRUE.equals(applicationAmendmentRequestResponse.getIsSendEmail())) { emailNotificationDao.sendMailToNotifyBeneficiaryRegardingNewAmendment(applicationAmendmentRequestEntity); @@ -362,8 +362,8 @@ public class ApplicationAmendmentRequestDao { return applicationAmendmentRequest; } - public ApplicationAmendmentRequestResponse convertEntityToResponse(ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity) { - ApplicationAmendmentRequestResponse response = initializeBasicResponse(applicationAmendmentRequestEntity); + public ApplicationAmendmentRequestResponse convertEntityToResponse(ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity,boolean includeEmailContent) { + ApplicationAmendmentRequestResponse response = initializeBasicResponse(applicationAmendmentRequestEntity,includeEmailContent); List forms = applicationFormRepository.findByApplicationId(applicationAmendmentRequestEntity.getApplicationId()); Map fieldIdToLabelMap = extractFieldIdToLabelMap(forms); @@ -431,8 +431,12 @@ public class ApplicationAmendmentRequestDao { } - private ApplicationAmendmentRequestResponse initializeBasicResponse(ApplicationAmendmentRequestEntity entity) { + private ApplicationAmendmentRequestResponse initializeBasicResponse(ApplicationAmendmentRequestEntity entity,boolean includeEmailContent) { ApplicationAmendmentRequestResponse response = new ApplicationAmendmentRequestResponse(); + ApplicationEntity applicationEntity = entity.getApplicationEvaluationEntity().getAssignedApplicationsEntity().getApplication(); + Long hubId = applicationEntity.getHubId(); + HubEntity hubEntity = hubService.valdateHub(hubId); + response.setId(entity.getId()); response.setApplicationId(entity.getApplicationId()); response.setApplicationEvaluationId(entity.getApplicationEvaluationEntity().getId()); @@ -458,6 +462,12 @@ public class ApplicationAmendmentRequestDao { Long protocolNumber = entity.getProtocol() != null ? entity.getProtocol().getProtocolNumber() : null; response.setProtocolNumber(protocolNumber); + if (includeEmailContent) { + Map bodyPlaceholders = emailNotificationDao.prepareEmailPlaceholders(applicationEntity, entity); + EmailContentResponse emailContent = emailNotificationDao.prepareEmailContent(applicationEntity, SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST, hubEntity, bodyPlaceholders); + String body = emailContent.getBody(); + response.setEmailTemplate(body); + } return response; } @@ -564,7 +574,7 @@ public class ApplicationAmendmentRequestDao { public ApplicationAmendmentRequestResponse getApplicationAmendmentRequestById(Long id) { log.info("Fetching application amendment with ID: {}", id); ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity = validateApplicationAmendmentRequest(id); - ApplicationAmendmentRequestResponse response = convertEntityToResponse(applicationAmendmentRequestEntity); + ApplicationAmendmentRequestResponse response = convertEntityToResponse(applicationAmendmentRequestEntity,true); log.info("Application Amendment fetched successfully by ID: {}", response); return response; } @@ -581,7 +591,7 @@ public class ApplicationAmendmentRequestDao { applicationAmendmentRequestRepository.findAll(spec); return applicationAmendmentRequestEntities.stream() - .map(this::convertEntityToResponse) + .map(entity -> convertEntityToResponse(entity, false)) .collect(Collectors.toList()); } @@ -641,7 +651,7 @@ public class ApplicationAmendmentRequestDao { setAmendmentDocuments(updateRequest.getAmendmentNotes(),updateRequest.getAmendmentDocuments(), existingApplicationAmendment); } ApplicationAmendmentRequestEntity updatedApplicationAmendment = saveApplicationAmendmentRequestEntity(existingApplicationAmendment,oldApplicationAmendmentEntity,VersionActionTypeEnum.UPDATE); - ApplicationAmendmentRequestResponse response = convertEntityToResponse(updatedApplicationAmendment); + ApplicationAmendmentRequestResponse response = convertEntityToResponse(updatedApplicationAmendment,false); log.info("Application Amendment updated successfully: {}", response); return response; } @@ -942,7 +952,7 @@ public class ApplicationAmendmentRequestDao { applicationAmendmentRequestRepository.findByUserId(beneficiaryUserId); return entities.stream() - .map(this::convertEntityToResponse) + .map(entity -> convertEntityToResponse(entity, false)) .collect(Collectors.toList()); } @@ -971,7 +981,7 @@ public class ApplicationAmendmentRequestDao { ApplicationAmendmentRequestEntity updatedApplicationAmendment = saveApplicationAmendmentRequestEntity(existingApplicationAmendment, oldApplicationAmendmentEntity, VersionActionTypeEnum.UPDATE); - ApplicationAmendmentRequestResponse response = convertEntityToResponse(updatedApplicationAmendment); + ApplicationAmendmentRequestResponse response = convertEntityToResponse(updatedApplicationAmendment,false); List amendmentRequests = applicationAmendmentRequestRepository.findAllByApplicationEvaluationIdAndIsDeletedFalse( existingApplicationAmendment.getApplicationEvaluationEntity().getId()); @@ -1030,7 +1040,7 @@ public class ApplicationAmendmentRequestDao { /** This code is responsible for adding a version history log for the "Update Application Amendment" operation. **/ loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldApplicationAmendmentEntity).newData(applicationAmendmentRequestEntity).build()); } - return convertEntityToResponse(applicationAmendmentRequestEntity); + return convertEntityToResponse(applicationAmendmentRequestEntity,false); } public List getAmendmentByApplicationId(HttpServletRequest request, Long applicationId, List statuses) { @@ -1055,7 +1065,7 @@ public class ApplicationAmendmentRequestDao { List response = new ArrayList<>(); if (applicationAmendmentRequestEntity != null) { response = applicationAmendmentRequestEntity.stream() - .map(this::convertEntityToResponse) + .map(entity -> convertEntityToResponse(entity, false)) .collect(Collectors.toList()); } return response; @@ -1075,7 +1085,7 @@ public class ApplicationAmendmentRequestDao { /** This code is responsible for adding a version history log for the "Update Application Amendment" operation. **/ loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldApplicationAmendmentEntity).newData(existingApplicationAmendment).build()); } - ApplicationAmendmentRequestResponse response = convertEntityToResponse(existingApplicationAmendment); + ApplicationAmendmentRequestResponse response = convertEntityToResponse(existingApplicationAmendment,false); log.info("Amendment status updated successfully: {}", response); return response; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java index 42eb2ee0..12d868a5 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java @@ -8,6 +8,7 @@ import net.gepafin.tendermanagement.enums.RecipientTypeEnum; import net.gepafin.tendermanagement.model.request.EmailConfig; import net.gepafin.tendermanagement.model.request.EmailLogRequest; import net.gepafin.tendermanagement.model.response.AmendmentFormFieldResponse; +import net.gepafin.tendermanagement.model.response.EmailContentResponse; import net.gepafin.tendermanagement.model.response.SystemEmailTemplateResponse; import net.gepafin.tendermanagement.repositories.*; import net.gepafin.tendermanagement.service.*; @@ -61,9 +62,6 @@ public class EmailNotificationDao { @Autowired private ApplicationFormRepository applicationFormRepository; - @Autowired - private ApplicationFormFieldRepository applicationFormFieldRepository; - @Autowired private ApplicationEvaluationRepository applicationEvaluationRepository; @@ -77,7 +75,19 @@ public class EmailNotificationDao { // 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); + UserEntity userEntity = userService.validateUser(applicationEntity.getUserId()); + sendEmails(applicationEntity, userEntity, additionalRecipients,amendmentId,emailContent.getSystemEmailTemplateResponse(),emailContent.getSubject(),emailContent.getBody()); + } + + public EmailContentResponse prepareEmailContent( + ApplicationEntity applicationEntity, + SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum templateType, + HubEntity hubEntity, + Map bodyPlaceholders + ) { SystemEmailTemplateResponse systemEmailTemplateResponse = systemEmailTemplatesService.retrieveTemplateByTypeAndCall(templateType, hubEntity, null); + Map subjectPlaceholders = new HashMap<>(); CompanyEntity company = companyService.validateCompany(applicationEntity.getCompanyId()); subjectPlaceholders.put("{{call_name}}", applicationEntity.getCall().getName()); @@ -85,9 +95,10 @@ public class EmailNotificationDao { // bodyPlaceholders.put("{{legal_mail}}", legalMail); String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders); String body = Utils.replacePlaceholders(systemEmailTemplateResponse.getHtmlContent(), bodyPlaceholders); - UserEntity userEntity = userService.validateUser(applicationEntity.getUserId()); - sendEmails(applicationEntity, userEntity, additionalRecipients,amendmentId,systemEmailTemplateResponse,subject,body); + + return new EmailContentResponse(subject, body, systemEmailTemplateResponse); } + private void sendEmails(ApplicationEntity applicationEntity, UserEntity userEntity, List additionalRecipients,Long amendmentId,SystemEmailTemplateResponse systemEmailTemplateResponse,String subject,String body) { Optional applicationEvaluationEntity = applicationEvaluationRepository.findByApplicationIdAndIsDeletedFalse(applicationEntity.getId()); @@ -150,6 +161,11 @@ public class EmailNotificationDao { public void sendMailToNotifyBeneficiaryRegardingNewAmendment(ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity) { ApplicationEntity applicationEntity = applicationService.validateApplication(applicationAmendmentRequestEntity.getApplicationId()); + Map bodyPlaceholders = prepareEmailPlaceholders(applicationEntity, applicationAmendmentRequestEntity); + sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST, bodyPlaceholders, null, + applicationAmendmentRequestEntity.getId()); + } + public Map prepareEmailPlaceholders(ApplicationEntity applicationEntity, ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity){ Map bodyPlaceholders = new HashMap<>(); bodyPlaceholders.put("{{call_name}}", applicationEntity.getCall().getName()); bodyPlaceholders.put("{{protocol_number}}", applicationEntity.getProtocol().getProtocolNumber().toString()); @@ -185,8 +201,7 @@ public class EmailNotificationDao { bodyPlaceholders.put("{{note}}", applicationAmendmentRequestEntity.getNote()); - sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST, bodyPlaceholders, null, - applicationAmendmentRequestEntity.getId()); + return bodyPlaceholders; } public List getIdAndLabelFromResult(List> result) { diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationAmendmentRequestResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationAmendmentRequestResponse.java index 01390777..0760217b 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationAmendmentRequestResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationAmendmentRequestResponse.java @@ -1,7 +1,6 @@ package net.gepafin.tendermanagement.model.response; import lombok.Data; -import net.gepafin.tendermanagement.entities.ApplicationEvaluationEntity; import net.gepafin.tendermanagement.enums.ApplicationAmendmentRequestEnum; import java.time.LocalDateTime; @@ -31,4 +30,5 @@ public class ApplicationAmendmentRequestResponse { private List commentsList; private String internalNote; private ApplicationAmendmentRequestEnum status; + private String emailTemplate; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/EmailContentResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/EmailContentResponse.java new file mode 100644 index 00000000..dfeaf074 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/EmailContentResponse.java @@ -0,0 +1,10 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Data; + +@Data +public class EmailContentResponse { + private final String subject; + private final String body; + private final SystemEmailTemplateResponse systemEmailTemplateResponse; +}