package fi.otavanopisto.muikku.plugins.notifier.email; import java.util.List; import javax.enterprise.inject.Instance; import javax.inject.Inject; import org.apache.commons.collections.CollectionUtils; import fi.otavanopisto.muikku.controller.SystemSettingsController; import fi.otavanopisto.muikku.mail.Mailer; import fi.otavanopisto.muikku.model.users.UserEntity; import fi.otavanopisto.muikku.notifier.NotifierAction; import fi.otavanopisto.muikku.notifier.NotifierContext; import fi.otavanopisto.muikku.notifier.NotifierMethod; import fi.otavanopisto.muikku.schooldata.SchoolDataIdentifier; import fi.otavanopisto.muikku.users.UserEmailEntityController; public class NotifierEmailMethod implements NotifierMethod { @Inject private Mailer mailer; @Inject private SystemSettingsController systemSettingsController; @Inject private UserEmailEntityController userEmailEntityController; @Inject private Instance<NotifierEmailMessageComposer> emailMessageComposer; @Override public String getName() { return "email"; } @Override public String getDisplayName() { // TODO: localize return "Email"; } @Override public void sendNotification(NotifierAction action, NotifierContext context) { NotifierEmailMessageComposer message = emailMessageComposer.select(new NotifierEmailContentAnnotationLiteral(action.getName())).get(); if (message != null) { // List email addresses of user entity (only default identifier) UserEntity userEntity = context.getRecipient(); SchoolDataIdentifier identifier = new SchoolDataIdentifier(userEntity.getDefaultIdentifier(), userEntity.getDefaultSchoolDataSource().getIdentifier()); List<String> addresses = userEmailEntityController.getUserEmailAddresses(identifier); if (CollectionUtils.isNotEmpty(addresses)) mailer.sendMail(message.getEmailMimeType(context), systemSettingsController.getSystemEmailSenderAddress(), addresses, message.getEmailSubject(context), message.getEmailContent(context)); } } @Override public boolean isSupported(NotifierAction action) { return !emailMessageComposer.select(new NotifierEmailContentAnnotationLiteral(action.getName())).isUnsatisfied(); } }