From 6a3f698171685593b295f75b4e2015a96cd9be61 Mon Sep 17 00:00:00 2001 From: UZH <none@none> Date: Thu, 8 Mar 2018 11:58:02 +0100 Subject: [PATCH] OO-3368: check if participant is already in waiting list before trying to insert him --- .../group/manager/BusinessGroupServiceImpl.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java index c778a89db8b..f9a92d67fff 100644 --- a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java +++ b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java @@ -1255,7 +1255,18 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD } private void addToWaitingList(Identity ureqIdentity, Identity identity, BusinessGroup group, MailPackage mailing, - List<BusinessGroupModifiedEvent.Deferred> events) { + List<BusinessGroupModifiedEvent.Deferred> events) { + if (!businessGroupRelationDAO.hasRole(identity, group, GroupRoles.waiting.name())) { + internalAddToWaitingList(ureqIdentity, identity, group, mailing, events); + } + } + + /** + * This method is for internal usage only. It adds the identity to to group without synchronization or checks! + * + */ + private void internalAddToWaitingList(Identity ureqIdentity, Identity identity, BusinessGroup group, MailPackage mailing, + List<BusinessGroupModifiedEvent.Deferred> events) { businessGroupRelationDAO.addRole(identity, group, GroupRoles.waiting.name()); // notify currently active users of this business group @@ -1289,7 +1300,7 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD response.getIdentitiesAlreadyInGroup().add(identity); } else { // identity has permission and is not already in group => add it - addToWaitingList(ureqIdentity, identity, currBusinessGroup, mailing, events); + internalAddToWaitingList(ureqIdentity, identity, currBusinessGroup, mailing, events); response.getAddedIdentities().add(identity); } } -- GitLab