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 net.gepafin.tendermanagement.util.Validator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; 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; } @Value("${isMailSendingEnabled}") private String isEmailSendingEnabled; @Autowired private Validator validator; @Override public void sendEmail(String subject, String body, List recipientEmails, EmailConfig emailConfig) { if (Boolean.FALSE.equals(Boolean.parseBoolean(isEmailSendingEnabled))) { return; } PecEmailRequest emailRequest = new PecEmailRequest(); emailRequest.setSender(emailConfig.getSender()); emailRequest.setRecipient(List.of("rajeshkhoreupwork@gmail.com")); emailRequest.setSubject(subject); emailRequest.setBody(body); emailRequest.setUsername(emailConfig.getUsername()); emailRequest.setPassword(emailConfig.getPassword()); String authToken = emailConfig.getAuthToken(); if (Boolean.FALSE.equals(validator.isTestProfileActivated())) { ResponseEntity 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()); } } } }