diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java index 6cbd132f..a4da3b00 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java @@ -733,7 +733,7 @@ public class ApplicationAmendmentRequestDao { String body = prepareBody(emailTemplate, amendment, beneficiaryUser); String email = beneficiaryUser.getEmail(); if (Boolean.TRUE.equals(amendment.getIsEmail())&&email != null && !email.isEmpty()) { - EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(emailTemplate.getEmailScenario(),RecipientTypeEnum.USER,beneficiaryUser.getId(),subject,body,StatusTypeEnum.SUCCESS.getValue(), null,amendment.getId(), EmailEntityTypeEnum.AMENDMENT,beneficiaryUser.getEmail(),beneficiaryUser.getId()); + EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(emailTemplate.getEmailScenario(),RecipientTypeEnum.USER,beneficiaryUser.getId(),email,beneficiaryUser.getId(),applicationEntity.getId(),amendment.getId(),applicationEntity.getCall().getId()); emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(email),emailLogRequest); } else { throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.BENEFICIARY_EMAIL_NOT_FOUND_MSG)); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index 4023ec93..81165ca4 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -787,8 +787,8 @@ public class ApplicationDao { // Replace placeholders in the subject and body String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders); String body = Utils.replacePlaceholders(systemEmailTemplateResponse.getHtmlContent(), bodyPlaceholders); - EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(systemEmailTemplateResponse.getEmailScenario(),RecipientTypeEnum.USER,userEntity.getId(),subject,body, StatusTypeEnum.SUCCESS.getValue(), null,applicationEntity.getId(), EmailEntityTypeEnum.APPLICATION,userEntity.getEmail(),userEntity.getId()); - String email = userEntity.getEmail(); + EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(systemEmailTemplateResponse.getEmailScenario(),RecipientTypeEnum.USER,userEntity.getId(),userEntity.getEmail(),userEntity.getId(),applicationEntity.getId(),null,applicationEntity.getCall().getId()); + String email = userEntity.getEmail(); if (userEntity.getBeneficiary() != null) { emailLogRequest.setRecipientType(RecipientTypeEnum.BENEFICIARY); email = userEntity.getBeneficiary().getEmail(); @@ -839,7 +839,7 @@ public class ApplicationDao { String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders); String body = Utils.replacePlaceholders(systemEmailTemplateResponse.getHtmlContent(), bodyPlaceholders); - EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(systemEmailTemplateResponse.getEmailScenario(),RecipientTypeEnum.PROPERTIES,null,subject,body,StatusTypeEnum.SUCCESS.getValue(), null,applicationEntity.getId(), EmailEntityTypeEnum.APPLICATION,userEntity.getEmail(),userEntity.getId()); + EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(systemEmailTemplateResponse.getEmailScenario(),RecipientTypeEnum.PROPERTIES,null,userEntity.getEmail(),userEntity.getId(),applicationEntity.getId(),null,applicationEntity.getCall().getId()); // mailUtil.sendByMailGun(subject, body, List.of(defaultSystemReceiverEmail), null); // mailUtil.sendByMailGun(subject, body, List.of(gepafinEmail), null); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/EmailLogDao.java b/src/main/java/net/gepafin/tendermanagement/dao/EmailLogDao.java index 297e94d0..5775daf1 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/EmailLogDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/EmailLogDao.java @@ -34,10 +34,9 @@ public class EmailLogDao { emailLogEntity.setRecipientEmails(emailLogRequest.getRecipientEmails()); emailLogEntity.setEmailServiceType(emailLogRequest.getEmailServiceType().getValue()); emailLogEntity.setIsDeleted(false); - if(emailLogRequest.getEntityId()!=null && emailLogRequest.getEntityId()>0){ - emailLogEntity.setEntityId(emailLogRequest.getEntityId()); - emailLogEntity.setEntityType(emailLogRequest.getEntitytype().getValue()); - } + emailLogEntity.setApplicationId(emailLogRequest.getApplicatioId()); + emailLogEntity.setAmendmentId(emailLogRequest.getAmendmentId()); + emailLogEntity.setCallId(emailLogRequest.getCallId()); emailLogEntity=saveEmailLogEntity(emailLogEntity); return emailLogEntity; } @@ -45,20 +44,16 @@ public class EmailLogDao { return emailLogRepository.save(emailLogEntity); } public EmailLogRequest createEmailLogRequest(EmailScenarioTypeEnum emailType, RecipientTypeEnum recipientType, Long recipientId, - String emailSubject, String emailBody, String sendStatus, - String errorMessage, Long entityId, EmailEntityTypeEnum entityType, String recipientEmails, Long userId) { + String recipientEmails, Long userId,Long applicationId,Long amendmentId,Long callId) { EmailLogRequest emailLogRequest = new EmailLogRequest(); emailLogRequest.setEmailType(emailType); emailLogRequest.setRecipientType(recipientType); emailLogRequest.setRecipientId(recipientId); - emailLogRequest.setEmailSubject(emailSubject); - emailLogRequest.setEmailBody(emailBody); - emailLogRequest.setSendStatus(sendStatus); - emailLogRequest.setErrorMessage(errorMessage); emailLogRequest.setUserId(userId); - emailLogRequest.setEntityId(entityId); - emailLogRequest.setEntitytype(entityType); emailLogRequest.setRecipientEmails(recipientEmails); + emailLogRequest.setApplicatioId(applicationId); + emailLogRequest.setAmendmentId(amendmentId); + emailLogRequest.setCallId(callId); return emailLogRequest; } } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/EmailNotificationDao.java index 5c06a906..2f193047 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,Boolean isAmendment,Long amendmentId) { + Map bodyPlaceholders, List additionalRecipients,Long amendmentId) { HubEntity hubEntity = hubService.valdateHub(applicationEntity.getHubId()); String service = determineService(applicationEntity.getHubId()); @@ -77,11 +77,7 @@ 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.APPLICATION,Utils.listToCommaSeparatedString(recipientEmails),userEntity.getId()); - if(Boolean.TRUE.equals(isAmendment) && amendmentId !=null){ - emailLogRequest.setEntitytype(EmailEntityTypeEnum.AMENDMENT); - emailLogRequest.setEntityId(amendmentId); - } + EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(systemEmailTemplateResponse.getEmailScenario(), RecipientTypeEnum.BENEFICIARY,userEntity.getBeneficiary().getId(),Utils.listToCommaSeparatedString(recipientEmails),userEntity.getId(),applicationEntity.getId(),amendmentId ,applicationEntity.getCall().getId()); sendMail(applicationEntity.getHubId(), subject, body, recipientEmails,emailLogRequest); } private List getRecipientEmails(ApplicationEntity applicationEntity, UserEntity userEntity, List additionalRecipients) { @@ -141,7 +137,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,true,applicationAmendmentRequest.getId()); + sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST, bodyPlaceholders, null,applicationAmendmentRequest.getId()); } public void sendApplicationFailureNotificationEmail(ApplicationAmendmentRequestEntity amendmentRequest) { @@ -151,14 +147,14 @@ public class EmailNotificationDao { Map bodyPlaceholders = new HashMap<>(); bodyPlaceholders.put("{{call_name}}", applicationEntity.getCall().getName()); LocalDateTime lastReminderDateTime=amendmentRequest.getCreatedDate(); - List emailLogEntity = emailLogRepository.findByUserIdAndEntityIdAndEntityTypeAndIsDeletedFalse(user.getId(),amendmentRequest.getId(),EmailEntityTypeEnum.AMENDMENT.getValue()); + List emailLogEntity = emailLogRepository.findByUserIdAndAmendmentIdAndIsDeletedFalse(user.getId(),amendmentRequest.getId()); if(emailLogEntity!=null && (!emailLogEntity.isEmpty())){ EmailLogEntity emailLogEntity1=emailLogEntity.get(0); lastReminderDateTime=emailLogEntity1.getSendDateTime(); } bodyPlaceholders.put("{{date_time_emailSend}}", DateTimeUtil.formatLocalDateTime(lastReminderDateTime, GepafinConstant.DD_MM_YYYY)); - sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE, bodyPlaceholders, null,true,amendmentRequest.getId()); + sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE, bodyPlaceholders, null,amendmentRequest.getId()); } public void sendAdmissibilityNotificationEmailForApprovedApplication(ApplicationEntity applicationEntity) { @@ -168,7 +164,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,false,null); + sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.ADMISSIBILITY_NOTIFICATION, bodyPlaceholders, null,null); } public void sendInadmissibilityEmailForRejectedApplication(ApplicationEntity applicationEntity,ApplicationEvaluationEntity applicationEvaluationEntity) { @@ -179,7 +175,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,false,null); + sendEmail(applicationEntity, SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.INADMISSIBILITY_TEMPLATE, bodyPlaceholders, null,null); } public void sendMail(Long hubId, String subject, String body, List recipientEmails, EmailLogRequest emailLogRequest) { diff --git a/src/main/java/net/gepafin/tendermanagement/entities/EmailLogEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/EmailLogEntity.java index 8c2729a1..03ad4c2b 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/EmailLogEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/EmailLogEntity.java @@ -45,11 +45,14 @@ public class EmailLogEntity extends BaseEntity{ @Column(name = "user_id") private Long userId; - @Column(name = "entity_id") - private Long entityId; + @Column(name = "application_id") + private Long applicationId; - @Column(name = "entity_type") - private String entityType; + @Column(name = "amendment_id") + private Long amendmentId; + + @Column(name = "call_id") + private Long callId; @Column(name = "is_deleted") private Boolean isDeleted; diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/EmailLogRequest.java b/src/main/java/net/gepafin/tendermanagement/model/request/EmailLogRequest.java index b6e8c07b..b85f0e15 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/EmailLogRequest.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/EmailLogRequest.java @@ -23,10 +23,6 @@ public class EmailLogRequest { private String errorMessage; - private Long entityId; - - private EmailEntityTypeEnum entitytype; - private Long userId; private String emailServiceResponse; @@ -35,4 +31,10 @@ public class EmailLogRequest { private String recipientEmails; + private Long applicatioId; + + private Long amendmentId; + + private Long callId; + } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/EmailLogRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/EmailLogRepository.java index 8cc9b470..20475e0b 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/EmailLogRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/EmailLogRepository.java @@ -7,5 +7,5 @@ import java.util.List; public interface EmailLogRepository extends JpaRepository { - List findByUserIdAndEntityIdAndEntityTypeAndIsDeletedFalse(Long userId,Long entityId,String entityType); + List findByUserIdAndAmendmentIdAndIsDeletedFalse(Long userId,Long amendmentId); } 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 3bf2ecd8..978ea459 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/MailgunEmailService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/MailgunEmailService.java @@ -45,7 +45,9 @@ public class MailgunEmailService implements EmailService { // Send email via Mailgun API HttpResponse response2=null; if (Boolean.FALSE.equals(validator.isTestProfileActivated())) { - + emailLogRequest.setEmailSubject(subject); + emailLogRequest.setEmailBody(body); + emailLogRequest.setSendStatus(StatusTypeEnum.SUCCESS.getValue()); emailLogRequest.setRecipientEmails(Utils.listToCommaSeparatedString(recipientEmails)); try { Unirest.setTimeouts(0, 0); 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 81991f69..4d076bb4 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/PecEmailService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/PecEmailService.java @@ -50,6 +50,9 @@ public class PecEmailService implements EmailService { String authToken = emailConfig.getAuthToken(); HttpResponse response2=null; if (Boolean.FALSE.equals(validator.isTestProfileActivated())) { + emailLogRequest.setEmailSubject(emailRequest.getSubject()); + emailLogRequest.setEmailBody(emailRequest.getBody()); + emailLogRequest.setSendStatus(StatusTypeEnum.SUCCESS.getValue()); emailLogRequest.setRecipientEmails(Utils.listToCommaSeparatedString(emailRequest.getRecipient())); try { Unirest.setTimeouts(0, 0); 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 58641af4..a7fe774d 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 @@ -1775,6 +1775,14 @@ + + + + + + + +