diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index 5b22cdf..4498b32 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -7,6 +7,8 @@ import ru.ulstu.paper.model.Paper; import ru.ulstu.paper.model.PaperDto; import ru.ulstu.paper.model.PaperStatusDto; import ru.ulstu.paper.repository.PaperRepository; +import ru.ulstu.user.model.UserDto; +import ru.ulstu.user.service.MailService; import java.io.IOException; import java.util.Arrays; @@ -20,11 +22,14 @@ public class PaperService { private final PaperRepository paperRepository; private final FileService fileService; + public final MailService mailService; + public PaperService(PaperRepository paperRepository, - FileService fileService) { + FileService fileService, MailService mailService) { this.paperRepository = paperRepository; this.fileService = fileService; + this.mailService = mailService; } public List findAll() { @@ -62,6 +67,9 @@ public class PaperService { @Transactional public Integer update(PaperDto paperDto) throws IOException { Paper paper = paperRepository.findOne(paperDto.getId()); + if(paper != null && paper.getStatus() != paperDto.getStatus()){ + sendMessageAboutStatusChange(paper.getStatus(),paperDto); + } if (paperDto.getTmpFileName() != null && paper.getFileData() != null) { fileService.deleteFile(paper.getFileData()); } @@ -80,4 +88,12 @@ public class PaperService { public List getPaperStatuses() { return convert(Arrays.asList(Paper.PaperStatus.values()), status ->new PaperStatusDto(status)); } + + private void sendMessageAboutStatusChange(Paper.PaperStatus oldStatus, PaperDto paper){ + for (UserDto user: paper.getAuthors()) { + mailService.sendEmail(user.getEmail(), "Обновление статуса статьи", + "Статус статьи " + paper.getTitle() + " сменился с " + oldStatus.getName() + + " на " + paper.getStatus().getName()); + } + } }