diff --git a/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java b/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java index 89609755385339918ddfa3217ac4d20ae660e84d..63b41bb1ca50a190a2188dda37527188da01d31e 100644 --- a/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java +++ b/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java @@ -889,7 +889,7 @@ public class NewCachePersistingAssessmentManager extends BasicManager implements if(passed != null && passed.booleanValue() && course.getCourseConfig().isAutomaticCertificationEnabled()) { CertificatesManager certificatesManager = CoreSpringFactory.getImpl(CertificatesManager.class); - if(certificatesManager.isRecertificationAllowed(assessedIdentity, courseEntry)) { + if(certificatesManager.isCertificationAllowed(assessedIdentity, courseEntry)) { CertificateTemplate template = null; Long templateId = course.getCourseConfig().getCertificateTemplate(); if(templateId != null) { diff --git a/src/main/java/org/olat/course/certificate/CertificatesManager.java b/src/main/java/org/olat/course/certificate/CertificatesManager.java index d56331cebba45075928b358f1f1318b2929919a7..171cf78cba621eabdfbbfefab9fa706908b0cc05 100644 --- a/src/main/java/org/olat/course/certificate/CertificatesManager.java +++ b/src/main/java/org/olat/course/certificate/CertificatesManager.java @@ -137,7 +137,17 @@ public interface CertificatesManager { public List<Certificate> getCertificates(IdentityRef identity, OLATResource resource); - public boolean isRecertificationAllowed(Identity identity, RepositoryEntry entry); + /** + * Check if recertification is allowed and if it is the case, check the + * recertification period. If not allowed, check if a certificate was + * already emitted. + * + * @param identity + * @param entry + * @return + */ + + public boolean isCertificationAllowed(Identity identity, RepositoryEntry entry); public File previewCertificate(CertificateTemplate template, RepositoryEntry entry, Locale locale); 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 acc66bef09ff8245e55b8269195242226c14e792..3d6ee860d40d96cfdab7fde99ea4e9329596f032 100644 --- a/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java +++ b/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java @@ -512,7 +512,7 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList } @Override - public boolean isRecertificationAllowed(Identity identity, RepositoryEntry entry) { + public boolean isCertificationAllowed(Identity identity, RepositoryEntry entry) { boolean allowed = false; try { ICourse course = CourseFactory.loadCourse(entry.getOlatResource()); @@ -538,7 +538,7 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList allowed = nextCertification.before(now); } } else { - allowed = true; + allowed = !hasCertificate(identity, entry.getOlatResource().getKey()); } } catch (CorruptedCourseException e) { log.error("", e); 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 2961bfae91491b97961c81e2631eb5b931cb3500..4cc7b74868fe5159dfb5237b3a466933b2edf98c 100644 --- a/src/main/java/org/olat/course/certificate/ui/AssessedIdentityCertificatesController.java +++ b/src/main/java/org/olat/course/certificate/ui/AssessedIdentityCertificatesController.java @@ -185,7 +185,7 @@ public class AssessedIdentityCertificatesController extends BasicController impl ICourse course = CourseFactory.loadCourse(resource); Identity assessedIdentity = assessedUserCourseEnv.getIdentityEnvironment().getIdentity(); RepositoryEntry courseEntry = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry(); - if(certificatesManager.isRecertificationAllowed(assessedIdentity, courseEntry)) { + if(certificatesManager.isCertificationAllowed(assessedIdentity, courseEntry)) { //don't need to confirm doGenerateCertificate(ureq); } else {