diff --git a/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java index 0ee43c27..02eea873 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java @@ -61,7 +61,7 @@ public class EmailNotificationDao { private void sendEmail(ApplicationEntity applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum templateType, - Map bodyPlaceholders, List additionalRecipients) { + Map bodyPlaceholders, List additionalRecipients,Boolean isAmendment,Long amendmentId) { HubEntity hubEntity = hubService.valdateHub(applicationEntity.getHubId()); String service = determineService(applicationEntity.getHubId()); @@ -77,8 +77,11 @@ public class EmailNotificationDao { UserEntity userEntity = userService.validateUser(applicationEntity.getUserId()); List recipientEmails = getRecipientEmails(applicationEntity, userEntity, additionalRecipients); - EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(systemEmailTemplateResponse.getEmailScenario(), RecipientTypeEnum.BENEFICIARY,userEntity.getBeneficiary().getId(),subject,body, StatusTypeEnum.SUCCESS.getValue(), null, applicationEntity.getId(), EmailEntityTypeEnum.AMENDMENT,Utils.listToCommaSeparatedString(recipientEmails),userEntity.getId()); - + EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(systemEmailTemplateResponse.getEmailScenario(), RecipientTypeEnum.BENEFICIARY,userEntity.getBeneficiary().getId(),subject,body, StatusTypeEnum.SUCCESS.getValue(), null, applicationEntity.getId(), EmailEntityTypeEnum.APPLICATION,Utils.listToCommaSeparatedString(recipientEmails),userEntity.getId()); + if(Boolean.TRUE.equals(isAmendment) && amendmentId !=null){ + emailLogRequest.setEntitytype(EmailEntityTypeEnum.AMENDMENT); + emailLogRequest.setEntityId(amendmentId); + } sendMail(applicationEntity.getHubId(), subject, body, recipientEmails,emailLogRequest); } private List getRecipientEmails(ApplicationEntity applicationEntity, UserEntity userEntity, List additionalRecipients) { @@ -138,7 +141,7 @@ public class EmailNotificationDao { log.error("Failed to parse form fields JSON: ", e); } bodyPlaceholders.put("{{note}}", applicationAmendmentRequest.getNote()); - sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST, bodyPlaceholders, null); + sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST, bodyPlaceholders, null,true,applicationAmendmentRequest.getId()); } public void sendApplicationFailureNotificationEmail(ApplicationAmendmentRequestEntity amendmentRequest) { @@ -155,7 +158,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); + sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE, bodyPlaceholders, null,true,amendmentRequest.getId()); } public void sendAdmissibilityNotificationEmailForApprovedApplication(ApplicationEntity applicationEntity) { @@ -165,7 +168,7 @@ public class EmailNotificationDao { bodyPlaceholders.put("{{protocol_date}}", DateTimeUtil.formatCreatedDate(applicationEntity.getProtocol().getCreatedDate())); bodyPlaceholders.put("{{protocol_time}}", DateTimeUtil.parseLocalTimeToString(applicationEntity.getProtocol().getTime(), GepafinConstant.HH_MM_SS)); - sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.ADMISSIBILITY_NOTIFICATION, bodyPlaceholders, null); + sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.ADMISSIBILITY_NOTIFICATION, bodyPlaceholders, null,false,null); } public void sendInadmissibilityEmailForRejectedApplication(ApplicationEntity applicationEntity,ApplicationEvaluationEntity applicationEvaluationEntity) { @@ -176,7 +179,7 @@ public class EmailNotificationDao { bodyPlaceholders.put("{{protocol_time}}", DateTimeUtil.parseLocalTimeToString(applicationEntity.getProtocol().getTime(), GepafinConstant.HH_MM_SS)); bodyPlaceholders.put("{{form_text}}", applicationEvaluationEntity.getNote()); - sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_TEMPLATE, bodyPlaceholders, null); + sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_TEMPLATE, bodyPlaceholders, null,false,null); } public void sendMail(Long hubId, String subject, String body, List recipientEmails, EmailLogRequest emailLogRequest) { diff --git a/src/main/java/net/gepafin/tendermanagement/enums/EmailServiceTypeEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/EmailServiceTypeEnum.java index 8a22c69c..49c14743 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/EmailServiceTypeEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/EmailServiceTypeEnum.java @@ -4,8 +4,8 @@ import com.fasterxml.jackson.annotation.JsonValue; public enum EmailServiceTypeEnum { - MAILGUN("MAILGUN"), - PEC("PEC"); + MAILGUN_SERVICE("MAILGUN_SERVICE"), + PEC_SERVICE("PEC_SERVICE"); private String value; diff --git a/src/main/java/net/gepafin/tendermanagement/service/feignClient/MailgunFeignClient.java b/src/main/java/net/gepafin/tendermanagement/service/feignClient/MailgunFeignClient.java deleted file mode 100644 index 3006ef51..00000000 --- a/src/main/java/net/gepafin/tendermanagement/service/feignClient/MailgunFeignClient.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.gepafin.tendermanagement.service.feignClient; - -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -//@FeignClient(name = "mailgunClient", url = "${mailGun_base_url}") -public interface MailgunFeignClient { -// @PostMapping(value = "/v3/{domain}/messages", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) -// ResponseEntity sendEmail( @RequestPart("from") String from, -// @RequestPart("to") List to, -// @RequestPart("subject") String subject, -// @RequestPart("text") String htmlBody, -// @PathVariable("domain") String domain, -//// @RequestBody PayloadDTO dto, -// //RequestParam -// -// @RequestHeader HttpHeaders headers); -// -// public class PayloadDTO { -// public String from; -// public List to; -// public String subject; -// public String htmlBody; -// -// public PayloadDTO(String from, List to, String subject, String htmlBody) { -// this.from = from; -// this.to = to; -// this.subject = subject; -// this.htmlBody = htmlBody; -// } -// -// } -} - - diff --git a/src/main/java/net/gepafin/tendermanagement/service/feignClient/PecFeignClient.java b/src/main/java/net/gepafin/tendermanagement/service/feignClient/PecFeignClient.java deleted file mode 100644 index f6fe99f6..00000000 --- a/src/main/java/net/gepafin/tendermanagement/service/feignClient/PecFeignClient.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.gepafin.tendermanagement.service.feignClient; - -import feign.Headers; -import net.gepafin.tendermanagement.model.request.PecEmailRequest; -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.http.HttpHeaders; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestHeader; - -//@FeignClient(name = "pecClient", url = "${api.pecUrl}") -public interface PecFeignClient { -// @PostMapping("/send") -// ResponseEntity sendEmail(@RequestHeader HttpHeaders headers, -// @RequestBody PecEmailRequest emailRequest); -} - diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/MailgunEmailService.java b/src/main/java/net/gepafin/tendermanagement/service/impl/MailgunEmailService.java index 97c75667..3bf2ecd8 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/MailgunEmailService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/MailgunEmailService.java @@ -2,14 +2,12 @@ package net.gepafin.tendermanagement.service.impl; import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; -import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.dao.EmailLogDao; import net.gepafin.tendermanagement.entities.EmailLogEntity; import net.gepafin.tendermanagement.enums.EmailServiceTypeEnum; import net.gepafin.tendermanagement.enums.StatusTypeEnum; import net.gepafin.tendermanagement.model.request.EmailConfig; import net.gepafin.tendermanagement.model.request.EmailLogRequest; -import net.gepafin.tendermanagement.service.feignClient.MailgunFeignClient; import net.gepafin.tendermanagement.util.Utils; import net.gepafin.tendermanagement.util.Validator; @@ -61,14 +59,14 @@ public class MailgunEmailService implements EmailService { .asString(); }catch(Exception e) { emailLogRequest.setSendStatus(StatusTypeEnum.FAILED.getValue()); - emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.MAILGUN); + emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.MAILGUN_SERVICE); emailLogRequest.setErrorMessage(e.getMessage()); EmailLogEntity emailLogEntity= emailLogDao.createEmailLog(emailLogRequest); throw new RuntimeException("Failed to send email via Mailgun: " + response2.getStatus()); } emailLogRequest.setEmailServiceResponse(response2.getBody()); } - emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.MAILGUN); + emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.MAILGUN_SERVICE); EmailLogEntity emailLogEntity= emailLogDao.createEmailLog(emailLogRequest); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/PecEmailService.java b/src/main/java/net/gepafin/tendermanagement/service/impl/PecEmailService.java index 8d6667d5..81991f69 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/PecEmailService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/PecEmailService.java @@ -1,11 +1,8 @@ package net.gepafin.tendermanagement.service.impl; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; import lombok.extern.slf4j.Slf4j; -import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.dao.EmailLogDao; import net.gepafin.tendermanagement.entities.EmailLogEntity; import net.gepafin.tendermanagement.enums.EmailServiceTypeEnum; @@ -13,14 +10,11 @@ import net.gepafin.tendermanagement.enums.StatusTypeEnum; import net.gepafin.tendermanagement.model.request.EmailConfig; import net.gepafin.tendermanagement.model.request.EmailLogRequest; import net.gepafin.tendermanagement.model.request.PecEmailRequest; -import net.gepafin.tendermanagement.service.feignClient.PecFeignClient; import net.gepafin.tendermanagement.util.Utils; import net.gepafin.tendermanagement.util.Validator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpHeaders; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import java.util.List; @@ -47,11 +41,11 @@ public class PecEmailService implements EmailService { PecEmailRequest emailRequest = new PecEmailRequest(); emailRequest.setSender(emailConfig.getSender()); - emailRequest.setSubject(subject); emailRequest.setBody(body); emailRequest.setUsername(emailConfig.getUsername()); emailRequest.setPassword(emailConfig.getPassword()); + emailRequest.setRecipient(recipientEmails); String url=emailConfig.getUrl(); String authToken = emailConfig.getAuthToken(); HttpResponse response2=null; @@ -66,14 +60,14 @@ public class PecEmailService implements EmailService { .asString(); }catch(Exception e) { emailLogRequest.setSendStatus(StatusTypeEnum.FAILED.getValue()); - emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.PEC); + emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.PEC_SERVICE); emailLogRequest.setErrorMessage(e.getMessage()); EmailLogEntity emailLogEntity= emailLogDao.createEmailLog(emailLogRequest); throw new RuntimeException("Failed to send email via PEC: " + response2.getStatus()); } emailLogRequest.setEmailServiceResponse(response2.getBody()); } - emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.PEC); + emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.PEC_SERVICE); EmailLogEntity emailLogEntity= emailLogDao.createEmailLog(emailLogRequest); } } 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 c3345556..58641af4 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 @@ -1759,12 +1759,11 @@ path="db/dump/updated_hub_data_for_email_service_config_15-11-2024.sql"/> - - + @@ -1772,4 +1771,10 @@ + + + + + +