Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -rc7c5d74f9c402bdab97bd3fd46436adbfa9202b8 -r3022c82d389b293e8cd2b85df62d90985b441535 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision c7c5d74f9c402bdab97bd3fd46436adbfa9202b8) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 3022c82d389b293e8cd2b85df62d90985b441535) @@ -784,14 +784,22 @@ } } if (uors.isEmpty()) { + user.getUserOrganisations().remove(uo); + Iterator userOrganisationIterator = org.getUserOrganisations().iterator(); + while (userOrganisationIterator.hasNext()) { + if (uo.getUserOrganisationId().equals(userOrganisationIterator.next().getUserOrganisationId())) { + userOrganisationIterator.remove(); + break; + } + } delete(uo); } else { uo.setUserOrganisationRoles(uors); save(uo); } if (checkGroupManagerRoles) { - // make sure group managers have monitor and learner in each subgroup + // make sure group managers have monitor in each subgroup checkGroupManager(user, org); } } @@ -821,33 +829,24 @@ uos.add(uo); log.debug("added " + user.getLogin() + " to " + org.getName()); uo = setRoleForUserOrganisation(uo, (Role) findById(Role.class, Role.ROLE_MONITOR)); - uo = setRoleForUserOrganisation(uo, (Role) findById(Role.class, Role.ROLE_LEARNER)); save(uo); - return; + continue; } // iterate through roles and add monitor and learner if don't // already exist Set uors = uo.getUserOrganisationRoles(); if ((uors != null) && !uors.isEmpty()) { boolean isMonitor = false; - boolean isLearner = false; for (UserOrganisationRole uor : uors) { if (uor.getRole().getName().equals(Role.MONITOR)) { isMonitor = true; - } else if (uor.getRole().getName().equals(Role.LEARNER)) { - isLearner = true; - } - if (isMonitor && isLearner) { break; } } if (!isMonitor) { uo = setRoleForUserOrganisation(uo, (Role) findById(Role.class, Role.ROLE_MONITOR)); } - if (!isLearner) { - uo = setRoleForUserOrganisation(uo, (Role) findById(Role.class, Role.ROLE_LEARNER)); - } save(uo); } }