Done ticket GEPAFINBE-92

This commit is contained in:
nisha
2024-11-15 19:55:24 +05:30
parent 526a831357
commit 7485cead14
26 changed files with 257 additions and 164 deletions

View File

@@ -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>

View File

@@ -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));

View File

@@ -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);
} }

View File

@@ -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;
} }
} }

View File

@@ -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));

View File

@@ -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;
} }

View File

@@ -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;
} }

View File

@@ -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;
}

View File

@@ -36,6 +36,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 {
APPLICATION_SUBMISSION_TO_USER_AND_COMPANY("APPLICATION_SUBMISSION_TO_USER_AND_COMPANY"), APPLICATION_SUBMISSION_TO_USER_AND_COMPANY("APPLICATION_SUBMISSION_TO_USER_AND_COMPANY"),

View File

@@ -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;
} }

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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;
} }

View File

@@ -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;
} }

View File

@@ -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;

View File

@@ -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);
} }

View File

@@ -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
);
}

View File

@@ -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;
// }
//
// }
} }

View File

@@ -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);
} }

View File

@@ -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;
@@ -19,9 +23,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);
} }

View File

@@ -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);
} }
} }

View File

@@ -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());
}
} }

View File

@@ -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>

View File

@@ -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';

View File

@@ -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 ;