Files
bflows-bandi-be/src/main/java/net/gepafin/tendermanagement/service/impl/PecEmailService.java

43 lines
1.6 KiB
Java

package net.gepafin.tendermanagement.service.impl;
import lombok.extern.slf4j.Slf4j;
import net.gepafin.tendermanagement.model.request.EmailConfig;
import net.gepafin.tendermanagement.model.request.PecEmailRequest;
import net.gepafin.tendermanagement.service.feignClient.PecFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service
public class PecEmailService implements EmailService {
private final PecFeignClient pecFeignClient;
public PecEmailService(PecFeignClient pecFeignClient) {
this.pecFeignClient = pecFeignClient;
}
@Override
public void sendEmail(String subject, String body, List<String> recipientEmails, EmailConfig emailConfig) {
PecEmailRequest emailRequest = new PecEmailRequest();
emailRequest.setSender(emailConfig.getSender());
emailRequest.setRecipient(recipientEmails);
emailRequest.setSubject(subject);
emailRequest.setBody(body);
emailRequest.setUsername(emailConfig.getUsername());
emailRequest.setPassword(emailConfig.getPassword());
String authToken = emailConfig.getAuthToken();
ResponseEntity<Void> response = pecFeignClient.sendEmail("Bearer " + authToken, emailRequest);
log.info("Mail response status: {}, headers: {}, body: {}", response.getStatusCode(), response.getHeaders(), response.getBody());
if (!response.getStatusCode().is2xxSuccessful()) {
throw new RuntimeException("Failed to send email via PEC: " + response.getStatusCode());
}
}
}