86 lines
3.5 KiB
Java
86 lines
3.5 KiB
Java
package net.gepafin.tendermanagement.service.impl;
|
|
|
|
import com.mashape.unirest.http.HttpResponse;
|
|
import com.mashape.unirest.http.Unirest;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import net.gepafin.tendermanagement.dao.EmailLogDao;
|
|
import net.gepafin.tendermanagement.entities.EmailLogEntity;
|
|
import net.gepafin.tendermanagement.enums.EmailServiceTypeEnum;
|
|
import net.gepafin.tendermanagement.enums.StatusTypeEnum;
|
|
import net.gepafin.tendermanagement.model.request.EmailConfig;
|
|
import net.gepafin.tendermanagement.model.request.EmailLogRequest;
|
|
import net.gepafin.tendermanagement.model.request.PecEmailRequest;
|
|
import net.gepafin.tendermanagement.util.Utils;
|
|
import net.gepafin.tendermanagement.util.Validator;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.List;
|
|
|
|
@Slf4j
|
|
@Service
|
|
public class PecEmailService implements EmailService {
|
|
|
|
@Value("${isMailSendingEnabled}")
|
|
private String isEmailSendingEnabled;
|
|
|
|
@Value("${isPecServiceEnabled}")
|
|
private String isPecServiceEnabled;
|
|
|
|
@Autowired
|
|
private Validator validator;
|
|
|
|
@Autowired
|
|
private EmailLogDao emailLogDao;
|
|
|
|
@Override
|
|
public void sendEmail(String subject, String body, List<String> recipientEmails, EmailConfig emailConfig, EmailLogRequest emailLogRequest) {
|
|
|
|
if (Boolean.FALSE.equals(Boolean.parseBoolean(isEmailSendingEnabled))) {
|
|
return;
|
|
}
|
|
|
|
PecEmailRequest emailRequest = new PecEmailRequest();
|
|
emailRequest.setSender(emailConfig.getSender());
|
|
emailRequest.setSubject(subject);
|
|
emailRequest.setBody(body);
|
|
emailRequest.setUsername(emailConfig.getUsername());
|
|
emailRequest.setPassword(emailConfig.getPassword());
|
|
emailRequest.setRecipient(recipientEmails);
|
|
String url=emailConfig.getUrl();
|
|
String authToken = emailConfig.getAuthToken();
|
|
HttpResponse<String> response2=null;
|
|
if (Boolean.FALSE.equals(validator.isTestProfileActivated())) {
|
|
emailLogRequest.setEmailSubject(emailRequest.getSubject());
|
|
emailLogRequest.setEmailBody(emailRequest.getBody());
|
|
emailLogRequest.setSendStatus(StatusTypeEnum.SUCCESS.getValue());
|
|
emailLogRequest.setRecipientEmails(Utils.listToCommaSeparatedString(emailRequest.getRecipient()));
|
|
try {
|
|
if (Boolean.TRUE.equals(Boolean.parseBoolean(isPecServiceEnabled))) {
|
|
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.setEmailServiceType(EmailServiceTypeEnum.PEC_SERVICE);
|
|
emailLogRequest.setErrorMessage(e.getMessage());
|
|
emailLogDao.createEmailLog(emailLogRequest);
|
|
throw new RuntimeException("Failed to send email via PEC: " + response2.getStatus());
|
|
}
|
|
if(response2 != null) {
|
|
emailLogRequest.setEmailServiceResponse(response2.getBody());
|
|
}
|
|
}
|
|
emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.PEC_SERVICE);
|
|
emailLogDao.createEmailLog(emailLogRequest);
|
|
}
|
|
}
|
|
|
|
|