diff --git a/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java index f11316f22946da216044ec5a380af2458284f789..bd9ba345b97b8888fa5392436517cdd4607b9689 100644 --- a/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java @@ -56,6 +56,7 @@ import org.olat.course.assessment.model.AssessmentNodesLastModified; import org.olat.course.auditing.UserNodeAuditManager; import org.olat.course.certificate.CertificateTemplate; import org.olat.course.certificate.CertificatesManager; +import org.olat.course.certificate.model.CertificateConfig; import org.olat.course.certificate.model.CertificateInfos; import org.olat.course.groupsandrights.CourseGroupManager; import org.olat.course.nodes.AssessableCourseNode; @@ -522,7 +523,13 @@ public class CourseAssessmentManagerImpl implements AssessmentManager { template = certificatesManager.getTemplateById(templateId); } CertificateInfos certificateInfos = new CertificateInfos(assessedIdentity, rootEval.getScore(), rootEval.getPassed()); - certificatesManager.generateCertificate(certificateInfos, cgm.getCourseEntry(), template, true); + CertificateConfig config = CertificateConfig.builder() + .withCustom1(course.getCourseConfig().getCertificateCustom1()) + .withCustom2(course.getCourseConfig().getCertificateCustom2()) + .withCustom3(course.getCourseConfig().getCertificateCustom3()) + .withSendModuleEmail(true) + .build(); + certificatesManager.generateCertificate(certificateInfos, cgm.getCourseEntry(), template, config); } } } diff --git a/src/main/java/org/olat/course/assessment/ui/tool/IdentityCertificatesController.java b/src/main/java/org/olat/course/assessment/ui/tool/IdentityCertificatesController.java index 03c01ab11895cac8d5becc143bbcd466a5e1249b..236cfa05f3cf6160a9dc2afe0258f5a04f53dde1 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/IdentityCertificatesController.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/IdentityCertificatesController.java @@ -49,6 +49,7 @@ import org.olat.course.certificate.Certificate; import org.olat.course.certificate.CertificateEvent; import org.olat.course.certificate.CertificateTemplate; import org.olat.course.certificate.CertificatesManager; +import org.olat.course.certificate.model.CertificateConfig; import org.olat.course.certificate.model.CertificateInfos; import org.olat.course.certificate.ui.DownloadCertificateCellRenderer; import org.olat.course.config.CourseConfig; @@ -236,7 +237,13 @@ public class IdentityCertificatesController extends BasicController implements G Float score = scoreEval == null ? null : scoreEval.getScore(); Boolean passed = scoreEval == null ? null : scoreEval.getPassed(); CertificateInfos certificateInfos = new CertificateInfos(assessedIdentity, score, passed); - certificatesManager.generateCertificate(certificateInfos, courseEntry, template, true); + CertificateConfig config = CertificateConfig.builder() + .withCustom1(course.getCourseConfig().getCertificateCustom1()) + .withCustom2(course.getCourseConfig().getCertificateCustom2()) + .withCustom3(course.getCourseConfig().getCertificateCustom3()) + .withSendModuleEmail(true) + .build(); + certificatesManager.generateCertificate(certificateInfos, courseEntry, template, config); loadList(); showInfo("msg.certificate.pending"); fireEvent(ureq, Event.CHANGED_EVENT); diff --git a/src/main/java/org/olat/course/certificate/CertificatesManager.java b/src/main/java/org/olat/course/certificate/CertificatesManager.java index 69bef6ee3f731c8364ecc653a3c057169fa5b391..ad64ef9834a63c206401fd9b23b2cad56fccc29b 100644 --- a/src/main/java/org/olat/course/certificate/CertificatesManager.java +++ b/src/main/java/org/olat/course/certificate/CertificatesManager.java @@ -33,6 +33,7 @@ import org.olat.core.id.OLATResourceable; import org.olat.core.util.resource.OresHelper; import org.olat.core.util.vfs.VFSLeaf; import org.olat.course.ICourse; +import org.olat.course.certificate.model.CertificateConfig; import org.olat.course.certificate.model.CertificateInfos; import org.olat.group.BusinessGroup; import org.olat.repository.RepositoryEntry; @@ -161,15 +162,15 @@ public interface CertificatesManager { */ public Date getDateNextRecertification(Certificate certificate, RepositoryEntry entry); - public File previewCertificate(CertificateTemplate template, RepositoryEntry entry, Locale locale); + public File previewCertificate(CertificateTemplate template, RepositoryEntry entry, Locale locale, String custom1, String custom2, String custom3); public Certificate uploadCertificate(Identity identity, Date creationDate, OLATResource resource, File certificateFile); public Certificate uploadStandaloneCertificate(Identity identity, Date creationDate, String courseTitle, Long resourceKey, File certificateFile); - public void generateCertificates(List<CertificateInfos> identities, RepositoryEntry entry, CertificateTemplate template, boolean sendMail); + public void generateCertificates(List<CertificateInfos> infos, RepositoryEntry entry, CertificateTemplate template, CertificateConfig config); - public Certificate generateCertificate(CertificateInfos identity, RepositoryEntry entry, CertificateTemplate template, boolean sendMail); + public Certificate generateCertificate(CertificateInfos infos, RepositoryEntry entry, CertificateTemplate template, CertificateConfig config); public void deleteCertificate(Certificate certificate); diff --git a/src/main/java/org/olat/course/certificate/manager/CertificatePDFFormWorker.java b/src/main/java/org/olat/course/certificate/manager/CertificatePDFFormWorker.java index df9765c96868e144768cebc5765b12c6ec9bbd9b..a127ee91c8b9d5291d48db95ac036010eb376a19 100644 --- a/src/main/java/org/olat/course/certificate/manager/CertificatePDFFormWorker.java +++ b/src/main/java/org/olat/course/certificate/manager/CertificatePDFFormWorker.java @@ -66,21 +66,27 @@ public class CertificatePDFFormWorker { private final Identity identity; private final RepositoryEntry entry; - private Date dateCertification; - private Date dateFirstCertification; - private Date dateNextRecertification; + private final Date dateCertification; + private final Date dateFirstCertification; + private final Date dateNextRecertification; + private final String custom1; + private final String custom2; + private final String custom3; private final String certificateURL; private final Locale locale; private final UserManager userManager; private final CertificatesManagerImpl certificatesManager; - public CertificatePDFFormWorker(Identity identity, RepositoryEntry entry, - Float score, Boolean passed, Date dateCertification, Date dateFirstCertification, - Date dateNextRecertification, String certificateURL, Locale locale, UserManager userManager, + public CertificatePDFFormWorker(Identity identity, RepositoryEntry entry, Float score, Boolean passed, + Date dateCertification, Date dateFirstCertification, Date dateNextRecertification, String custom1, + String custom2, String custom3, String certificateURL, Locale locale, UserManager userManager, CertificatesManagerImpl certificatesManager) { this.entry = entry; this.score = score; + this.custom1 = custom1; + this.custom2 = custom2; + this.custom3 = custom3; this.locale = locale; this.passed = passed; this.identity = identity; @@ -244,6 +250,9 @@ public class CertificatePDFFormWorker { private void fillMetaInfos(PDAcroForm acroForm) throws IOException { + fillField("custom1", custom1, acroForm); + fillField("custom2", custom2, acroForm); + fillField("custom3", custom3, acroForm); fillField("certificateVerificationUrl", certificateURL, acroForm); } diff --git a/src/main/java/org/olat/course/certificate/manager/CertificatePdfServiceWorker.java b/src/main/java/org/olat/course/certificate/manager/CertificatePdfServiceWorker.java index 8ac577533dc69b27e0f0f1fd3435d4ed4a932e2e..031d6644583a04932d115fa9d8f270ae84cc041f 100644 --- a/src/main/java/org/olat/course/certificate/manager/CertificatePdfServiceWorker.java +++ b/src/main/java/org/olat/course/certificate/manager/CertificatePdfServiceWorker.java @@ -68,21 +68,27 @@ public class CertificatePdfServiceWorker { private final RepositoryEntry entry; private final String certificateURL; - private Date dateCertification; - private Date dateFirstCertification; - private Date dateNextRecertification; + private final Date dateCertification; + private final Date dateFirstCertification; + private final Date dateNextRecertification; + private final String custom1; + private final String custom2; + private final String custom3; private final Locale locale; private final PdfService pdfService; private final UserManager userManager; private final CertificatesManagerImpl certificatesManager; - public CertificatePdfServiceWorker(Identity identity, RepositoryEntry entry, - Float score, Boolean passed, Date dateCertification, - Date dateFirstCertification, Date nextRecertificationDate, String certificateURL, Locale locale, - UserManager userManager, CertificatesManagerImpl certificatesManager, PdfService pdfService) { + public CertificatePdfServiceWorker(Identity identity, RepositoryEntry entry, Float score, Boolean passed, + Date dateCertification, Date dateFirstCertification, Date nextRecertificationDate, String custom1, + String custom2, String custom3, String certificateURL, Locale locale, UserManager userManager, + CertificatesManagerImpl certificatesManager, PdfService pdfService) { this.entry = entry; this.score = score; + this.custom1 = custom1; + this.custom2 = custom2; + this.custom3 = custom3; this.locale = locale; this.passed = passed; this.identity = identity; @@ -256,6 +262,9 @@ public class CertificatePdfServiceWorker { } private void fillMetaInfos(VelocityContext context) { + context.put("custom1", custom1); + context.put("custom2", custom2); + context.put("custom3", custom3); context.put("certificateVerificationUrl", certificateURL); } diff --git a/src/main/java/org/olat/course/certificate/manager/CertificatePhantomWorker.java b/src/main/java/org/olat/course/certificate/manager/CertificatePhantomWorker.java index f3741b9474fab55c87fe5fbc56e5fcfb70907683..278e543d6ed22df174ef76040c8ca7fb09ee6552 100644 --- a/src/main/java/org/olat/course/certificate/manager/CertificatePhantomWorker.java +++ b/src/main/java/org/olat/course/certificate/manager/CertificatePhantomWorker.java @@ -68,20 +68,26 @@ public class CertificatePhantomWorker { private final RepositoryEntry entry; private final String certificateURL; - private Date dateCertification; - private Date dateFirstCertification; - private Date dateNextRecertification; + private final Date dateCertification; + private final Date dateFirstCertification; + private final Date dateNextRecertification; + private final String custom1; + private final String custom2; + private final String custom3; private final Locale locale; private final UserManager userManager; private final CertificatesManagerImpl certificatesManager; - public CertificatePhantomWorker(Identity identity, RepositoryEntry entry, - Float score, Boolean passed, Date dateCertification, - Date dateFirstCertification, Date nextRecertificationDate, String certificateURL, Locale locale, - UserManager userManager, CertificatesManagerImpl certificatesManager) { + public CertificatePhantomWorker(Identity identity, RepositoryEntry entry, Float score, Boolean passed, + Date dateCertification, Date dateFirstCertification, Date nextRecertificationDate, String custom1, + String custom2, String custom3, String certificateURL, Locale locale, UserManager userManager, + CertificatesManagerImpl certificatesManager) { this.entry = entry; this.score = score; + this.custom1 = custom1; + this.custom2 = custom2; + this.custom3 = custom3; this.locale = locale; this.passed = passed; this.identity = identity; @@ -269,6 +275,9 @@ public class CertificatePhantomWorker { } private void fillMetaInfos(VelocityContext context) { + context.put("custom1", custom1); + context.put("custom2", custom2); + context.put("custom3", custom3); context.put("certificateVerificationUrl", certificateURL); } diff --git a/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java b/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java index b0b8bc5f0361d02f876b8597b2d5bd6b5974c76a..baed748b41f3b0fd1510ac105b9be0491de795a6 100644 --- a/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java +++ b/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java @@ -97,6 +97,7 @@ import org.olat.course.certificate.CertificatesManager; import org.olat.course.certificate.CertificatesModule; import org.olat.course.certificate.EmailStatus; import org.olat.course.certificate.RecertificationTimeUnit; +import org.olat.course.certificate.model.CertificateConfig; import org.olat.course.certificate.model.CertificateImpl; import org.olat.course.certificate.model.CertificateInfos; import org.olat.course.certificate.model.CertificateStandalone; @@ -587,9 +588,8 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList case year: cal.add(Calendar.YEAR, time); break; } return cal.getTime(); - } else { - return null; } + return null; } @@ -706,10 +706,10 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList @Override public void generateCertificates(List<CertificateInfos> certificateInfos, RepositoryEntry entry, - CertificateTemplate template, boolean sendMail) { + CertificateTemplate template, CertificateConfig config) { int count = 0; for(CertificateInfos certificateInfo:certificateInfos) { - generateCertificate(certificateInfo, entry, template, sendMail); + generateCertificate(certificateInfo, entry, template, config); if(++count % 10 == 0) { dbInstance.commitAndCloseSession(); } @@ -718,7 +718,8 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList } @Override - public File previewCertificate(CertificateTemplate template, RepositoryEntry entry, Locale locale) { + public File previewCertificate(CertificateTemplate template, RepositoryEntry entry, Locale locale, String custom1, + String custom2, String custom3) { Identity identity = getPreviewIdentity(); File certificateFile; @@ -732,20 +733,20 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList if(template == null) { CertificatePDFFormWorker worker = new CertificatePDFFormWorker(identity, entry, 2.0f, true, - new Date(), new Date(), new Date(), certUrl, locale, userManager, this); + new Date(), new Date(), new Date(), custom1, custom2, custom3, certUrl, locale, userManager, this); certificateFile = worker.fill(null, dirFile, "Certificate.pdf"); } else if(template.getPath().toLowerCase().endsWith("pdf")) { CertificatePDFFormWorker worker = new CertificatePDFFormWorker(identity, entry, 2.0f, true, - new Date(), new Date(), new Date(), certUrl, locale, userManager, this); + new Date(), new Date(), new Date(), custom1, custom2, custom3, certUrl, locale, userManager, this); certificateFile = worker.fill(template, dirFile, "Certificate.pdf"); } else if (pdfModule.isEnabled()) { CertificatePdfServiceWorker worker = new CertificatePdfServiceWorker(identity, entry, 2.0f, true, - new Date(), new Date(),new Date(), certUrl, locale, + new Date(), new Date(),new Date(), custom1, custom2, custom3, certUrl, locale, userManager, this, pdfService); certificateFile = worker.fill(template, dirFile, "Certificate.pdf"); } else { - CertificatePhantomWorker worker = new CertificatePhantomWorker(identity, entry, 2.0f, true, - new Date(), new Date(),new Date(), certUrl, locale, userManager, this); + CertificatePhantomWorker worker = new CertificatePhantomWorker(identity, entry, 2.0f, true, new Date(), + new Date(), new Date(), custom1, custom2, custom3, certUrl, locale, userManager, this); certificateFile = worker.fill(template, dirFile, "Certificate.pdf"); } return certificateFile; @@ -767,14 +768,14 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList @Override public Certificate generateCertificate(CertificateInfos certificateInfos, RepositoryEntry entry, - CertificateTemplate template, boolean sendMail) { - Certificate certificate = persistCertificate(certificateInfos, entry, template, sendMail); + CertificateTemplate template, CertificateConfig config) { + Certificate certificate = persistCertificate(certificateInfos, entry, template, config); markPublisherNews(null, entry.getOlatResource()); return certificate; } private Certificate persistCertificate(CertificateInfos certificateInfos, RepositoryEntry entry, - CertificateTemplate template, boolean sendMail) { + CertificateTemplate template, CertificateConfig config) { OLATResource resource = entry.getOlatResource(); Identity identity = certificateInfos.getAssessedIdentity(); @@ -800,7 +801,7 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList dbInstance.commit(); //send message - sendJmsCertificateFile(certificate, template, certificateInfos.getScore(), certificateInfos.getPassed(), sendMail); + sendJmsCertificateFile(certificate, template, certificateInfos.getScore(), certificateInfos.getPassed(), config); return certificate; } @@ -809,7 +810,7 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList return velocityEngine; } - private void sendJmsCertificateFile(Certificate certificate, CertificateTemplate template, Float score, Boolean passed, boolean sendMail) { + private void sendJmsCertificateFile(Certificate certificate, CertificateTemplate template, Float score, Boolean passed, CertificateConfig config) { QueueSender sender; QueueSession session = null; try { @@ -820,16 +821,16 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList } workUnit.setPassed(passed); workUnit.setScore(score); - workUnit.setSendMail(sendMail); + workUnit.setConfig(config); - session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE ); + session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE); ObjectMessage message = session.createObjectMessage(); message.setObject(workUnit); sender = session.createSender(getJmsQueue()); sender.send( message ); } catch (JMSException e) { - log.error("", e ); + log.error("", e); } finally { if(session != null) { try { @@ -878,6 +879,9 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList Date dateCertification = certificate.getCreationDate(); Date dateFirstCertification = getDateFirstCertification(identity, resource.getKey()); Date dateNextRecertification = certificate.getNextRecertificationDate(); + String custom1 = workUnit.getConfig().getCustom1(); + String custom2 = workUnit.getConfig().getCustom2(); + String custom3 = workUnit.getConfig().getCustom3(); File certificateFile; // File name with user name @@ -895,8 +899,8 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList if(template == null || template.getPath().toLowerCase().endsWith("pdf")) { CertificatePDFFormWorker worker = new CertificatePDFFormWorker(identity, entry, score, passed, - dateCertification, dateFirstCertification, dateNextRecertification, certUrl, locale, - userManager, this); + dateCertification, dateFirstCertification, dateNextRecertification, custom1, custom2, custom3, + certUrl, locale, userManager, this); certificateFile = worker.fill(template, dirFile, filename); if(certificateFile == null) { certificate.setStatus(CertificateStatus.error); @@ -906,13 +910,13 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList } else { if(pdfModule.isEnabled()) { CertificatePdfServiceWorker worker = new CertificatePdfServiceWorker(identity, entry, score, passed, - dateCertification, dateFirstCertification, dateNextRecertification, certUrl, locale, - userManager, this, pdfService); + dateCertification, dateFirstCertification, dateNextRecertification, custom1, custom2, custom3, + certUrl, locale, userManager, this, pdfService); certificateFile = worker.fill(template, dirFile, filename); } else { CertificatePhantomWorker worker = new CertificatePhantomWorker(identity, entry, score, passed, - dateCertification, dateFirstCertification, dateNextRecertification, certUrl, locale, - userManager, this); + dateCertification, dateFirstCertification, dateNextRecertification, custom1, custom2, custom3, + certUrl, locale, userManager, this); certificateFile = worker.fill(template, dirFile, filename); } if(certificateFile == null) { diff --git a/src/main/java/org/olat/course/certificate/model/CertificateConfig.java b/src/main/java/org/olat/course/certificate/model/CertificateConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..9f7df2a0b30b0f770beae76164587e8244fb14fa --- /dev/null +++ b/src/main/java/org/olat/course/certificate/model/CertificateConfig.java @@ -0,0 +1,100 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.certificate.model; + +import java.io.Serializable; + +/** + * + * Initial date: 23 Apr 2019<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class CertificateConfig implements Serializable { + + private static final long serialVersionUID = 8837808595823549502L; + + private String custom1; + private String custom2; + private String custom3; + private boolean sendModuleEmail; + + private CertificateConfig(Builder builder) { + this.custom1 = builder.custom1; + this.custom2 = builder.custom2; + this.custom3 = builder.custom3; + this.sendModuleEmail = builder.sendModuleEmail; + } + + public String getCustom1() { + return custom1; + } + + public String getCustom2() { + return custom2; + } + + public String getCustom3() { + return custom3; + } + + public boolean isSendModuleEmail() { + return sendModuleEmail; + } + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private String custom1; + private String custom2; + private String custom3; + private boolean sendModuleEmail; + + private Builder() { + } + + public Builder withCustom1(String custom1) { + this.custom1 = custom1; + return this; + } + + public Builder withCustom2(String custom2) { + this.custom2 = custom2; + return this; + } + + public Builder withCustom3(String custom3) { + this.custom3 = custom3; + return this; + } + + public Builder withSendModuleEmail(boolean sendModuleEmail) { + this.sendModuleEmail = sendModuleEmail; + return this; + } + + public CertificateConfig build() { + return new CertificateConfig(this); + } + } + +} diff --git a/src/main/java/org/olat/course/certificate/model/JmsCertificateWork.java b/src/main/java/org/olat/course/certificate/model/JmsCertificateWork.java index 68475a9fea7f28603647a7c1bacf7158d2acd95f..6d7ebc6fb5b10c0d30b62a7dcda7e58d8b7d3f2e 100644 --- a/src/main/java/org/olat/course/certificate/model/JmsCertificateWork.java +++ b/src/main/java/org/olat/course/certificate/model/JmsCertificateWork.java @@ -35,16 +35,16 @@ public class JmsCertificateWork implements Serializable { private Boolean passed; private Long templateKey; private Long certificateKey; - private boolean sendMail; + private CertificateConfig config; public JmsCertificateWork() { // } - public JmsCertificateWork(Long certificateKey, Long templateKey, Float score, Boolean passed, boolean sendMail) { + public JmsCertificateWork(Long certificateKey, Long templateKey, Float score, Boolean passed, CertificateConfig config) { this.score = score; this.passed = passed; - this.sendMail = sendMail; + this.config = config; this.templateKey = templateKey; this.certificateKey = certificateKey; } @@ -65,12 +65,12 @@ public class JmsCertificateWork implements Serializable { this.passed = passed; } - public boolean isSendMail() { - return sendMail; + public CertificateConfig getConfig() { + return config; } - public void setSendMail(boolean sendMail) { - this.sendMail = sendMail; + public void setConfig(CertificateConfig config) { + this.config = config; } public Long getTemplateKey() { diff --git a/src/main/java/org/olat/course/certificate/restapi/CertificationWebService.java b/src/main/java/org/olat/course/certificate/restapi/CertificationWebService.java index d5207d7e181510a5476d82fa66356af2b8c28f7b..f0e906e3c79d5977a82eace24c4c53b07630cb32 100644 --- a/src/main/java/org/olat/course/certificate/restapi/CertificationWebService.java +++ b/src/main/java/org/olat/course/certificate/restapi/CertificationWebService.java @@ -54,6 +54,7 @@ import org.olat.course.ICourse; import org.olat.course.certificate.Certificate; import org.olat.course.certificate.CertificateTemplate; import org.olat.course.certificate.CertificatesManager; +import org.olat.course.certificate.model.CertificateConfig; import org.olat.course.certificate.model.CertificateInfos; import org.olat.repository.RepositoryEntry; import org.olat.resource.OLATResource; @@ -217,27 +218,33 @@ public class CertificationWebService { if(resource == null) { return Response.serverError().status(Response.Status.NOT_FOUND).build(); - } else { - ICourse course = CourseFactory.loadCourse(resource); - RepositoryEntry entry = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry(); + } + + ICourse course = CourseFactory.loadCourse(resource); + RepositoryEntry entry = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry(); - CertificateTemplate template = null; - Long templateId = course.getCourseConfig().getCertificateTemplate(); - if(templateId != null) { - template = certificatesManager.getTemplateById(templateId); - } - - CertificateInfos certificateInfos = new CertificateInfos(assessedIdentity, score, passed); - if(StringHelper.containsNonWhitespace(creationDate)) { - Date date = ObjectFactory.parseDate(creationDate); - certificateInfos.setCreationDate(date); - } - Certificate certificate = certificatesManager.generateCertificate(certificateInfos, entry, template, false); - if(certificate != null) { - return Response.ok().build(); - } - return Response.serverError().status(Response.Status.INTERNAL_SERVER_ERROR).build(); - } + CertificateTemplate template = null; + Long templateId = course.getCourseConfig().getCertificateTemplate(); + if(templateId != null) { + template = certificatesManager.getTemplateById(templateId); + } + + CertificateInfos certificateInfos = new CertificateInfos(assessedIdentity, score, passed); + if(StringHelper.containsNonWhitespace(creationDate)) { + Date date = ObjectFactory.parseDate(creationDate); + certificateInfos.setCreationDate(date); + } + CertificateConfig config = CertificateConfig.builder() + .withCustom1(course.getCourseConfig().getCertificateCustom1()) + .withCustom2(course.getCourseConfig().getCertificateCustom2()) + .withCustom3(course.getCourseConfig().getCertificateCustom3()) + .withSendModuleEmail(false) + .build(); + Certificate certificate = certificatesManager.generateCertificate(certificateInfos, entry, template, config); + if(certificate != null) { + return Response.ok().build(); + } + return Response.serverError().status(Response.Status.INTERNAL_SERVER_ERROR).build(); } /** diff --git a/src/main/java/org/olat/course/certificate/ui/AssessedIdentityCertificatesController.java b/src/main/java/org/olat/course/certificate/ui/AssessedIdentityCertificatesController.java index fe4608f029a4607fbecee928789de68505c35008..a2d537ed0a8316be7613e5cd072453ca0b65d4d1 100644 --- a/src/main/java/org/olat/course/certificate/ui/AssessedIdentityCertificatesController.java +++ b/src/main/java/org/olat/course/certificate/ui/AssessedIdentityCertificatesController.java @@ -43,6 +43,7 @@ import org.olat.course.certificate.Certificate; import org.olat.course.certificate.CertificateEvent; import org.olat.course.certificate.CertificateTemplate; import org.olat.course.certificate.CertificatesManager; +import org.olat.course.certificate.model.CertificateConfig; import org.olat.course.certificate.model.CertificateInfos; import org.olat.course.config.CourseConfig; import org.olat.course.nodes.CourseNode; @@ -210,7 +211,13 @@ public class AssessedIdentityCertificatesController extends BasicController impl Float score = scoreEval == null ? null : scoreEval.getScore(); Boolean passed = scoreEval == null ? null : scoreEval.getPassed(); CertificateInfos certificateInfos = new CertificateInfos(assessedIdentity, score, passed); - certificatesManager.generateCertificate(certificateInfos, courseEntry, template, true); + CertificateConfig config = CertificateConfig.builder() + .withCustom1(course.getCourseConfig().getCertificateCustom1()) + .withCustom2(course.getCourseConfig().getCertificateCustom2()) + .withCustom3(course.getCourseConfig().getCertificateCustom3()) + .withSendModuleEmail(true) + .build(); + certificatesManager.generateCertificate(certificateInfos, courseEntry, template, config); loadList(); showInfo("msg.certificate.pending"); fireEvent(ureq, Event.CHANGED_EVENT); diff --git a/src/main/java/org/olat/course/certificate/ui/CertificatesOptionsController.java b/src/main/java/org/olat/course/certificate/ui/CertificatesOptionsController.java index d8c2ff8b5bf3e6e694df52ff677ccb73c961c8c4..b9fab6b7cb2b96eabe03c9e51eee61617ec05dad 100644 --- a/src/main/java/org/olat/course/certificate/ui/CertificatesOptionsController.java +++ b/src/main/java/org/olat/course/certificate/ui/CertificatesOptionsController.java @@ -38,6 +38,7 @@ import org.olat.core.gui.components.form.flexible.elements.FormLink; import org.olat.core.gui.components.form.flexible.elements.IntegerElement; import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; import org.olat.core.gui.components.form.flexible.elements.SingleSelection; +import org.olat.core.gui.components.form.flexible.elements.TextElement; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; import org.olat.core.gui.components.form.flexible.impl.FormEvent; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; @@ -95,6 +96,9 @@ public class CertificatesOptionsController extends FormBasicController { private MultipleSelectionElement pdfCertificatesEl; private MultipleSelectionElement efficencyEl; + private TextElement certificationCustom1El; + private TextElement certificationCustom2El; + private TextElement certificationCustom3El; private MultipleSelectionElement reCertificationEl; private IntegerElement reCertificationTimelapseEl; private SingleSelection reCertificationTimelapseUnitEl; @@ -220,6 +224,10 @@ public class CertificatesOptionsController extends FormBasicController { previewTemplateLink = LinkFactory.createButton("preview", templateCont.getFormItemComponent(), this); previewTemplateLink.setTarget("preview"); + certificationCustom1El = uifactory.addTextElement("certificate.custom1", 1000, courseConfig.getCertificateCustom1(), formLayout); + certificationCustom2El = uifactory.addTextElement("certificate.custom2", 2000, courseConfig.getCertificateCustom2(), formLayout); + certificationCustom3El = uifactory.addTextElement("certificate.custom3", 3000, courseConfig.getCertificateCustom3(), formLayout); + boolean reCertificationEnabled = courseConfig.isRecertificationEnabled(); reCertificationEl = uifactory.addCheckboxesHorizontal("recertification", formLayout, new String[]{ "xx" }, new String[]{ "" }); reCertificationEl.addActionListener(FormEvent.ONCHANGE); @@ -336,7 +344,10 @@ public class CertificatesOptionsController extends FormBasicController { private void doPreviewTemplate(UserRequest ureq) { selectedTemplate = certificatesManager.getTemplateById(selectedTemplate.getKey()); - File preview = certificatesManager.previewCertificate(selectedTemplate, entry, getLocale()); + String custom1 = certificationCustom1El.getValue(); + String custom2 = certificationCustom2El.getValue(); + String custom3 = certificationCustom3El.getValue(); + File preview = certificatesManager.previewCertificate(selectedTemplate, entry, getLocale(), custom1, custom2, custom3); MediaResource resource = new PreviewMediaResource(preview); ureq.getDispatchResult().setResultingMediaResource(resource); } @@ -403,6 +414,10 @@ public class CertificatesOptionsController extends FormBasicController { } else { courseConfig.setCertificateTemplate(null); } + + courseConfig.setCertificateCustom1(certificationCustom1El.getValue()); + courseConfig.setCertificateCustom2(certificationCustom2El.getValue()); + courseConfig.setCertificateCustom3(certificationCustom3El.getValue()); boolean recertificationEnabled = reCertificationEl.isEnabled() && reCertificationEl.isAtLeastSelected(1); courseConfig.setRecertificationEnabled(recertificationEnabled); diff --git a/src/main/java/org/olat/course/certificate/ui/CertificatesSelectionController.java b/src/main/java/org/olat/course/certificate/ui/CertificatesSelectionController.java index 6b1a2764be833ff413bd618b6d5b00c8d55e7751..035af1e9fe23b5559bc80f0faf2bf7267d9cc64a 100644 --- a/src/main/java/org/olat/course/certificate/ui/CertificatesSelectionController.java +++ b/src/main/java/org/olat/course/certificate/ui/CertificatesSelectionController.java @@ -101,7 +101,7 @@ public class CertificatesSelectionController extends StepFormBasicController { } List<UserPropertyHandler> userPropertyHandlers = userManager.getUserPropertyHandlersFor(AssessedIdentitiesTableDataModel.usageIdentifyer, isAdministrativeUser); - List<UserPropertyHandler> resultingPropertyHandlers = new ArrayList<UserPropertyHandler>(); + List<UserPropertyHandler> resultingPropertyHandlers = new ArrayList<>(); // followed by the users fields for (int i = 0; i < userPropertyHandlers.size(); i++) { UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(i); diff --git a/src/main/java/org/olat/course/certificate/ui/CertificatesSelectionOverviewController.java b/src/main/java/org/olat/course/certificate/ui/CertificatesSelectionOverviewController.java index 6d69b80694e7217acae42332e211c9f32b2f686e..61ef9d90cbd27657adbfea1e78107306931a402e 100644 --- a/src/main/java/org/olat/course/certificate/ui/CertificatesSelectionOverviewController.java +++ b/src/main/java/org/olat/course/certificate/ui/CertificatesSelectionOverviewController.java @@ -84,7 +84,7 @@ public class CertificatesSelectionOverviewController extends StepFormBasicContro } List<UserPropertyHandler> userPropertyHandlers = userManager.getUserPropertyHandlersFor(AssessedIdentitiesTableDataModel.usageIdentifyer, isAdministrativeUser); - List<UserPropertyHandler> resultingPropertyHandlers = new ArrayList<UserPropertyHandler>(); + List<UserPropertyHandler> resultingPropertyHandlers = new ArrayList<>(); // followed by the users fields for (int i = 0; i < userPropertyHandlers.size(); i++) { UserPropertyHandler userPropertyHandler = userPropertyHandlers.get(i); diff --git a/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_de.properties index 00f52fcee1626cf391b594d8bd7076fde55e9fb6..c9f88a23b5287e0feafe0d769e6fc8ef74f6fbcb 100644 --- a/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_de.properties @@ -10,6 +10,9 @@ admin.certificates.bcc=BCC E-Mail-Adresse admin.certificates.bcc.enable=Zertifikate BCC einschalten certificate=Zertifikate certificate.creationdate=Zertifikat ausgestellt am {0} +certificate.custom1=Optionale Variable 1 +certificate.custom2=Optionale Variable 2 +certificate.custom3=Optionale Variable 3 coaching.tool=Coaching confirm.delete.title=Zertifikate l\u00F6schen confirm.delete.text=Wollen Sie dieses Zertifikat wirklich l\u00F6schen? diff --git a/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_en.properties index 1b1a1d14bff46a3e4ddd399e775f2fed847ad71a..d9b1f70efead5c340adbfc33b20be5094383eb9f 100644 --- a/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_en.properties @@ -11,6 +11,9 @@ admin.certificates.bcc=BCC email address admin.certificates.bcc.enable=Enable BCC of certificates certificate=Certificates certificate.creationdate=Certificate issued on {0} +certificate.custom1=Custom variable 1 +certificate.custom2=Custom variable 2 +certificate.custom3=Custom variable 3 certificates.wizard.overview=Overview certificates.wizard.select=Select user certificates.wizard.title=Create certificates diff --git a/src/main/java/org/olat/course/config/CourseConfig.java b/src/main/java/org/olat/course/config/CourseConfig.java index 9f27fc40fa450ae03c42722a3349b3bac86b03cc..d72f67da27eb0768f6654ca373da86903a3ab96e 100644 --- a/src/main/java/org/olat/course/config/CourseConfig.java +++ b/src/main/java/org/olat/course/config/CourseConfig.java @@ -72,7 +72,7 @@ public class CourseConfig implements Serializable, Cloneable { /** * current config file version */ - private static final transient int CURRENTVERSION = 13; + private static final transient int CURRENTVERSION = 14; /** * Log levels */ @@ -96,6 +96,9 @@ public class CourseConfig implements Serializable, Cloneable { public static final transient String CERTIFICATE_AUTO_ENABLED = "CERTIFICATE_AUTO"; public static final transient String CERTIFICATE_MANUAL_ENABLED = "CERTIFICATE_MANUAL"; public static final transient String CERTIFICATE_TEMPLATE = "CERTIFICATE_TEMPLATE"; + public static final transient String CERTIFICATE_CUSTOM1 = "CERTIFICATE_CUSTOM1"; + public static final transient String CERTIFICATE_CUSTOM2 = "CERTIFICATE_CUSTOM2"; + public static final transient String CERTIFICATE_CUSTOM3 = "CERTIFICATE_CUSTOM3"; public static final transient String RECERTIFICATION_ENABLED = "RECERTIFICATION_ENABLED"; public static final transient String RECERTIFICATION_TIMELAPSE = "RECERTIFICATION_TIMELAPSE"; public static final transient String RECERTIFICATION_TIMELAPSE_UNIT = "RECERTIFICATION_TIMELAPSE_UNIT"; @@ -282,6 +285,14 @@ public class CourseConfig implements Serializable, Cloneable { if (!configuration.containsKey(BREADCRUMB_ENABLED)) configuration.put(BREADCRUMB_ENABLED, Boolean.TRUE); this.version = 13; } + + if (version == 13) { + if (!configuration.containsKey(CERTIFICATE_CUSTOM1)) configuration.put(CERTIFICATE_CUSTOM1, ""); + if (!configuration.containsKey(CERTIFICATE_CUSTOM2)) configuration.put(CERTIFICATE_CUSTOM2, ""); + if (!configuration.containsKey(CERTIFICATE_CUSTOM3)) configuration.put(CERTIFICATE_CUSTOM3, ""); + + this.version = 14; + } /* @@ -461,6 +472,30 @@ public class CourseConfig implements Serializable, Cloneable { return templateId; } + public String getCertificateCustom1() { + return (String) configuration.get(CERTIFICATE_CUSTOM1); + } + + public void setCertificateCustom1(String custom1) { + configuration.put(CERTIFICATE_CUSTOM1, custom1); + } + + public String getCertificateCustom2() { + return (String) configuration.get(CERTIFICATE_CUSTOM2); + } + + public void setCertificateCustom2(String custom2) { + configuration.put(CERTIFICATE_CUSTOM2, custom2); + } + + public String getCertificateCustom3() { + return (String) configuration.get(CERTIFICATE_CUSTOM3); + } + + public void setCertificateCustom3(String custom3) { + configuration.put(CERTIFICATE_CUSTOM3, custom3); + } + /** * @param b */ @@ -608,6 +643,9 @@ public class CourseConfig implements Serializable, Cloneable { clone.setAutomaticCertificationEnabled(isAutomaticCertificationEnabled()); clone.setManualCertificationEnabled(isManualCertificationEnabled()); clone.setCertificateTemplate(getCertificateTemplate()); + clone.setCertificateCustom1(getCertificateCustom1()); + clone.setCertificateCustom2(getCertificateCustom2()); + clone.setCertificateCustom3(getCertificateCustom3()); clone.setRecertificationEnabled(isRecertificationEnabled()); clone.setRecertificationTimelapse(getRecertificationTimelapse()); clone.setRecertificationTimelapseUnit(getRecertificationTimelapseUnit()); diff --git a/src/main/java/org/olat/upgrade/legacy/NewCachePersistingAssessmentManager.java b/src/main/java/org/olat/upgrade/legacy/NewCachePersistingAssessmentManager.java index a5eedd1916acca9d45adf1ac7a21d414ff766ad8..15dd04417b01fb4b3d938b4e327fbd64728d7b8c 100644 --- a/src/main/java/org/olat/upgrade/legacy/NewCachePersistingAssessmentManager.java +++ b/src/main/java/org/olat/upgrade/legacy/NewCachePersistingAssessmentManager.java @@ -61,6 +61,7 @@ import org.olat.course.assessment.manager.EfficiencyStatementManager; import org.olat.course.auditing.UserNodeAuditManager; import org.olat.course.certificate.CertificateTemplate; import org.olat.course.certificate.CertificatesManager; +import org.olat.course.certificate.model.CertificateConfig; import org.olat.course.certificate.model.CertificateInfos; import org.olat.course.nodes.AssessableCourseNode; import org.olat.course.nodes.CourseNode; @@ -426,6 +427,7 @@ public class NewCachePersistingAssessmentManager { ICourse course = CourseFactory.loadCourse(ores); final CoursePropertyManager cpm = course.getCourseEnvironment().getCoursePropertyManager(); CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync(createOLATResourceableForLocking(assessedIdentity), new SyncerExecutor(){ + @Override public void execute() { Property attemptsProperty = cpm.findCourseNodeProperty(courseNode, assessedIdentity, null, ATTEMPTS); if (attemptsProperty == null) { @@ -497,6 +499,7 @@ public class NewCachePersistingAssessmentManager { ICourse course = CourseFactory.loadCourse(ores); final CoursePropertyManager cpm = course.getCourseEnvironment().getCoursePropertyManager(); CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync(createOLATResourceableForLocking(assessedIdentity), new SyncerExecutor(){ + @Override public void execute() { Property commentProperty = cpm.findCourseNodeProperty(courseNode, assessedIdentity, null, COMMENT); if (commentProperty == null) { @@ -533,6 +536,7 @@ public class NewCachePersistingAssessmentManager { ICourse course = CourseFactory.loadCourse(ores); final CoursePropertyManager cpm = course.getCourseEnvironment().getCoursePropertyManager(); CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync(createOLATResourceableForLocking(assessedIdentity), new SyncerExecutor(){ + @Override public void execute() { Property commentProperty = cpm.findCourseNodeProperty(courseNode, assessedIdentity, null, COACH_COMMENT); if (commentProperty == null) { @@ -579,6 +583,7 @@ public class NewCachePersistingAssessmentManager { ICourse course = CourseFactory.loadCourse(ores); final CoursePropertyManager cpm = course.getCourseEnvironment().getCoursePropertyManager(); long attempts = CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync(createOLATResourceableForLocking(identity), new SyncerCallback<Long>(){ + @Override public Long execute() { long attempts = incrementNodeAttemptsProperty(courseNode, identity, cpm); if(courseNode instanceof AssessableCourseNode) { @@ -864,6 +869,7 @@ public class NewCachePersistingAssessmentManager { // we could also sync on the assessedIdentity. Long attempts = CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync(createOLATResourceableForLocking(assessedIdentity), new SyncerCallback<Long>(){ + @Override public Long execute() { Long attempts = null; Float score = scoreEvaluation.getScore(); @@ -891,7 +897,13 @@ public class NewCachePersistingAssessmentManager { template = certificatesManager.getTemplateById(templateId); } CertificateInfos certificateInfos = new CertificateInfos(assessedIdentity, score, passed); - certificatesManager.generateCertificate(certificateInfos, courseEntry, template, true); + CertificateConfig config = CertificateConfig.builder() + .withCustom1(course.getCourseConfig().getCertificateCustom1()) + .withCustom2(course.getCourseConfig().getCertificateCustom2()) + .withCustom3(course.getCourseConfig().getCertificateCustom3()) + .withSendModuleEmail(true) + .build(); + certificatesManager.generateCertificate(certificateInfos, courseEntry, template, config); } } diff --git a/src/test/java/org/olat/course/certificate/manager/CertificatesManagerTest.java b/src/test/java/org/olat/course/certificate/manager/CertificatesManagerTest.java index 84b7b5531918f763f1a9fa1f5fe58c60fe03c812..26fd1bdaebbd8ae410c7d3caabc57efd2469e4c7 100644 --- a/src/test/java/org/olat/course/certificate/manager/CertificatesManagerTest.java +++ b/src/test/java/org/olat/course/certificate/manager/CertificatesManagerTest.java @@ -41,6 +41,7 @@ import org.olat.course.certificate.CertificateLight; import org.olat.course.certificate.CertificateStatus; import org.olat.course.certificate.CertificateTemplate; import org.olat.course.certificate.CertificatesManager; +import org.olat.course.certificate.model.CertificateConfig; import org.olat.course.certificate.model.CertificateImpl; import org.olat.course.certificate.model.CertificateInfos; import org.olat.group.BusinessGroup; @@ -99,7 +100,8 @@ public class CertificatesManagerTest extends OlatTestCase { dbInstance.commitAndCloseSession(); CertificateInfos certificateInfos = new CertificateInfos(identity, null, null); - Certificate certificate = certificatesManager.generateCertificate(certificateInfos, entry, null, false); + CertificateConfig config = CertificateConfig.builder().build(); + Certificate certificate = certificatesManager.generateCertificate(certificateInfos, entry, null, config); Assert.assertNotNull(certificate); Assert.assertNotNull(certificate.getKey()); Assert.assertNotNull(certificate.getUuid()); @@ -122,7 +124,8 @@ public class CertificatesManagerTest extends OlatTestCase { dbInstance.commitAndCloseSession(); CertificateInfos certificateInfos = new CertificateInfos(identity, 5.0f, Boolean.TRUE); - Certificate certificate = certificatesManager.generateCertificate(certificateInfos, entry, null, false); + CertificateConfig config = CertificateConfig.builder().build(); + Certificate certificate = certificatesManager.generateCertificate(certificateInfos, entry, null, config); Assert.assertNotNull(certificate); dbInstance.commitAndCloseSession(); @@ -162,7 +165,8 @@ public class CertificatesManagerTest extends OlatTestCase { dbInstance.commitAndCloseSession(); CertificateInfos certificateInfos = new CertificateInfos(identity, 5.0f, Boolean.TRUE); - Certificate certificate = certificatesManager.generateCertificate(certificateInfos, entry, null, false); + CertificateConfig config = CertificateConfig.builder().build(); + Certificate certificate = certificatesManager.generateCertificate(certificateInfos, entry, null, config); Assert.assertNotNull(certificate); dbInstance.commitAndCloseSession(); @@ -195,10 +199,11 @@ public class CertificatesManagerTest extends OlatTestCase { dbInstance.commitAndCloseSession(); CertificateInfos certificateInfos1 = new CertificateInfos(participant1, null, null); - Certificate certificate1 = certificatesManager.generateCertificate(certificateInfos1, entry, null, false); + CertificateConfig config = CertificateConfig.builder().build(); + Certificate certificate1 = certificatesManager.generateCertificate(certificateInfos1, entry, null, config); Assert.assertNotNull(certificate1); CertificateInfos certificateInfos2 = new CertificateInfos(participant2, null, null); - Certificate certificate2 = certificatesManager.generateCertificate(certificateInfos2, entry, null, false); + Certificate certificate2 = certificatesManager.generateCertificate(certificateInfos2, entry, null, config); Assert.assertNotNull(certificate2); dbInstance.commitAndCloseSession(); @@ -237,10 +242,11 @@ public class CertificatesManagerTest extends OlatTestCase { //make a certificate CertificateInfos certificateInfos1 = new CertificateInfos(participant1, null, null); - Certificate certificate1 = certificatesManager.generateCertificate(certificateInfos1, entry, null, false); + CertificateConfig config = CertificateConfig.builder().build(); + Certificate certificate1 = certificatesManager.generateCertificate(certificateInfos1, entry, null, config); Assert.assertNotNull(certificate1); CertificateInfos certificateInfos2 = new CertificateInfos(participant2, null, null); - Certificate certificate2 = certificatesManager.generateCertificate(certificateInfos2, entry, null, false); + Certificate certificate2 = certificatesManager.generateCertificate(certificateInfos2, entry, null, config); Assert.assertNotNull(certificate2); dbInstance.commitAndCloseSession(); diff --git a/src/test/java/org/olat/restapi/CertificationTest.java b/src/test/java/org/olat/restapi/CertificationTest.java index 9687b5d3256efd53bdd9d34351799d8baaa6a62f..86cd9c583c69fb9b07785f82dd33c15144b50da8 100644 --- a/src/test/java/org/olat/restapi/CertificationTest.java +++ b/src/test/java/org/olat/restapi/CertificationTest.java @@ -49,6 +49,7 @@ import org.olat.core.util.vfs.VFSLeaf; import org.olat.course.certificate.Certificate; import org.olat.course.certificate.CertificateStatus; import org.olat.course.certificate.CertificatesManager; +import org.olat.course.certificate.model.CertificateConfig; import org.olat.course.certificate.model.CertificateInfos; import org.olat.repository.RepositoryEntry; import org.olat.restapi.support.ObjectFactory; @@ -81,7 +82,8 @@ public class CertificationTest extends OlatJerseyTestCase { dbInstance.commitAndCloseSession(); CertificateInfos certificateInfos = new CertificateInfos(assessedIdentity, 2.0f, true); - Certificate certificate = certificatesManager.generateCertificate(certificateInfos, entry, null, false); + CertificateConfig config = CertificateConfig.builder().withSendModuleEmail(false).build(); + Certificate certificate = certificatesManager.generateCertificate(certificateInfos, entry, null, config); dbInstance.commitAndCloseSession(); Assert.assertNotNull(certificate); sleep(1000); @@ -120,7 +122,8 @@ public class CertificationTest extends OlatJerseyTestCase { dbInstance.commitAndCloseSession(); CertificateInfos certificateInfos = new CertificateInfos(assessedIdentity, 2.0f, true); - Certificate certificate = certificatesManager.generateCertificate(certificateInfos, entry, null, false); + CertificateConfig config = CertificateConfig.builder().build(); + Certificate certificate = certificatesManager.generateCertificate(certificateInfos, entry, null, config); dbInstance.commitAndCloseSession(); Assert.assertNotNull(certificate); sleep(1000); @@ -275,7 +278,8 @@ public class CertificationTest extends OlatJerseyTestCase { dbInstance.commitAndCloseSession(); CertificateInfos certificateInfos = new CertificateInfos(assessedIdentity, 2.0f, true); - Certificate certificate = certificatesManager.generateCertificate(certificateInfos, entry, null, false); + CertificateConfig config = CertificateConfig.builder().build(); + Certificate certificate = certificatesManager.generateCertificate(certificateInfos, entry, null, config); dbInstance.commitAndCloseSession(); Assert.assertNotNull(certificate); sleep(1000);