package fi.otavanopisto.muikku.plugins.guidancerequest;
import java.io.Serializable;
import java.text.MessageFormat;
import javax.enterprise.inject.Default;
import javax.inject.Inject;
import fi.otavanopisto.muikku.i18n.LocaleController;
import fi.otavanopisto.muikku.mail.MailType;
import fi.otavanopisto.muikku.model.users.UserEntity;
import fi.otavanopisto.muikku.notifier.NotifierAction;
import fi.otavanopisto.muikku.notifier.NotifierContext;
import fi.otavanopisto.muikku.plugins.guidancerequest.GuidanceRequest;
import fi.otavanopisto.muikku.plugins.notifier.email.NotifierEmailContent;
import fi.otavanopisto.muikku.plugins.notifier.email.NotifierEmailMessageComposer;
import fi.otavanopisto.muikku.schooldata.entity.User;
import fi.otavanopisto.muikku.session.SessionController;
import fi.otavanopisto.muikku.users.UserController;
import fi.otavanopisto.muikku.users.UserEntityController;
@Default
@NotifierEmailContent(GuidanceRequestNotification.NAME)
public class GuidanceRequestNotification implements NotifierAction, NotifierEmailMessageComposer, Serializable {
private static final long serialVersionUID = 1445819086020273477L;
public static final String NAME = "guidancerequest-new";
@Inject
private SessionController sessionController;
@Inject
private LocaleController localeController;
@Inject
private UserController userController;
@Inject
private UserEntityController userEntityController;
@Override
public String getEmailSubject(NotifierContext context) {
GuidanceRequest guidanceRequest = getGuidanceRequest(context);
UserEntity student = userEntityController.findUserEntityById(guidanceRequest.getStudent());
User user = userController.findUserByDataSourceAndIdentifier(student.getDefaultSchoolDataSource(), student.getDefaultIdentifier());
String userName = user.getFirstName() + " " + user.getLastName();
String caption = localeController.getText(sessionController.getLocale(), "plugin.guidancerequest.newGuidanceRequest.mail.subject");
return MessageFormat.format(caption, userName);
}
@Override
public String getEmailContent(NotifierContext context) {
GuidanceRequest guidanceRequest = getGuidanceRequest(context);
UserEntity student = userEntityController.findUserEntityById(guidanceRequest.getStudent());
User user = userController.findUserByDataSourceAndIdentifier(student.getDefaultSchoolDataSource(), student.getDefaultIdentifier());
String userName = user.getFirstName() + " " + user.getLastName();
String content = localeController.getText(sessionController.getLocale(), "plugin.guidancerequest.newGuidanceRequest.mail.content");
return MessageFormat.format(content, userName, guidanceRequest.getMessage());
}
@Override
public MailType getEmailMimeType(NotifierContext context) {
return MailType.PLAINTEXT;
}
private GuidanceRequest getGuidanceRequest(NotifierContext context) {
return (GuidanceRequest) context.getParameter("guidanceRequest");
}
@Override
public String getName() {
return NAME;
}
@Override
public String getDisplayName() {
return "Ohjauspyyntö - uusi ohjauspyyntö";
}
}