Skip to content
Snippets Groups Projects
Commit b64ee712 authored by uhensler's avatar uhensler
Browse files

OO-4028: Send e-mails of certificate copy with customized message

parent 9856e372
No related branches found
No related tags found
No related merge requests found
...@@ -30,9 +30,11 @@ import java.util.ArrayList; ...@@ -30,9 +30,11 @@ import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Properties; import java.util.Properties;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -83,7 +85,6 @@ import org.olat.core.util.Util; ...@@ -83,7 +85,6 @@ import org.olat.core.util.Util;
import org.olat.core.util.WebappHelper; import org.olat.core.util.WebappHelper;
import org.olat.core.util.coordinate.CoordinatorManager; import org.olat.core.util.coordinate.CoordinatorManager;
import org.olat.core.util.i18n.I18nManager; import org.olat.core.util.i18n.I18nManager;
import org.olat.core.util.mail.ContactList;
import org.olat.core.util.mail.MailBundle; import org.olat.core.util.mail.MailBundle;
import org.olat.core.util.mail.MailManager; import org.olat.core.util.mail.MailManager;
import org.olat.core.util.mail.MailerResult; import org.olat.core.util.mail.MailerResult;
...@@ -958,46 +959,83 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList ...@@ -958,46 +959,83 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList
} }
private MailerResult sendCertificate(Identity to, RepositoryEntry entry, File certificateFile, CertificateConfig config) { private MailerResult sendCertificate(Identity to, RepositoryEntry entry, File certificateFile, CertificateConfig config) {
MailerResult mailerResult = sendCertificate(to, entry, certificateFile);
sendCertificateCopies(to, entry, certificateFile, config);
return mailerResult;
}
private MailerResult sendCertificate(Identity to, RepositoryEntry entry, File certificateFile) {
MailBundle bundle = new MailBundle(); MailBundle bundle = new MailBundle();
bundle.setToId(to); bundle.setToId(to);
bundle.setFrom(WebappHelper.getMailConfig("mailReplyTo")); bundle.setFrom(WebappHelper.getMailConfig("mailReplyTo"));
String[] args = new String[] {
entry.getDisplayname(),
userManager.getUserDisplayName(to)
};
String userLanguage = to.getUser().getPreferences().getLanguage();
Locale locale = i18nManager.getLocaleOrDefault(userLanguage);
Translator translator = Util.createPackageTranslator(CertificateController.class, locale);
String subject = translator.translate("certification.email.subject", args);
String body = translator.translate("certification.email.body", args);
bundle.setContent(subject, body, certificateFile);
return mailManager.sendMessage(bundle);
}
private void sendCertificateCopies(Identity to, RepositoryEntry entry, File certificateFile, CertificateConfig config) {
String entryDisplayName = entry.getDisplayname();
String toDisplayName = userManager.getUserDisplayName(to);
String toUserLanguage = to.getUser().getPreferences().getLanguage();
List<MailBundle> mailBundles = new ArrayList<>();
List<String> bccs = certificatesModule.getCertificatesBccEmails(); List<String> bccs = certificatesModule.getCertificatesBccEmails();
List<ContactList> contactLists = new ArrayList<>(3); if(config.isSendEmailBcc()) {
if(config.isSendEmailBcc() && bccs.size() > 0) { for (String bcc : bccs) {
ContactList bcc = new ContactList(); MailBundle bundle = createCopyMailBundle(certificateFile, toUserLanguage, entryDisplayName, toDisplayName);
bccs.forEach(email -> { bcc.add(email); }); bundle.setTo(bcc);
contactLists.add(bcc); mailBundles.add(bundle);
}
} }
Set<Identity> copiesTo = new HashSet<>();
if (config.isSendEmailLinemanager() && certificatesModule.isCertificateLinemanager()) { if (config.isSendEmailLinemanager() && certificatesModule.isCertificateLinemanager()) {
List<Identity> linemanagers = getLinemanagers(to); List<Identity> linemanagers = getLinemanagers(to);
ContactList linemanagerContactList = new ContactList(); copiesTo.addAll(linemanagers);
linemanagers.forEach(lm -> { linemanagerContactList.add(lm); });
contactLists.add(linemanagerContactList);
} }
if (config.isSendEmailIdentityRelations() && baseSecurityModule.isRelationRoleEnabled()) { if (config.isSendEmailIdentityRelations() && baseSecurityModule.isRelationRoleEnabled()) {
RelationSearchParams searchParams = new RelationSearchParams(); RelationSearchParams searchParams = new RelationSearchParams();
RelationRight right = identityRelationshipService.getRelationRightByRight(CertificateEmailRightProvider.RELATION_RIGHT); RelationRight right = identityRelationshipService.getRelationRightByRight(CertificateEmailRightProvider.RELATION_RIGHT);
searchParams.setRight(right); searchParams.setRight(right);
List<IdentityToIdentityRelation> relationTargets = identityRelationshipService.getRelationsAsTarget(to, searchParams); List<IdentityToIdentityRelation> relationTargets = identityRelationshipService.getRelationsAsTarget(to, searchParams);
ContactList relationTargetsList = new ContactList(); relationTargets.forEach(target -> { copiesTo.add( target.getSource()); });
relationTargets.forEach(target -> { relationTargetsList.add( target.getSource()); });
contactLists.add(relationTargetsList);
} }
bundle.setContactLists(contactLists);
for (Identity copyTo : copiesTo) {
String language = copyTo.getUser().getPreferences().getLanguage();
MailBundle bundle = createCopyMailBundle(certificateFile, language, entryDisplayName, toDisplayName);
bundle.setToId(copyTo);
mailBundles.add(bundle);
}
for (MailBundle mailBundle : mailBundles) {
mailManager.sendMessage(mailBundle);
}
}
private MailBundle createCopyMailBundle(File certificateFile, String language, String entryDisplayName, String toDisplayName) {
String[] args = new String[] { String[] args = new String[] {
entry.getDisplayname(), entryDisplayName,
userManager.getUserDisplayName(to) toDisplayName
}; };
MailBundle bundle = new MailBundle();
String userLanguage = to.getUser().getPreferences().getLanguage(); bundle.setFrom(WebappHelper.getMailConfig("mailReplyTo"));
Locale locale = i18nManager.getLocaleOrDefault(userLanguage); Locale locale = i18nManager.getLocaleOrDefault(language);
Translator translator = Util.createPackageTranslator(CertificateController.class, locale); Translator translator = Util.createPackageTranslator(CertificateController.class, locale);
String subject = translator.translate("certification.email.subject", args); String subject = translator.translate("certification.email.copy.subject", args);
String body = translator.translate("certification.email.body", args); String body = translator.translate("certification.email.copy.body", args);
bundle.setContent(subject, body, certificateFile); bundle.setContent(subject, body, certificateFile);
return mailManager.sendMessage(bundle); return bundle;
} }
private List<Identity> getLinemanagers(Identity identity) { private List<Identity> getLinemanagers(Identity identity) {
......
...@@ -60,8 +60,10 @@ upload.wrong.mimetype=Vorlagen k\u00F6nnen nur als ZIP-Datei oder im PDF-Vorlage ...@@ -60,8 +60,10 @@ upload.wrong.mimetype=Vorlagen k\u00F6nnen nur als ZIP-Datei oder im PDF-Vorlage
notifications.title=Neue Zertifikate in Kurs "{0}" notifications.title=Neue Zertifikate in Kurs "{0}"
notifications.desc={0} hat ein neues Zertifikat erhalten. notifications.desc={0} hat ein neues Zertifikat erhalten.
notifications.header=Neue Zertifikate in Kurs "{0}" notifications.header=Neue Zertifikate in Kurs "{0}"
certification.email.subject=Sie haben ein OpenOLAT-Zertifikat erhalten
certification.email.body=<h1>Herzliche Gratulation\!</h1>Sie haben ein Zertifikat erhalten.<br/><br/>Als Anhang finden Sie das Zertifikat des Kurses "{0}".<br/><br/> certification.email.body=<h1>Herzliche Gratulation\!</h1>Sie haben ein Zertifikat erhalten.<br/><br/>Als Anhang finden Sie das Zertifikat des Kurses "{0}".<br/><br/>
certification.email.copy.body=<h1>Zertifikat f\u00FCr {1}</h1>{1} hat ein Zertifikat erhalten.<br/><br/>Als Anhang finden Sie das Zertifikat des Kurses "{0}".<br/><br/>
certification.email.copy.subject={1} hat ein OpenOLAT-Zertifikat erhalten
certification.email.subject=Sie haben ein OpenOLAT-Zertifikat erhalten
confirm.certificate.title=Zertifikat erstellen confirm.certificate.title=Zertifikat erstellen
confirm.certificate.text=Es wurde bereits ein Zertifikat ausgestellt und die Wartezeit f\u00FCr die Rezertifizierung ist noch nicht abgelaufen. M\u00F6chten Sie dennoch ein neues Zertifikat erstellen? confirm.certificate.text=Es wurde bereits ein Zertifikat ausgestellt und die Wartezeit f\u00FCr die Rezertifizierung ist noch nicht abgelaufen. M\u00F6chten Sie dennoch ein neues Zertifikat erstellen?
confirm.certificate.template.deleted=Die Vorlage "{0}" wurde gel\u00F6scht. confirm.certificate.template.deleted=Die Vorlage "{0}" wurde gel\u00F6scht.
......
...@@ -19,6 +19,8 @@ certificates.wizard.overview=Overview ...@@ -19,6 +19,8 @@ certificates.wizard.overview=Overview
certificates.wizard.select=Select user certificates.wizard.select=Select user
certificates.wizard.title=Create certificates certificates.wizard.title=Create certificates
certification.email.body=<h1>Congratulations\!</h1>You have received a certification.<br/><br/>As an attachment you will find the certificate of the course "{0}".<br/><br/> certification.email.body=<h1>Congratulations\!</h1>You have received a certification.<br/><br/>As an attachment you will find the certificate of the course "{0}".<br/><br/>
certification.email.copy.body=<h1>Certification of {1}</h1>{1} has received a certification.<br/><br/>As an attachment you will find the certificate of the course "{0}".<br/><br/>
certification.email.copy.subject={1} has received an OpenOLAT certification
certification.email.subject=You have received an OpenOLAT certification certification.email.subject=You have received an OpenOLAT certification
error.mail.invalid=Please provide a valid e-mail address. error.mail.invalid=Please provide a valid e-mail address.
choose.title=Select template choose.title=Select template
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment