improvements on nflow workflows

This commit is contained in:
2025-09-14 11:50:52 +02:00
parent e13e8e1ffe
commit 1db27e22b2
11 changed files with 176 additions and 124 deletions

View File

@@ -1,46 +0,0 @@
package zw.qantra.tm.domain.services;
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import zw.qantra.tm.domain.dtos.EmailRequest;
import java.util.Objects;
@Slf4j
@Service
@RequiredArgsConstructor
public class EmailService {
private final JavaMailSender mailSender;
/**
* Sends an email based on the provided EmailRequest
* @param emailRequest the email request containing recipient, subject, and body
* @return true if the email was sent successfully, false otherwise
*/
public boolean sendEmail(EmailRequest emailRequest) {
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setTo(emailRequest.getTo());
if (emailRequest.getCc() != null && !emailRequest.getCc().isEmpty()) {
helper.setCc(emailRequest.getCc().toArray(new String[0]));
}
helper.setSubject(emailRequest.getSubject());
helper.setText(emailRequest.getBody(), emailRequest.isHtml());
mailSender.send(message);
log.info("Email sent successfully to {}", emailRequest.getTo());
return true;
} catch (MessagingException e) {
log.error("Failed to send email to {}: {}", emailRequest.getTo(), e.getMessage(), e);
return false;
}
}
}

View File

@@ -7,7 +7,6 @@ import zw.qantra.tm.domain.models.Otp;
import zw.qantra.tm.domain.repositories.OtpRepository;
import java.security.SecureRandom;
import java.time.LocalDateTime;
import java.util.Optional;
@Service
@@ -21,9 +20,6 @@ public class OtpService {
private final OtpRepository otpRepository;
public Otp generateOtp(String username, String otpType) {
// Delete any existing OTP for this username and type
otpRepository.deleteByUsernameAndOtpType(username, otpType);
String otpCode = generateRandomOtp();
Otp otp = Otp.builder()
@@ -37,7 +33,8 @@ public class OtpService {
}
public boolean verifyOtp(String username, String otpCode, String otpType) {
Optional<Otp> otpOpt = otpRepository.findByUsernameAndOtpTypeAndOtp(username, otpType, otpCode);
Optional<Otp> otpOpt = otpRepository.findByUsernameAndOtpTypeAndOtpAndOtpStatus(
username, otpType, otpCode, Status.ACTIVE);
if (otpOpt.isEmpty()) {
return false;