Done ticket GEPAFINBE-92
This commit is contained in:
7
pom.xml
7
pom.xml
@@ -29,6 +29,13 @@
|
|||||||
<artifactId>lombok</artifactId>
|
<artifactId>lombok</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- https://mvnrepository.com/artifact/com.mashape.unirest/unirest-java -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.mashape.unirest</groupId>
|
||||||
|
<artifactId>unirest-java</artifactId>
|
||||||
|
<version>1.4.9</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- H2 Database for in-memory testing -->
|
<!-- H2 Database for in-memory testing -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.h2database</groupId>
|
<groupId>com.h2database</groupId>
|
||||||
|
|||||||
@@ -595,7 +595,7 @@ public class ApplicationAmendmentRequestDao {
|
|||||||
String body = prepareBody(emailTemplate, amendment, beneficiaryUser);
|
String body = prepareBody(emailTemplate, amendment, beneficiaryUser);
|
||||||
String email = beneficiaryUser.getEmail();
|
String email = beneficiaryUser.getEmail();
|
||||||
if (Boolean.TRUE.equals(amendment.getIsEmail())&&email != null && !email.isEmpty()) {
|
if (Boolean.TRUE.equals(amendment.getIsEmail())&&email != null && !email.isEmpty()) {
|
||||||
EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(SystemEmailTemplatesEntityTypeEnum.AMENDMENT_REMINDER.getValue(),RecipientTypeEnum.BENEFICIARY,beneficiaryUser.getId(),subject,body,StatusTypeEnum.SUCCESS.getValue(), null,amendment.getId(),EmailTrackingEntityTypeEnum.AMENDMENT,beneficiaryUser);
|
EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(emailTemplate.getEmailScenario(),RecipientTypeEnum.USER,beneficiaryUser.getId(),subject,body,StatusTypeEnum.SUCCESS.getValue(), null,amendment.getId(), EmailEntityTypeEnum.AMENDMENT,beneficiaryUser.getEmail(),beneficiaryUser.getId());
|
||||||
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(email),emailLogRequest);
|
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(email),emailLogRequest);
|
||||||
} else {
|
} else {
|
||||||
throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.BENEFICIARY_EMAIL_NOT_FOUND_MSG));
|
throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.BENEFICIARY_EMAIL_NOT_FOUND_MSG));
|
||||||
|
|||||||
@@ -791,12 +791,13 @@ public class ApplicationDao {
|
|||||||
// Replace placeholders in the subject and body
|
// Replace placeholders in the subject and body
|
||||||
String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders);
|
String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders);
|
||||||
String body = Utils.replacePlaceholders(systemEmailTemplateResponse.getHtmlContent(), bodyPlaceholders);
|
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();
|
String email = userEntity.getEmail();
|
||||||
if (userEntity.getBeneficiary() != null) {
|
if (userEntity.getBeneficiary() != null) {
|
||||||
|
emailLogRequest.setRecipientType(RecipientTypeEnum.BENEFICIARY);
|
||||||
email = userEntity.getBeneficiary().getEmail();
|
email = userEntity.getBeneficiary().getEmail();
|
||||||
|
emailLogRequest.setUserId(userEntity.getBeneficiary().getId());
|
||||||
}
|
}
|
||||||
EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(SystemEmailTemplatesEntityTypeEnum.APPLICATION_SUBMISSION_TO_USER_AND_COMPANY.getValue(),RecipientTypeEnum.BENEFICIARY,userEntity.getId(),subject,body, StatusTypeEnum.SUCCESS.getValue(), null,applicationEntity.getId(),EmailTrackingEntityTypeEnum.APPLICATION,userEntity);
|
|
||||||
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(email),emailLogRequest);
|
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(email),emailLogRequest);
|
||||||
List<String> recipientEmails = new ArrayList<>();
|
List<String> recipientEmails = new ArrayList<>();
|
||||||
// recipientEmails.add(email);
|
// recipientEmails.add(email);
|
||||||
@@ -810,6 +811,11 @@ public class ApplicationDao {
|
|||||||
if (contactEmail != null && !contactEmail.isEmpty() && !contactEmail.equals(companyEmail)) {
|
if (contactEmail != null && !contactEmail.isEmpty() && !contactEmail.equals(companyEmail)) {
|
||||||
recipientEmails.add(contactEmail);
|
recipientEmails.add(contactEmail);
|
||||||
}
|
}
|
||||||
|
if(Boolean.FALSE.equals(recipientEmails.isEmpty())){
|
||||||
|
emailLogRequest.setRecipientId(applicationEntity.getCompany().getId());
|
||||||
|
emailLogRequest.setRecipientType(RecipientTypeEnum.COMPANY);
|
||||||
|
emailLogRequest.setRecipientEmails(companyEmail);
|
||||||
|
}
|
||||||
emailNotificationDao.sendMail(hub.getId(), subject, body, recipientEmails,emailLogRequest);
|
emailNotificationDao.sendMail(hub.getId(), subject, body, recipientEmails,emailLogRequest);
|
||||||
}
|
}
|
||||||
private void sendMailTodefaultSystemAndGepafin(UserEntity userEntity, ApplicationEntity applicationEntity) {
|
private void sendMailTodefaultSystemAndGepafin(UserEntity userEntity, ApplicationEntity applicationEntity) {
|
||||||
@@ -837,17 +843,21 @@ public class ApplicationDao {
|
|||||||
String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders);
|
String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders);
|
||||||
String body = Utils.replacePlaceholders(systemEmailTemplateResponse.getHtmlContent(), bodyPlaceholders);
|
String body = Utils.replacePlaceholders(systemEmailTemplateResponse.getHtmlContent(), bodyPlaceholders);
|
||||||
|
|
||||||
EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(SystemEmailTemplatesEntityTypeEnum.APPLICATION_SUBMISSION_TO_GEPAFIN.getValue(),RecipientTypeEnum.BENEFICIARY,userEntity.getId(),subject,body,StatusTypeEnum.SUCCESS.getValue(), null,applicationEntity.getId(),EmailTrackingEntityTypeEnum.APPLICATION,userEntity);
|
EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(systemEmailTemplateResponse.getEmailScenario(),RecipientTypeEnum.PROPERTIES,null,subject,body,StatusTypeEnum.SUCCESS.getValue(), null,applicationEntity.getId(), EmailEntityTypeEnum.APPLICATION,userEntity.getEmail(),userEntity.getId());
|
||||||
|
|
||||||
// mailUtil.sendByMailGun(subject, body, List.of(defaultSystemReceiverEmail), null);
|
// mailUtil.sendByMailGun(subject, body, List.of(defaultSystemReceiverEmail), null);
|
||||||
// mailUtil.sendByMailGun(subject, body, List.of(gepafinEmail), null);
|
// mailUtil.sendByMailGun(subject, body, List.of(gepafinEmail), null);
|
||||||
// mailUtil.sendByMailGun(subject, body, List.of(rinaldoEmail), null);
|
// mailUtil.sendByMailGun(subject, body, List.of(rinaldoEmail), null);
|
||||||
if(validator.isProductionProfileActivated()) {
|
if(validator.isProductionProfileActivated()) {
|
||||||
|
emailLogRequest.setRecipientEmails(carloEmail);
|
||||||
// mailUtil.sendByMailGun(subject, body, List.of(carloEmail), null);
|
// mailUtil.sendByMailGun(subject, body, List.of(carloEmail), null);
|
||||||
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(carloEmail),emailLogRequest);
|
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(carloEmail),emailLogRequest);
|
||||||
}
|
}
|
||||||
|
emailLogRequest.setRecipientEmails(gepafinEmail);
|
||||||
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(gepafinEmail),emailLogRequest);
|
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(gepafinEmail),emailLogRequest);
|
||||||
|
emailLogRequest.setRecipientEmails(defaultSystemReceiverEmail);
|
||||||
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(defaultSystemReceiverEmail),emailLogRequest);
|
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(defaultSystemReceiverEmail),emailLogRequest);
|
||||||
|
emailLogRequest.setRecipientEmails(rinaldoEmail);
|
||||||
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(rinaldoEmail),emailLogRequest);
|
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(rinaldoEmail),emailLogRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,12 @@
|
|||||||
package net.gepafin.tendermanagement.dao;
|
package net.gepafin.tendermanagement.dao;
|
||||||
|
|
||||||
import net.gepafin.tendermanagement.entities.EmailLogEntity;
|
import net.gepafin.tendermanagement.entities.EmailLogEntity;
|
||||||
import net.gepafin.tendermanagement.entities.EmailTrackingEntity;
|
import net.gepafin.tendermanagement.enums.EmailScenarioTypeEnum;
|
||||||
import net.gepafin.tendermanagement.entities.UserEntity;
|
import net.gepafin.tendermanagement.enums.EmailEntityTypeEnum;
|
||||||
import net.gepafin.tendermanagement.enums.EmailTrackingEntityTypeEnum;
|
|
||||||
import net.gepafin.tendermanagement.enums.RecipientTypeEnum;
|
import net.gepafin.tendermanagement.enums.RecipientTypeEnum;
|
||||||
import net.gepafin.tendermanagement.enums.StatusTypeEnum;
|
|
||||||
import net.gepafin.tendermanagement.model.request.EmailLogRequest;
|
import net.gepafin.tendermanagement.model.request.EmailLogRequest;
|
||||||
import net.gepafin.tendermanagement.repositories.EmailLogRepository;
|
import net.gepafin.tendermanagement.repositories.EmailLogRepository;
|
||||||
import net.gepafin.tendermanagement.repositories.EmailTrackingRepository;
|
|
||||||
import net.gepafin.tendermanagement.util.DateTimeUtil;
|
import net.gepafin.tendermanagement.util.DateTimeUtil;
|
||||||
import net.gepafin.tendermanagement.util.FieldValidator;
|
|
||||||
import org.checkerframework.checker.units.qual.A;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -23,13 +18,10 @@ public class EmailLogDao {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private EmailLogRepository emailLogRepository;
|
private EmailLogRepository emailLogRepository;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private EmailTrackingRepository emailTrackingRepository;
|
|
||||||
|
|
||||||
|
|
||||||
public EmailLogEntity createEmailLog(EmailLogRequest emailLogRequest){
|
public EmailLogEntity createEmailLog(EmailLogRequest emailLogRequest){
|
||||||
EmailLogEntity emailLogEntity=new EmailLogEntity();
|
EmailLogEntity emailLogEntity=new EmailLogEntity();
|
||||||
emailLogEntity.setEmailType(emailLogRequest.getEmailType());
|
emailLogEntity.setEmailType(emailLogRequest.getEmailType().getValue());
|
||||||
emailLogEntity.setRecipientType(emailLogRequest.getRecipientType().getValue());
|
emailLogEntity.setRecipientType(emailLogRequest.getRecipientType().getValue());
|
||||||
emailLogEntity.setRecipientId(emailLogRequest.getRecipientId());
|
emailLogEntity.setRecipientId(emailLogRequest.getRecipientId());
|
||||||
emailLogEntity.setEmailSubject(emailLogRequest.getEmailSubject());
|
emailLogEntity.setEmailSubject(emailLogRequest.getEmailSubject());
|
||||||
@@ -37,32 +29,22 @@ public class EmailLogDao {
|
|||||||
emailLogEntity.setSendStatus(emailLogRequest.getSendStatus());
|
emailLogEntity.setSendStatus(emailLogRequest.getSendStatus());
|
||||||
emailLogEntity.setSendDateTime(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); // Set to now if null
|
emailLogEntity.setSendDateTime(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); // Set to now if null
|
||||||
emailLogEntity.setErrorMessage(emailLogRequest.getErrorMessage());
|
emailLogEntity.setErrorMessage(emailLogRequest.getErrorMessage());
|
||||||
emailLogEntity=saveEmailLogEntity(emailLogEntity);
|
emailLogEntity.setUserId(emailLogRequest.getUserId());
|
||||||
|
emailLogEntity.setEmailServiceResponse(emailLogRequest.getEmailServiceResponse());
|
||||||
|
emailLogEntity.setRecipientEmails(emailLogRequest.getRecipientEmails());
|
||||||
if(emailLogRequest.getEntityId()!=null && emailLogRequest.getEntityId()>0){
|
if(emailLogRequest.getEntityId()!=null && emailLogRequest.getEntityId()>0){
|
||||||
EmailTrackingEntity emailTrackingEntity=createEmailTrackingEntity(emailLogEntity,emailLogRequest);
|
emailLogEntity.setEntityId(emailLogRequest.getEntityId());
|
||||||
if(emailTrackingEntity==null){
|
emailLogEntity.setEntityType(emailLogRequest.getEntitytype().getValue());
|
||||||
emailLogEntity.setErrorMessage("Failed while creating email tracking entity");
|
|
||||||
emailLogEntity.setSendStatus(StatusTypeEnum.FAILED.getValue());
|
|
||||||
emailLogEntity=saveEmailLogEntity(emailLogEntity);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
emailLogEntity=saveEmailLogEntity(emailLogEntity);
|
||||||
return emailLogEntity;
|
return emailLogEntity;
|
||||||
}
|
}
|
||||||
public EmailLogEntity saveEmailLogEntity(EmailLogEntity emailLogEntity){
|
public EmailLogEntity saveEmailLogEntity(EmailLogEntity emailLogEntity){
|
||||||
return emailLogRepository.save(emailLogEntity);
|
return emailLogRepository.save(emailLogEntity);
|
||||||
}
|
}
|
||||||
public EmailTrackingEntity createEmailTrackingEntity(EmailLogEntity emailLogEntity,EmailLogRequest emailLogRequest){
|
public EmailLogRequest createEmailLogRequest(EmailScenarioTypeEnum emailType, RecipientTypeEnum recipientType, Long recipientId,
|
||||||
EmailTrackingEntity emailTrackingEntity=new EmailTrackingEntity();
|
|
||||||
emailTrackingEntity.setEmailLog(emailLogEntity);
|
|
||||||
emailTrackingEntity.setEntityId(emailLogRequest.getEntityId());
|
|
||||||
emailTrackingEntity.setEntityType(emailLogRequest.getEntitytype().getValue());
|
|
||||||
emailTrackingEntity.setUser(emailLogRequest.getUser());
|
|
||||||
emailTrackingRepository.save(emailTrackingEntity);
|
|
||||||
return emailTrackingEntity;
|
|
||||||
}
|
|
||||||
public EmailLogRequest createEmailLogRequest(String emailType, RecipientTypeEnum recipientType, Long recipientId,
|
|
||||||
String emailSubject, String emailBody, String sendStatus,
|
String emailSubject, String emailBody, String sendStatus,
|
||||||
String errorMessage, Long entityId, EmailTrackingEntityTypeEnum entityType, UserEntity user) {
|
String errorMessage, Long entityId, EmailEntityTypeEnum entityType, String recipientEmails, Long userId) {
|
||||||
EmailLogRequest emailLogRequest = new EmailLogRequest();
|
EmailLogRequest emailLogRequest = new EmailLogRequest();
|
||||||
emailLogRequest.setEmailType(emailType);
|
emailLogRequest.setEmailType(emailType);
|
||||||
emailLogRequest.setRecipientType(recipientType);
|
emailLogRequest.setRecipientType(recipientType);
|
||||||
@@ -71,9 +53,10 @@ public class EmailLogDao {
|
|||||||
emailLogRequest.setEmailBody(emailBody);
|
emailLogRequest.setEmailBody(emailBody);
|
||||||
emailLogRequest.setSendStatus(sendStatus);
|
emailLogRequest.setSendStatus(sendStatus);
|
||||||
emailLogRequest.setErrorMessage(errorMessage);
|
emailLogRequest.setErrorMessage(errorMessage);
|
||||||
|
emailLogRequest.setUserId(userId);
|
||||||
emailLogRequest.setEntityId(entityId);
|
emailLogRequest.setEntityId(entityId);
|
||||||
emailLogRequest.setEntitytype(entityType);
|
emailLogRequest.setEntitytype(entityType);
|
||||||
emailLogRequest.setUser(user);
|
emailLogRequest.setRecipientEmails(recipientEmails);
|
||||||
return emailLogRequest;
|
return emailLogRequest;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,15 +5,13 @@ import com.fasterxml.jackson.core.type.TypeReference;
|
|||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
||||||
import net.gepafin.tendermanagement.entities.*;
|
import net.gepafin.tendermanagement.entities.*;
|
||||||
import net.gepafin.tendermanagement.enums.EmailTrackingEntityTypeEnum;
|
import net.gepafin.tendermanagement.enums.EmailEntityTypeEnum;
|
||||||
import net.gepafin.tendermanagement.enums.RecipientTypeEnum;
|
import net.gepafin.tendermanagement.enums.RecipientTypeEnum;
|
||||||
import net.gepafin.tendermanagement.enums.StatusTypeEnum;
|
import net.gepafin.tendermanagement.enums.StatusTypeEnum;
|
||||||
import net.gepafin.tendermanagement.model.request.EmailConfig;
|
import net.gepafin.tendermanagement.model.request.EmailConfig;
|
||||||
import net.gepafin.tendermanagement.model.request.EmailLogRequest;
|
import net.gepafin.tendermanagement.model.request.EmailLogRequest;
|
||||||
import net.gepafin.tendermanagement.model.response.SystemEmailTemplateResponse;
|
import net.gepafin.tendermanagement.model.response.SystemEmailTemplateResponse;
|
||||||
import net.gepafin.tendermanagement.repositories.CallRepository;
|
|
||||||
import net.gepafin.tendermanagement.repositories.EmailLogRepository;
|
import net.gepafin.tendermanagement.repositories.EmailLogRepository;
|
||||||
import net.gepafin.tendermanagement.repositories.EmailTrackingRepository;
|
|
||||||
import net.gepafin.tendermanagement.repositories.HubRepository;
|
import net.gepafin.tendermanagement.repositories.HubRepository;
|
||||||
import net.gepafin.tendermanagement.service.ApplicationService;
|
import net.gepafin.tendermanagement.service.ApplicationService;
|
||||||
import net.gepafin.tendermanagement.service.HubService;
|
import net.gepafin.tendermanagement.service.HubService;
|
||||||
@@ -57,9 +55,6 @@ public class EmailNotificationDao {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private EmailLogDao emailLogDao;
|
private EmailLogDao emailLogDao;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private EmailTrackingRepository emailTrackingRepository;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private EmailLogRepository emailLogRepository;
|
private EmailLogRepository emailLogRepository;
|
||||||
|
|
||||||
@@ -82,7 +77,7 @@ public class EmailNotificationDao {
|
|||||||
|
|
||||||
UserEntity userEntity = userService.validateUser(applicationEntity.getUserId());
|
UserEntity userEntity = userService.validateUser(applicationEntity.getUserId());
|
||||||
List<String> recipientEmails = getRecipientEmails(applicationEntity, userEntity, additionalRecipients);
|
List<String> recipientEmails = getRecipientEmails(applicationEntity, userEntity, additionalRecipients);
|
||||||
EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(String.valueOf(templateType), RecipientTypeEnum.BENEFICIARY,userEntity.getId(),subject,body, StatusTypeEnum.SUCCESS.getValue(), null, amendmentRequest.getId(), EmailTrackingEntityTypeEnum.AMENDMENT,userEntity);
|
EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(systemEmailTemplateResponse.getEmailScenario(), RecipientTypeEnum.BENEFICIARY,userEntity.getBeneficiary().getId(),subject,body, StatusTypeEnum.SUCCESS.getValue(), null, amendmentRequest.getId(), EmailEntityTypeEnum.AMENDMENT,Utils.listToCommaSeparatedString(recipientEmails),userEntity.getId());
|
||||||
|
|
||||||
sendMail(applicationEntity.getHubId(), subject, body, recipientEmails,emailLogRequest);
|
sendMail(applicationEntity.getHubId(), subject, body, recipientEmails,emailLogRequest);
|
||||||
}
|
}
|
||||||
@@ -153,14 +148,10 @@ public class EmailNotificationDao {
|
|||||||
Map<String, String> bodyPlaceholders = new HashMap<>();
|
Map<String, String> bodyPlaceholders = new HashMap<>();
|
||||||
bodyPlaceholders.put("{{call_name}}", applicationEntity.getCall().getName());
|
bodyPlaceholders.put("{{call_name}}", applicationEntity.getCall().getName());
|
||||||
LocalDateTime lastReminderDateTime=amendmentRequest.getCreatedDate();
|
LocalDateTime lastReminderDateTime=amendmentRequest.getCreatedDate();
|
||||||
List<EmailTrackingEntity> emailTrackingEntity=emailTrackingRepository.findFirstByEntityTypeAndEntityIdAndUser(EmailTrackingEntityTypeEnum.AMENDMENT.getValue(), amendmentRequest.getId(),user);
|
List<EmailLogEntity> emailLogEntity = emailLogRepository.findByUserIdAndEntityIdAndEntityType(user.getId(),amendmentRequest.getId(),EmailEntityTypeEnum.AMENDMENT.getValue());
|
||||||
if(emailTrackingEntity != null && (!emailTrackingEntity.isEmpty())) {
|
|
||||||
EmailTrackingEntity emailTrackingEntity1=emailTrackingEntity.get(0);
|
|
||||||
List<EmailLogEntity> emailLogEntity = emailLogRepository.findByIdAndEmailTypeOrderByCreatedDateDesc(emailTrackingEntity1.getId(), SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST.getValue());
|
|
||||||
if(emailLogEntity!=null && (!emailLogEntity.isEmpty())){
|
if(emailLogEntity!=null && (!emailLogEntity.isEmpty())){
|
||||||
EmailLogEntity emailLogEntity1=emailLogEntity.get(0);
|
EmailLogEntity emailLogEntity1=emailLogEntity.get(0);
|
||||||
lastReminderDateTime=emailLogEntity1.getSendDateTime();
|
lastReminderDateTime=emailLogEntity1.getSendDateTime();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
bodyPlaceholders.put("{{date_time_emailSend}}", DateTimeUtil.formatLocalDateTime(lastReminderDateTime, GepafinConstant.DD_MM_YYYY));
|
bodyPlaceholders.put("{{date_time_emailSend}}", DateTimeUtil.formatLocalDateTime(lastReminderDateTime, GepafinConstant.DD_MM_YYYY));
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import java.util.HashMap;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import net.gepafin.tendermanagement.enums.EmailScenarioTypeEnum;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
@@ -78,6 +79,7 @@ public class SystemEmailTemplatesDao {
|
|||||||
systemEmailTemplateResponse.setHtmlContent(htmlContent);
|
systemEmailTemplateResponse.setHtmlContent(htmlContent);
|
||||||
systemEmailTemplateResponse.setSubject(subject);
|
systemEmailTemplateResponse.setSubject(subject);
|
||||||
systemEmailTemplateResponse.setJsonMap(languageMap);
|
systemEmailTemplateResponse.setJsonMap(languageMap);
|
||||||
|
systemEmailTemplateResponse.setEmailScenario(EmailScenarioTypeEnum.valueOf(dbSystemEmailTemplatesEntity.getEmailScenario()));
|
||||||
return systemEmailTemplateResponse;
|
return systemEmailTemplateResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,5 +33,22 @@ public class EmailLogEntity extends BaseEntity{
|
|||||||
@Column(name = "error_message", columnDefinition = "TEXT")
|
@Column(name = "error_message", columnDefinition = "TEXT")
|
||||||
private String errorMessage;
|
private String errorMessage;
|
||||||
|
|
||||||
|
@Column(name = "email_service_response")
|
||||||
|
private String emailServiceResponse;
|
||||||
|
|
||||||
|
@Column(name = "email_service_type")
|
||||||
|
private String emailServiceType;
|
||||||
|
|
||||||
|
@Column(name = "recipient_emails")
|
||||||
|
private String recipientEmails;
|
||||||
|
|
||||||
|
@Column(name = "user_id")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@Column(name = "entity_id")
|
||||||
|
private Long entityId;
|
||||||
|
|
||||||
|
@Column(name = "entity_type")
|
||||||
|
private String entityType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
package net.gepafin.tendermanagement.entities;
|
|
||||||
import jakarta.persistence.*;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@Data
|
|
||||||
@Table(name = "email_tracking")
|
|
||||||
public class EmailTrackingEntity extends BaseEntity{
|
|
||||||
|
|
||||||
|
|
||||||
@ManyToOne
|
|
||||||
@JoinColumn(name = "email_log_id", nullable = false, foreignKey = @ForeignKey(name = "fk_email_log_id"))
|
|
||||||
private EmailLogEntity emailLog;
|
|
||||||
|
|
||||||
@ManyToOne
|
|
||||||
@JoinColumn(name = "user_id", nullable = false, foreignKey = @ForeignKey(name = "fk_user_id"))
|
|
||||||
private UserEntity user;
|
|
||||||
|
|
||||||
@Column(name = "entity_id", nullable = false)
|
|
||||||
private Long entityId;
|
|
||||||
|
|
||||||
@Column(name = "entity_type", nullable = false, length = 255)
|
|
||||||
private String entityType;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -35,6 +35,9 @@ public class SystemEmailTemplatesEntity extends BaseEntity {
|
|||||||
|
|
||||||
@Column(name ="IS_DELETED", nullable = false)
|
@Column(name ="IS_DELETED", nullable = false)
|
||||||
private Boolean isDeleted = false;
|
private Boolean isDeleted = false;
|
||||||
|
|
||||||
|
@Column(name = "email_scenario")
|
||||||
|
private String emailScenario;
|
||||||
|
|
||||||
public enum SystemEmailTemplatesEntityTypeEnum {
|
public enum SystemEmailTemplatesEntityTypeEnum {
|
||||||
|
|
||||||
|
|||||||
@@ -2,14 +2,14 @@ package net.gepafin.tendermanagement.enums;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonValue;
|
import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
|
|
||||||
public enum EmailTrackingEntityTypeEnum {
|
public enum EmailEntityTypeEnum {
|
||||||
|
|
||||||
AMENDMENT("AMENDMENT"),
|
AMENDMENT("AMENDMENT"),
|
||||||
APPLICATION("APPLICATION");
|
APPLICATION("APPLICATION");
|
||||||
|
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
EmailTrackingEntityTypeEnum(String value) {
|
EmailEntityTypeEnum(String value) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package net.gepafin.tendermanagement.enums;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
|
|
||||||
|
public enum EmailScenarioTypeEnum {
|
||||||
|
|
||||||
|
APPLICATION_SUBMITTED("APPLICATION_SUBMITTED"),
|
||||||
|
APPLICATION_AMENDMENT_REQUESTED("APPLICATION_AMENDMENT_REQUESTED"),
|
||||||
|
APPLICATION_AMENDMENT_EXPIRED("APPLICATION_AMENDMENT_EXPIRED"),
|
||||||
|
APPLICATION_AMENDMENT_REMINDER("APPLICATION_AMENDMENT_REMINDER"),
|
||||||
|
APPLICATION_APPROVED("APPLICATION_APPROVED"),
|
||||||
|
APPLICATION_REJECTED("APPLICATION_REJECTED");
|
||||||
|
|
||||||
|
private final String value;
|
||||||
|
|
||||||
|
EmailScenarioTypeEnum(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonValue
|
||||||
|
public String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package net.gepafin.tendermanagement.enums;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonValue;
|
||||||
|
|
||||||
|
public enum EmailServiceTypeEnum {
|
||||||
|
|
||||||
|
MAILGUN("MAILGUN"),
|
||||||
|
PEC("PEC");
|
||||||
|
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
EmailServiceTypeEnum(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonValue
|
||||||
|
public String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,7 +6,8 @@ public enum RecipientTypeEnum {
|
|||||||
|
|
||||||
BENEFICIARY ("BENEFICIARY"),
|
BENEFICIARY ("BENEFICIARY"),
|
||||||
USER("USER"),
|
USER("USER"),
|
||||||
COMPANY("COMPANY");
|
COMPANY("COMPANY"),
|
||||||
|
PROPERTIES("PROPERTIES");
|
||||||
|
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ public class EmailConfig {
|
|||||||
private String domain;
|
private String domain;
|
||||||
private String mailgunApiUrl;
|
private String mailgunApiUrl;
|
||||||
private String pecApiUrl;
|
private String pecApiUrl;
|
||||||
|
private String url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
package net.gepafin.tendermanagement.model.request;
|
package net.gepafin.tendermanagement.model.request;
|
||||||
|
|
||||||
import jakarta.persistence.Column;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.gepafin.tendermanagement.entities.UserEntity;
|
import net.gepafin.tendermanagement.enums.EmailScenarioTypeEnum;
|
||||||
import net.gepafin.tendermanagement.enums.EmailTrackingEntityTypeEnum;
|
import net.gepafin.tendermanagement.enums.EmailEntityTypeEnum;
|
||||||
|
import net.gepafin.tendermanagement.enums.EmailServiceTypeEnum;
|
||||||
import net.gepafin.tendermanagement.enums.RecipientTypeEnum;
|
import net.gepafin.tendermanagement.enums.RecipientTypeEnum;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class EmailLogRequest {
|
public class EmailLogRequest {
|
||||||
|
|
||||||
private String emailType;
|
private EmailScenarioTypeEnum emailType;
|
||||||
|
|
||||||
private RecipientTypeEnum recipientType;
|
private RecipientTypeEnum recipientType;
|
||||||
|
|
||||||
@@ -25,7 +25,14 @@ public class EmailLogRequest {
|
|||||||
|
|
||||||
private Long entityId;
|
private Long entityId;
|
||||||
|
|
||||||
private EmailTrackingEntityTypeEnum entitytype;
|
private EmailEntityTypeEnum entitytype;
|
||||||
|
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
private String emailServiceResponse;
|
||||||
|
|
||||||
|
private EmailServiceTypeEnum emailServiceType;
|
||||||
|
|
||||||
|
private String recipientEmails;
|
||||||
|
|
||||||
private UserEntity user;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,10 +3,13 @@ package net.gepafin.tendermanagement.model.response;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import net.gepafin.tendermanagement.enums.EmailScenarioTypeEnum;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class SystemEmailTemplateResponse {
|
public class SystemEmailTemplateResponse {
|
||||||
|
|
||||||
|
EmailScenarioTypeEnum emailScenario;
|
||||||
|
|
||||||
String htmlContent;
|
String htmlContent;
|
||||||
|
|
||||||
String subject;
|
String subject;
|
||||||
|
|||||||
@@ -7,5 +7,5 @@ import java.util.List;
|
|||||||
|
|
||||||
public interface EmailLogRepository extends JpaRepository<EmailLogEntity,Long> {
|
public interface EmailLogRepository extends JpaRepository<EmailLogEntity,Long> {
|
||||||
|
|
||||||
List<EmailLogEntity> findByIdAndEmailTypeOrderByCreatedDateDesc(Long id, String emailType);
|
List<EmailLogEntity> findByUserIdAndEntityIdAndEntityType(Long userId,Long entityId,String entityType);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
package net.gepafin.tendermanagement.repositories;
|
|
||||||
|
|
||||||
import net.gepafin.tendermanagement.entities.EmailTrackingEntity;
|
|
||||||
import net.gepafin.tendermanagement.entities.UserEntity;
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Repository
|
|
||||||
public interface EmailTrackingRepository extends JpaRepository<EmailTrackingEntity,Long> {
|
|
||||||
|
|
||||||
List<EmailTrackingEntity> findFirstByEntityTypeAndEntityIdAndUser(
|
|
||||||
String entityType, Long entityId, UserEntity user
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,24 +1,40 @@
|
|||||||
package net.gepafin.tendermanagement.service.feignClient;
|
package net.gepafin.tendermanagement.service.feignClient;
|
||||||
|
|
||||||
import org.springframework.cloud.openfeign.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.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestHeader;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@FeignClient(name = "mailgunClient", url = "${mailGun_base_url}")
|
//@FeignClient(name = "mailgunClient", url = "${mailGun_base_url}")
|
||||||
public interface MailgunFeignClient {
|
public interface MailgunFeignClient {
|
||||||
@PostMapping("/v3/{domain}/messages")
|
// @PostMapping(value = "/v3/{domain}/messages", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
ResponseEntity<Void> sendEmail(
|
// ResponseEntity<Void> sendEmail( @RequestPart("from") String from,
|
||||||
@PathVariable("domain") String domain,
|
// @RequestPart("to") List<String> to,
|
||||||
@RequestParam("from") String from,
|
// @RequestPart("subject") String subject,
|
||||||
@RequestParam("to") List<String> to,
|
// @RequestPart("text") String htmlBody,
|
||||||
@RequestParam("subject") String subject,
|
// @PathVariable("domain") String domain,
|
||||||
@RequestParam("html") String htmlBody,
|
//// @RequestBody PayloadDTO dto,
|
||||||
@RequestHeader("Authorization") String authorizationHeader);
|
// //RequestParam
|
||||||
|
//
|
||||||
|
// @RequestHeader HttpHeaders headers);
|
||||||
|
//
|
||||||
|
// public class PayloadDTO {
|
||||||
|
// public String from;
|
||||||
|
// public List<String> to;
|
||||||
|
// public String subject;
|
||||||
|
// public String htmlBody;
|
||||||
|
//
|
||||||
|
// public PayloadDTO(String from, List<String> to, String subject, String htmlBody) {
|
||||||
|
// this.from = from;
|
||||||
|
// this.to = to;
|
||||||
|
// this.subject = subject;
|
||||||
|
// this.htmlBody = htmlBody;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,15 +3,16 @@ package net.gepafin.tendermanagement.service.feignClient;
|
|||||||
import feign.Headers;
|
import feign.Headers;
|
||||||
import net.gepafin.tendermanagement.model.request.PecEmailRequest;
|
import net.gepafin.tendermanagement.model.request.PecEmailRequest;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestHeader;
|
import org.springframework.web.bind.annotation.RequestHeader;
|
||||||
|
|
||||||
@FeignClient(name = "pecClient", url = "${api.pecUrl}")
|
//@FeignClient(name = "pecClient", url = "${api.pecUrl}")
|
||||||
public interface PecFeignClient {
|
public interface PecFeignClient {
|
||||||
@PostMapping("/send")
|
// @PostMapping("/send")
|
||||||
ResponseEntity<Void> sendEmail(@RequestHeader("Authorization") String token,
|
// ResponseEntity<Void> sendEmail(@RequestHeader HttpHeaders headers,
|
||||||
@RequestBody PecEmailRequest emailRequest);
|
// @RequestBody PecEmailRequest emailRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,20 @@
|
|||||||
package net.gepafin.tendermanagement.service.impl;
|
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.dao.EmailLogDao;
|
||||||
import net.gepafin.tendermanagement.entities.EmailLogEntity;
|
import net.gepafin.tendermanagement.entities.EmailLogEntity;
|
||||||
|
import net.gepafin.tendermanagement.enums.EmailServiceTypeEnum;
|
||||||
import net.gepafin.tendermanagement.enums.StatusTypeEnum;
|
import net.gepafin.tendermanagement.enums.StatusTypeEnum;
|
||||||
import net.gepafin.tendermanagement.model.request.EmailConfig;
|
import net.gepafin.tendermanagement.model.request.EmailConfig;
|
||||||
import net.gepafin.tendermanagement.model.request.EmailLogRequest;
|
import net.gepafin.tendermanagement.model.request.EmailLogRequest;
|
||||||
import net.gepafin.tendermanagement.service.feignClient.MailgunFeignClient;
|
import net.gepafin.tendermanagement.service.feignClient.MailgunFeignClient;
|
||||||
|
import net.gepafin.tendermanagement.util.Utils;
|
||||||
import net.gepafin.tendermanagement.util.Validator;
|
import net.gepafin.tendermanagement.util.Validator;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.http.ResponseEntity;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
@@ -18,9 +22,6 @@ import java.util.List;
|
|||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class MailgunEmailService implements EmailService {
|
public class MailgunEmailService implements EmailService {
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private MailgunFeignClient mailgunFeignClient;
|
|
||||||
|
|
||||||
@Value("${isMailSendingEnabled}")
|
@Value("${isMailSendingEnabled}")
|
||||||
private String isEmailSendingEnabled;
|
private String isEmailSendingEnabled;
|
||||||
@@ -38,21 +39,36 @@ public class MailgunEmailService implements EmailService {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String domain = emailConfig.getDomain();
|
String url = emailConfig.getUrl();
|
||||||
String from = emailConfig.getSender();
|
String from = emailConfig.getSender();
|
||||||
String apiKey = emailConfig.getApiKey();
|
String apiKey = emailConfig.getApiKey();
|
||||||
String authHeader = "Basic " + Base64.getEncoder().encodeToString(("api:" + apiKey).getBytes());
|
String authHeader = "Basic " + Base64.getEncoder().encodeToString(("api:" + apiKey).getBytes());
|
||||||
|
|
||||||
// Send email via Mailgun API
|
// Send email via Mailgun API
|
||||||
|
HttpResponse<String> response2=null;
|
||||||
if (Boolean.FALSE.equals(validator.isTestProfileActivated())) {
|
if (Boolean.FALSE.equals(validator.isTestProfileActivated())) {
|
||||||
ResponseEntity<Void> response = mailgunFeignClient.sendEmail(domain, from, recipientEmails, subject, body, authHeader);
|
|
||||||
if (!response.getStatusCode().is2xxSuccessful()) {
|
emailLogRequest.setRecipientEmails(Utils.listToCommaSeparatedString(recipientEmails));
|
||||||
|
try {
|
||||||
|
Unirest.setTimeouts(0, 0);
|
||||||
|
response2 = Unirest.post(url)
|
||||||
|
.header("Authorization", authHeader)
|
||||||
|
// .header("content-type", "multipart/form-data")
|
||||||
|
.field("from", from)
|
||||||
|
.field("to", recipientEmails)
|
||||||
|
.field("subject", subject)
|
||||||
|
.field("html", body)
|
||||||
|
.asString();
|
||||||
|
}catch(Exception e) {
|
||||||
emailLogRequest.setSendStatus(StatusTypeEnum.FAILED.getValue());
|
emailLogRequest.setSendStatus(StatusTypeEnum.FAILED.getValue());
|
||||||
emailLogRequest.setErrorMessage(String.valueOf(response.getStatusCode()));
|
emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.MAILGUN);
|
||||||
|
emailLogRequest.setErrorMessage(e.getMessage());
|
||||||
EmailLogEntity emailLogEntity= emailLogDao.createEmailLog(emailLogRequest);
|
EmailLogEntity emailLogEntity= emailLogDao.createEmailLog(emailLogRequest);
|
||||||
throw new RuntimeException("Failed to send email via Mailgun: " + response.getStatusCode());
|
throw new RuntimeException("Failed to send email via Mailgun: " + response2.getStatus());
|
||||||
}
|
}
|
||||||
|
emailLogRequest.setEmailServiceResponse(response2.getBody());
|
||||||
}
|
}
|
||||||
|
emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.MAILGUN);
|
||||||
EmailLogEntity emailLogEntity= emailLogDao.createEmailLog(emailLogRequest);
|
EmailLogEntity emailLogEntity= emailLogDao.createEmailLog(emailLogRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,25 @@
|
|||||||
package net.gepafin.tendermanagement.service.impl;
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
|
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
||||||
import net.gepafin.tendermanagement.dao.EmailLogDao;
|
import net.gepafin.tendermanagement.dao.EmailLogDao;
|
||||||
import net.gepafin.tendermanagement.entities.EmailLogEntity;
|
import net.gepafin.tendermanagement.entities.EmailLogEntity;
|
||||||
|
import net.gepafin.tendermanagement.enums.EmailServiceTypeEnum;
|
||||||
import net.gepafin.tendermanagement.enums.StatusTypeEnum;
|
import net.gepafin.tendermanagement.enums.StatusTypeEnum;
|
||||||
import net.gepafin.tendermanagement.model.request.EmailConfig;
|
import net.gepafin.tendermanagement.model.request.EmailConfig;
|
||||||
import net.gepafin.tendermanagement.model.request.EmailLogRequest;
|
import net.gepafin.tendermanagement.model.request.EmailLogRequest;
|
||||||
import net.gepafin.tendermanagement.model.request.PecEmailRequest;
|
import net.gepafin.tendermanagement.model.request.PecEmailRequest;
|
||||||
import net.gepafin.tendermanagement.service.feignClient.PecFeignClient;
|
import net.gepafin.tendermanagement.service.feignClient.PecFeignClient;
|
||||||
|
import net.gepafin.tendermanagement.util.Utils;
|
||||||
import net.gepafin.tendermanagement.util.Validator;
|
import net.gepafin.tendermanagement.util.Validator;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -20,12 +28,6 @@ import java.util.List;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class PecEmailService implements EmailService {
|
public class PecEmailService implements EmailService {
|
||||||
private final PecFeignClient pecFeignClient;
|
|
||||||
|
|
||||||
public PecEmailService(PecFeignClient pecFeignClient) {
|
|
||||||
|
|
||||||
this.pecFeignClient = pecFeignClient;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Value("${isMailSendingEnabled}")
|
@Value("${isMailSendingEnabled}")
|
||||||
private String isEmailSendingEnabled;
|
private String isEmailSendingEnabled;
|
||||||
@@ -45,23 +47,33 @@ public class PecEmailService implements EmailService {
|
|||||||
|
|
||||||
PecEmailRequest emailRequest = new PecEmailRequest();
|
PecEmailRequest emailRequest = new PecEmailRequest();
|
||||||
emailRequest.setSender(emailConfig.getSender());
|
emailRequest.setSender(emailConfig.getSender());
|
||||||
emailRequest.setRecipient(recipientEmails);
|
|
||||||
emailRequest.setSubject(subject);
|
emailRequest.setSubject(subject);
|
||||||
emailRequest.setBody(body);
|
emailRequest.setBody(body);
|
||||||
emailRequest.setUsername(emailConfig.getUsername());
|
emailRequest.setUsername(emailConfig.getUsername());
|
||||||
emailRequest.setPassword(emailConfig.getPassword());
|
emailRequest.setPassword(emailConfig.getPassword());
|
||||||
|
String url=emailConfig.getUrl();
|
||||||
String authToken = emailConfig.getAuthToken();
|
String authToken = emailConfig.getAuthToken();
|
||||||
|
HttpResponse<String> response2=null;
|
||||||
if (Boolean.FALSE.equals(validator.isTestProfileActivated())) {
|
if (Boolean.FALSE.equals(validator.isTestProfileActivated())) {
|
||||||
ResponseEntity<Void> response = pecFeignClient.sendEmail("Bearer " + authToken, emailRequest);
|
emailLogRequest.setRecipientEmails(Utils.listToCommaSeparatedString(emailRequest.getRecipient()));
|
||||||
log.info("Mail response status: {}, headers: {}, body: {}", response.getStatusCode(), response.getHeaders(), response.getBody());
|
try {
|
||||||
if (!response.getStatusCode().is2xxSuccessful()) {
|
Unirest.setTimeouts(0, 0);
|
||||||
|
response2 = Unirest.post(url)
|
||||||
|
.header("Authorization", "Bearer " + authToken)
|
||||||
|
.header("Content-Type", "application/json")
|
||||||
|
.body(Utils.convertObjectToJson(emailRequest)) // Serialize the emailRequest object to JSON
|
||||||
|
.asString();
|
||||||
|
}catch(Exception e) {
|
||||||
emailLogRequest.setSendStatus(StatusTypeEnum.FAILED.getValue());
|
emailLogRequest.setSendStatus(StatusTypeEnum.FAILED.getValue());
|
||||||
emailLogRequest.setErrorMessage(String.valueOf(response.getStatusCode()));
|
emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.PEC);
|
||||||
|
emailLogRequest.setErrorMessage(e.getMessage());
|
||||||
EmailLogEntity emailLogEntity= emailLogDao.createEmailLog(emailLogRequest);
|
EmailLogEntity emailLogEntity= emailLogDao.createEmailLog(emailLogRequest);
|
||||||
throw new RuntimeException("Failed to send email via PEC: " + response.getStatusCode());
|
throw new RuntimeException("Failed to send email via PEC: " + response2.getStatus());
|
||||||
}
|
}
|
||||||
|
emailLogRequest.setEmailServiceResponse(response2.getBody());
|
||||||
}
|
}
|
||||||
|
emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.PEC);
|
||||||
EmailLogEntity emailLogEntity= emailLogDao.createEmailLog(emailLogRequest);
|
EmailLogEntity emailLogEntity= emailLogDao.createEmailLog(emailLogRequest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import net.gepafin.tendermanagement.constants.GepafinConstant;
|
|||||||
import org.apache.commons.collections4.MapUtils;
|
import org.apache.commons.collections4.MapUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
@@ -40,6 +41,7 @@ import net.gepafin.tendermanagement.web.rest.api.errors.FeignClientForbiddenExce
|
|||||||
import net.gepafin.tendermanagement.web.rest.api.errors.FeignClientNotFoundException;
|
import net.gepafin.tendermanagement.web.rest.api.errors.FeignClientNotFoundException;
|
||||||
import net.gepafin.tendermanagement.web.rest.api.errors.FeignClientUnauthorizedException;
|
import net.gepafin.tendermanagement.web.rest.api.errors.FeignClientUnauthorizedException;
|
||||||
import net.gepafin.tendermanagement.web.rest.api.errors.FeignClientValidationException;
|
import net.gepafin.tendermanagement.web.rest.api.errors.FeignClientValidationException;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
|
||||||
import javax.crypto.Cipher;
|
import javax.crypto.Cipher;
|
||||||
import javax.crypto.spec.IvParameterSpec;
|
import javax.crypto.spec.IvParameterSpec;
|
||||||
@@ -515,4 +517,7 @@ public class Utils {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
public static <T> String listToCommaSeparatedString(List<T> list) {
|
||||||
|
return String.join(", ", list.stream().map(String::valueOf).toList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1720,7 +1720,7 @@
|
|||||||
<sqlFile dbms="postgresql"
|
<sqlFile dbms="postgresql"
|
||||||
path="db/dump/update_system_email_template_for_notification_mail_05_11_2024_4.sql"/>
|
path="db/dump/update_system_email_template_for_notification_mail_05_11_2024_4.sql"/>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
<changeSet id="12-11-2024_1" author="Nisha Kashyap">
|
<changeSet id="15-11-2024_1" author="Nisha Kashyap">
|
||||||
<createTable tableName="email_log">
|
<createTable tableName="email_log">
|
||||||
<column autoIncrement="true" name="id" type="INTEGER">
|
<column autoIncrement="true" name="id" type="INTEGER">
|
||||||
<constraints nullable="false" primaryKey="true"
|
<constraints nullable="false" primaryKey="true"
|
||||||
@@ -1733,7 +1733,6 @@
|
|||||||
<constraints nullable="false"/>
|
<constraints nullable="false"/>
|
||||||
</column>
|
</column>
|
||||||
<column name="recipient_id" type="INTEGER">
|
<column name="recipient_id" type="INTEGER">
|
||||||
<constraints nullable="false"/>
|
|
||||||
</column>
|
</column>
|
||||||
<column name="email_subject" type="TEXT"/>
|
<column name="email_subject" type="TEXT"/>
|
||||||
<column name="email_body" type="TEXT"/>
|
<column name="email_body" type="TEXT"/>
|
||||||
@@ -1741,32 +1740,24 @@
|
|||||||
<column name="send_date_time" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
<column name="send_date_time" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||||
<column name="created_date" type="TIMESTAMP WITHOUT TIME ZONE" defaultValueComputed="CURRENT_TIMESTAMP"/>
|
<column name="created_date" type="TIMESTAMP WITHOUT TIME ZONE" defaultValueComputed="CURRENT_TIMESTAMP"/>
|
||||||
<column name="updated_date" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
<column name="updated_date" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||||
|
<column name="email_service_response" type="TEXT"></column>
|
||||||
|
<column name="email_service_type" type="VARCHAR(255)"></column>
|
||||||
|
<column name="recipient_emails" type="TEXT"></column>
|
||||||
|
<column name="user_id" type="INTEGER"></column>
|
||||||
<column name="error_message" type="TEXT"/>
|
<column name="error_message" type="TEXT"/>
|
||||||
|
<column name="entity_id" type="INTEGER"></column>
|
||||||
|
<column name="entity_type" type="VARCHAR(255)"></column>
|
||||||
</createTable>
|
</createTable>
|
||||||
<createTable tableName="email_tracking">
|
</changeSet>
|
||||||
<column autoIncrement="true" name="id" type="INTEGER">
|
<changeSet id="15-11-2024_2" author="Nisha kashyap">
|
||||||
<constraints nullable="false" primaryKey="true" primaryKeyName="pk_email_template_mapping"/>
|
<addColumn tableName="system_email_template">
|
||||||
</column>
|
<column name="email_scenario" type="VARCHAR(255)"></column>
|
||||||
<!-- Foreign key to email_logs table -->
|
</addColumn>
|
||||||
<column name="email_log_id" type="INTEGER">
|
<sqlFile dbms="postgresql"
|
||||||
<constraints nullable="false" foreignKeyName="fk_email_log_id" references="email_log(id)"/>
|
path="db/dump/updated_system_email_template_for_email_scenario_15-11-2024.sql"/>
|
||||||
</column>
|
<sqlFile dbms="postgresql"
|
||||||
<column name="user_id" type="INTEGER">
|
path="db/dump/updated_hub_data_for_email_service_config_15-11-2024.sql"/>
|
||||||
<constraints nullable="false" foreignKeyName="fk_user_id" references="gepafin_user(id)"/>
|
|
||||||
</column>
|
|
||||||
<!-- The ID of the associated entity -->
|
|
||||||
<column name="entity_id" type="INTEGER">
|
|
||||||
<constraints nullable="false"/>
|
|
||||||
</column>
|
|
||||||
<!-- The type of the associated entity (e.g., USER, APPLICATION) -->
|
|
||||||
<column name="entity_type" type="VARCHAR(255)">
|
|
||||||
<constraints nullable="false"/>
|
|
||||||
</column>
|
|
||||||
<column name="created_date" type="TIMESTAMP WITHOUT TIME ZONE" defaultValueComputed="CURRENT_TIMESTAMP"/>
|
|
||||||
<column name="updated_date" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
|
||||||
</createTable>
|
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</databaseChangeLog>
|
</databaseChangeLog>
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
UPDATE hub
|
||||||
|
SET email_service_type = 'PEC_SERVICE',
|
||||||
|
email_service_config = 'JkFbBfuVvq7VWwp5LcWIi+hAa1RJ1ekI0jq3w7gLTXETZiTaN8zC4OBWD53x8FtbfFTh3L/5805CIYTH1BQGa3X9q16q9SDzMy7DKHdmJzOnLKhn74C5akoXKaeXUCGnzp0cSk2c01FV6lwefC29IshijFSumCHtVlgWNeZigBzmWK+M7NS+EXf4goIMzguL5bHpYXfoQunQozeY1SpOo+28gDDpzZRMXdtcwKkTgESFGwsy6S1m1TBxJwZC7p8W'
|
||||||
|
WHERE UNIQUE_UUID = 'p4lk3bcx1RStqTaIVVbXs';
|
||||||
|
|
||||||
|
UPDATE hub
|
||||||
|
SET email_service_type = 'MAILGUN_SERVICE',
|
||||||
|
email_service_config = 'QlICHJMvBHd09ci/B2+EDR0q6kFsEdu5gOSI1hgG/7SAm2wXQZagDsAbkBrA6JPHXUS3Bkw6UD9x5boYYxBi3tnpu16i0NgdZqcc2BBhMF1VgRlJMgX+KgsOJsnQbHAJ/9YZaeIVrJpxceHFx93NTbfjT3TzzaZ9cW/64wbeZFspEp6WwgKgV1/3+j297Q1QtKIiWKanolYaU9myx9KwPJZc8AmPe0PR2ViyA7VyGn6iQSrX2pr15tBw3xVIm0tfHh6pktHro4gRYs5CEypQ2cSbP5wv4Z6pDa//FHXzYpRvnb1AUh0thGOix5FZl9Kn'
|
||||||
|
WHERE UNIQUE_UUID = 't7jh5wfg9QXylNaTZkPoE';
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
UPDATE gepafin_schema.system_email_template SET email_scenario='APPLICATION_SUBMITTED' WHERE "type"='APPLICATION_SUBMISSION_TO_USER_AND_COMPANY' AND "system"=true ;
|
||||||
|
|
||||||
|
UPDATE gepafin_schema.system_email_template SET email_scenario='APPLICATION_SUBMITTED' WHERE "type"='APPLICATION_SUBMISSION_TO_GEPAFIN' AND "system"=true ;
|
||||||
|
|
||||||
|
UPDATE gepafin_schema.system_email_template SET email_scenario='APPLICATION_AMENDMENT_REMINDER' WHERE "type"='AMENDMENT_REMINDER' AND "system"=true ;
|
||||||
|
|
||||||
|
UPDATE gepafin_schema.system_email_template SET email_scenario='APPLICATION_AMENDMENT_EXPIRED' WHERE "type"='INADMISSIBILITY_NOTIFICATION_DUE_TO_FAILURE' AND "system"=true ;
|
||||||
|
|
||||||
|
UPDATE gepafin_schema.system_email_template SET email_scenario='APPLICATION_APPROVED' WHERE "type"='ADMISSIBILITY_NOTIFICATION' AND "system"=true ;
|
||||||
|
|
||||||
|
UPDATE gepafin_schema.system_email_template SET email_scenario='APPLICATION_REJECTED' WHERE "type"='INADMISSIBILITY_NOTIFICATION' AND "system"=true ;
|
||||||
|
|
||||||
|
UPDATE gepafin_schema.system_email_template SET email_scenario='APPLICATION_AMENDMENT_REQUESTED' WHERE "type"='DOCUMENTATION_INTEGRATION_REQUEST' AND "system"=true ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user