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

@@ -595,7 +595,7 @@ public class ApplicationAmendmentRequestDao {
String body = prepareBody(emailTemplate, amendment, beneficiaryUser);
String email = beneficiaryUser.getEmail();
if (Boolean.TRUE.equals(amendment.getIsEmail())&&email != null && !email.isEmpty()) {
EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(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);
} else {
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
String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders);
String body = Utils.replacePlaceholders(systemEmailTemplateResponse.getHtmlContent(), bodyPlaceholders);
EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(systemEmailTemplateResponse.getEmailScenario(),RecipientTypeEnum.USER,userEntity.getId(),subject,body, StatusTypeEnum.SUCCESS.getValue(), null,applicationEntity.getId(), EmailEntityTypeEnum.APPLICATION,userEntity.getEmail(),userEntity.getId());
String email = userEntity.getEmail();
if (userEntity.getBeneficiary() != null) {
emailLogRequest.setRecipientType(RecipientTypeEnum.BENEFICIARY);
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);
List<String> recipientEmails = new ArrayList<>();
// recipientEmails.add(email);
@@ -810,6 +811,11 @@ public class ApplicationDao {
if (contactEmail != null && !contactEmail.isEmpty() && !contactEmail.equals(companyEmail)) {
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);
}
private void sendMailTodefaultSystemAndGepafin(UserEntity userEntity, ApplicationEntity applicationEntity) {
@@ -837,17 +843,21 @@ public class ApplicationDao {
String subject = Utils.replacePlaceholders(systemEmailTemplateResponse.getSubject(), subjectPlaceholders);
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(gepafinEmail), null);
// mailUtil.sendByMailGun(subject, body, List.of(rinaldoEmail), null);
if(validator.isProductionProfileActivated()) {
emailLogRequest.setRecipientEmails(carloEmail);
// mailUtil.sendByMailGun(subject, body, List.of(carloEmail), null);
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(carloEmail),emailLogRequest);
}
emailLogRequest.setRecipientEmails(gepafinEmail);
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(gepafinEmail),emailLogRequest);
emailLogRequest.setRecipientEmails(defaultSystemReceiverEmail);
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(defaultSystemReceiverEmail),emailLogRequest);
emailLogRequest.setRecipientEmails(rinaldoEmail);
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(rinaldoEmail),emailLogRequest);
}

View File

@@ -1,17 +1,12 @@
package net.gepafin.tendermanagement.dao;
import net.gepafin.tendermanagement.entities.EmailLogEntity;
import net.gepafin.tendermanagement.entities.EmailTrackingEntity;
import net.gepafin.tendermanagement.entities.UserEntity;
import net.gepafin.tendermanagement.enums.EmailTrackingEntityTypeEnum;
import net.gepafin.tendermanagement.enums.EmailScenarioTypeEnum;
import net.gepafin.tendermanagement.enums.EmailEntityTypeEnum;
import net.gepafin.tendermanagement.enums.RecipientTypeEnum;
import net.gepafin.tendermanagement.enums.StatusTypeEnum;
import net.gepafin.tendermanagement.model.request.EmailLogRequest;
import net.gepafin.tendermanagement.repositories.EmailLogRepository;
import net.gepafin.tendermanagement.repositories.EmailTrackingRepository;
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.stereotype.Component;
@@ -23,13 +18,10 @@ public class EmailLogDao {
@Autowired
private EmailLogRepository emailLogRepository;
@Autowired
private EmailTrackingRepository emailTrackingRepository;
public EmailLogEntity createEmailLog(EmailLogRequest emailLogRequest){
EmailLogEntity emailLogEntity=new EmailLogEntity();
emailLogEntity.setEmailType(emailLogRequest.getEmailType());
emailLogEntity.setEmailType(emailLogRequest.getEmailType().getValue());
emailLogEntity.setRecipientType(emailLogRequest.getRecipientType().getValue());
emailLogEntity.setRecipientId(emailLogRequest.getRecipientId());
emailLogEntity.setEmailSubject(emailLogRequest.getEmailSubject());
@@ -37,32 +29,22 @@ public class EmailLogDao {
emailLogEntity.setSendStatus(emailLogRequest.getSendStatus());
emailLogEntity.setSendDateTime(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); // Set to now if null
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){
EmailTrackingEntity emailTrackingEntity=createEmailTrackingEntity(emailLogEntity,emailLogRequest);
if(emailTrackingEntity==null){
emailLogEntity.setErrorMessage("Failed while creating email tracking entity");
emailLogEntity.setSendStatus(StatusTypeEnum.FAILED.getValue());
emailLogEntity=saveEmailLogEntity(emailLogEntity);
}
emailLogEntity.setEntityId(emailLogRequest.getEntityId());
emailLogEntity.setEntityType(emailLogRequest.getEntitytype().getValue());
}
emailLogEntity=saveEmailLogEntity(emailLogEntity);
return emailLogEntity;
}
public EmailLogEntity saveEmailLogEntity(EmailLogEntity emailLogEntity){
return emailLogRepository.save(emailLogEntity);
}
public EmailTrackingEntity createEmailTrackingEntity(EmailLogEntity emailLogEntity,EmailLogRequest emailLogRequest){
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,
public EmailLogRequest createEmailLogRequest(EmailScenarioTypeEnum emailType, RecipientTypeEnum recipientType, Long recipientId,
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.setEmailType(emailType);
emailLogRequest.setRecipientType(recipientType);
@@ -71,9 +53,10 @@ public class EmailLogDao {
emailLogRequest.setEmailBody(emailBody);
emailLogRequest.setSendStatus(sendStatus);
emailLogRequest.setErrorMessage(errorMessage);
emailLogRequest.setUserId(userId);
emailLogRequest.setEntityId(entityId);
emailLogRequest.setEntitytype(entityType);
emailLogRequest.setUser(user);
emailLogRequest.setRecipientEmails(recipientEmails);
return emailLogRequest;
}
}

View File

@@ -5,15 +5,13 @@ import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import net.gepafin.tendermanagement.constants.GepafinConstant;
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.StatusTypeEnum;
import net.gepafin.tendermanagement.model.request.EmailConfig;
import net.gepafin.tendermanagement.model.request.EmailLogRequest;
import net.gepafin.tendermanagement.model.response.SystemEmailTemplateResponse;
import net.gepafin.tendermanagement.repositories.CallRepository;
import net.gepafin.tendermanagement.repositories.EmailLogRepository;
import net.gepafin.tendermanagement.repositories.EmailTrackingRepository;
import net.gepafin.tendermanagement.repositories.HubRepository;
import net.gepafin.tendermanagement.service.ApplicationService;
import net.gepafin.tendermanagement.service.HubService;
@@ -57,9 +55,6 @@ public class EmailNotificationDao {
@Autowired
private EmailLogDao emailLogDao;
@Autowired
private EmailTrackingRepository emailTrackingRepository;
@Autowired
private EmailLogRepository emailLogRepository;
@@ -82,7 +77,7 @@ public class EmailNotificationDao {
UserEntity userEntity = userService.validateUser(applicationEntity.getUserId());
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);
}
@@ -153,14 +148,10 @@ public class EmailNotificationDao {
Map<String, String> bodyPlaceholders = new HashMap<>();
bodyPlaceholders.put("{{call_name}}", applicationEntity.getCall().getName());
LocalDateTime lastReminderDateTime=amendmentRequest.getCreatedDate();
List<EmailTrackingEntity> emailTrackingEntity=emailTrackingRepository.findFirstByEntityTypeAndEntityIdAndUser(EmailTrackingEntityTypeEnum.AMENDMENT.getValue(), amendmentRequest.getId(),user);
if(emailTrackingEntity != null && (!emailTrackingEntity.isEmpty())) {
EmailTrackingEntity emailTrackingEntity1=emailTrackingEntity.get(0);
List<EmailLogEntity> emailLogEntity = emailLogRepository.findByIdAndEmailTypeOrderByCreatedDateDesc(emailTrackingEntity1.getId(), SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum.DOCUMENTATION_INTEGRATION_REQUEST.getValue());
List<EmailLogEntity> emailLogEntity = emailLogRepository.findByUserIdAndEntityIdAndEntityType(user.getId(),amendmentRequest.getId(),EmailEntityTypeEnum.AMENDMENT.getValue());
if(emailLogEntity!=null && (!emailLogEntity.isEmpty())){
EmailLogEntity emailLogEntity1=emailLogEntity.get(0);
lastReminderDateTime=emailLogEntity1.getSendDateTime();
}
}
bodyPlaceholders.put("{{date_time_emailSend}}", DateTimeUtil.formatLocalDateTime(lastReminderDateTime, GepafinConstant.DD_MM_YYYY));

View File

@@ -4,6 +4,7 @@ import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import net.gepafin.tendermanagement.enums.EmailScenarioTypeEnum;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -78,6 +79,7 @@ public class SystemEmailTemplatesDao {
systemEmailTemplateResponse.setHtmlContent(htmlContent);
systemEmailTemplateResponse.setSubject(subject);
systemEmailTemplateResponse.setJsonMap(languageMap);
systemEmailTemplateResponse.setEmailScenario(EmailScenarioTypeEnum.valueOf(dbSystemEmailTemplatesEntity.getEmailScenario()));
return systemEmailTemplateResponse;
}