diff --git a/src/main/java/ru/ulstu/activity/common/service/ActivityNotificationService.java b/src/main/java/ru/ulstu/activity/common/service/ActivityNotificationService.java index 745ccaf..7827b84 100644 --- a/src/main/java/ru/ulstu/activity/common/service/ActivityNotificationService.java +++ b/src/main/java/ru/ulstu/activity/common/service/ActivityNotificationService.java @@ -1,8 +1,25 @@ package ru.ulstu.activity.common.service; import ru.ulstu.activity.common.model.AbstractActivity; +import ru.ulstu.user.model.User; +import ru.ulstu.user.service.MailService; + +import java.util.Map; public abstract class ActivityNotificationService { + private final MailService mailService; + + protected ActivityNotificationService(MailService mailService) { + this.mailService = mailService; + } public abstract void sendCreateNotification(T entity); + + protected void sendForAuthor(Map variables, User author, String template, String title) { + mailService.sendEmailFromTemplate(variables, author, template, title); + } + + protected void sendForAllAuthors(Map variables, T entity, String template, String title) { + entity.getActivityMembers().forEach(author -> sendForAuthor(variables, author, template, title)); + } } diff --git a/src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java b/src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java index 7d94694..c76fb3a 100644 --- a/src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java +++ b/src/main/java/ru/ulstu/activity/conference/service/ConferenceNotificationService.java @@ -38,6 +38,7 @@ public class ConferenceNotificationService extends ActivityNotificationService private final static String TITLE_AUTHORS_CHANGED = "Изменился состав рабочей группы гранта: %s"; private final static String TITLE_LEADER_CHANGED = "Изменился руководитель гранта: %s"; - private final MailService mailService; - public GrantNotificationService(MailService mailService) { - this.mailService = mailService; + super(mailService); } public void sendDeadlineNotifications(List grants, boolean isDeadlineBeforeWeek) { @@ -65,10 +63,4 @@ public class GrantNotificationService extends ActivityNotificationService Map variables = ImmutableMap.of("grant", grant, "oldLeader", oldLeader); sendForAllAuthors(variables, grant, TEMPLATE_LEADER_CHANGED, String.format(TITLE_LEADER_CHANGED, grant.getTitle())); } - - private void sendForAllAuthors(Map variables, Grant grant, String template, String title) { - Set allAuthors = grant.getAuthors(); - allAuthors.forEach(author -> mailService.sendEmailFromTemplate(variables, author, template, title)); - mailService.sendEmailFromTemplate(variables, grant.getLeader(), template, title); - } } diff --git a/src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java b/src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java index 5da1937..0b9f78e 100644 --- a/src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java +++ b/src/main/java/ru/ulstu/activity/paper/service/PaperNotificationService.java @@ -26,11 +26,8 @@ public class PaperNotificationService extends ActivityNotificationService private final static String TITLE_STATUS_CHANGED = "Изменился статус статьи"; private final static String TITLE_FAILED = "Статья провалена"; - - private final MailService mailService; - public PaperNotificationService(MailService mailService) { - this.mailService = mailService; + super(mailService); } public void sendDeadlineNotifications(PageableItems papers, boolean isDeadlineBeforeWeek) { @@ -81,12 +78,4 @@ public class PaperNotificationService extends ActivityNotificationService Map variables = ImmutableMap.of("paper", paper, "oldStatus", oldStatus); sendForAllAuthors(variables, paper, TEMPLATE_FAILED, TITLE_FAILED); } - - private void sendForAuthor(Map variables, User author, String template, String title) { - mailService.sendEmailFromTemplate(variables, author, template, title); - } - - private void sendForAllAuthors(Map variables, Paper paper, String template, String title) { - paper.getAuthors().forEach(author -> sendForAuthor(variables, author, template, title)); - } } diff --git a/src/main/java/ru/ulstu/activity/project/service/ProjectNotificationService.java b/src/main/java/ru/ulstu/activity/project/service/ProjectNotificationService.java index 3bbf821..c8d6fcb 100644 --- a/src/main/java/ru/ulstu/activity/project/service/ProjectNotificationService.java +++ b/src/main/java/ru/ulstu/activity/project/service/ProjectNotificationService.java @@ -8,10 +8,8 @@ import ru.ulstu.user.service.MailService; @Service public class ProjectNotificationService extends ActivityNotificationService { - private final MailService mailService; - public ProjectNotificationService(MailService mailService) { - this.mailService = mailService; + super(mailService); } public void sendCreateNotification(Project project) { diff --git a/src/main/java/ru/ulstu/activity/students/service/TaskNotificationService.java b/src/main/java/ru/ulstu/activity/students/service/TaskNotificationService.java index bd9046e..621cd6d 100644 --- a/src/main/java/ru/ulstu/activity/students/service/TaskNotificationService.java +++ b/src/main/java/ru/ulstu/activity/students/service/TaskNotificationService.java @@ -1,20 +1,24 @@ package ru.ulstu.activity.students.service; +import com.google.common.collect.ImmutableMap; import org.springframework.stereotype.Service; import ru.ulstu.activity.common.service.ActivityNotificationService; import ru.ulstu.activity.students.model.Task; import ru.ulstu.user.service.MailService; +import java.util.Map; + @Service public class TaskNotificationService extends ActivityNotificationService { - - private final MailService mailService; + private final static String TEMPLATE_CREATE = "taskCreateNotification"; + private final static String TITLE_CREATE = "Создана задача"; public TaskNotificationService(MailService mailService) { - this.mailService = mailService; + super(mailService); } public void sendCreateNotification(Task task) { - throw new RuntimeException("not implemented yet"); + Map variables = ImmutableMap.of("task", task); + sendForAllAuthors(variables, task, TEMPLATE_CREATE, TITLE_CREATE); } } diff --git a/src/main/resources/mail_templates/taskCreateNotification.html b/src/main/resources/mail_templates/taskCreateNotification.html new file mode 100644 index 0000000..55ba526 --- /dev/null +++ b/src/main/resources/mail_templates/taskCreateNotification.html @@ -0,0 +1,23 @@ + + + + Уведомление о создании задачи + + + + +

+ Уважаемый(ая) Ivan Ivanov +

+

+ Вам нужно поработать над задачей "Title". +

+ +

+ Regards, +
+ NG-tracker. +

+ +