Skip to content
This repository was archived by the owner on Mar 2, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 3 additions & 13 deletions src/main/java/com/projecty/projectyweb/email/EmailService.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@

import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.thymeleaf.context.Context;
import org.thymeleaf.spring5.SpringTemplateEngine;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Map;

@Service
Expand All @@ -18,26 +16,18 @@ public class EmailService {
@Value("${spring.mail.username}")
private String from;

SendEmailService sendEmailService;

public EmailService(JavaMailSender javaMailSender, SpringTemplateEngine springTemplateEngine) {
this.javaMailSender = javaMailSender;
this.springTemplateEngine = springTemplateEngine;
}

public void sendEmail(String to, String subject, String text) throws MessagingException {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text, true);
javaMailSender.send(message);
}

public void sendMessageThymeleafTemplate(String to, String subject, Map<String, Object> templateModel) throws MessagingException {
Context context = new Context();
context.setVariables(templateModel);
String htmlBody = springTemplateEngine.process("email-template.html", context);
sendEmail(to, subject, htmlBody);
sendEmailService.sendEmail(to, from, subject, htmlBody);
}

}
30 changes: 30 additions & 0 deletions src/main/java/com/projecty/projectyweb/email/SendEmailService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.projecty.projectyweb.email;

import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

public class SendEmailService {

private final JavaMailSender javaMailSender;

public SendEmailService(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}


public void sendEmail(String from,
String to,
String subject,
String text) throws MessagingException {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(text, true);
javaMailSender.send(message);
}
}
26 changes: 16 additions & 10 deletions src/main/java/com/projecty/projectyweb/message/MessageService.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public Message sendMessage(
) throws BindException {
BindException bindException = new BindException(message, "message");
messageValidator.validate(message, bindException);
//

if (bindException.hasErrors()) {
throw bindException;
}
Expand All @@ -103,20 +103,26 @@ public Message reply(Long replyToMessageId,
User user = userService.getCurrentUser();
Optional<Message> optionalReplyToMessage = messageRepository.findById(replyToMessageId);
if (optionalReplyToMessage.isPresent()) {
Message replyToMessage = optionalReplyToMessage.get();
if (replyToMessage.getSender().equals(user)) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST);
}
message.setRecipientUsername(replyToMessage.getSender().getUsername());
message.setReplyTo(replyToMessage);
replyToMessage.setHasReply(true);
messageRepository.save(replyToMessage);
return sendMessage(message, multipartFiles);
return saveReply(user, message, optionalReplyToMessage.get(), multipartFiles);
} else {
throw new ResponseStatusException(HttpStatus.NOT_FOUND);
}
}

public Message saveReply(User user,
Message message,
Message replyToMessage,
List<MultipartFile> multipartFiles) throws BindException {
if (replyToMessage.getSender().equals(user)) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST);
}
message.setRecipientUsername(replyToMessage.getSender().getUsername());
message.setReplyTo(replyToMessage);
replyToMessage.setHasReply(true);
messageRepository.save(replyToMessage);
return sendMessage(message, multipartFiles);
}

public void deleteMessage(Message message) {
User currentUser = userService.getCurrentUser();
associationService.deleteMessageForUser(message, currentUser);
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/application-development.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
spring.datasource.url=jdbc:mysql://localhost:3306/projecty?createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.password=root123
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL8Dialect
spring.servlet.multipart.enabled=true
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
spring.application.name=Projecty Web

#This is a default profile to override this pass the active profile as parameter while running
spring.profiles.active=docker
spring.profiles.active=development

#supported languages
il8n.supported-languages=fr,en
Expand Down