Index: lams_central/src/java/org/lamsfoundation/lams/webservice/SPEnrolmentServlet.java =================================================================== diff -u -r657c3ddcb79ba8772e462cc797d2937dd88292cc -rf6a638aaf02124adf0a3a519440b3b31496937ae --- lams_central/src/java/org/lamsfoundation/lams/webservice/SPEnrolmentServlet.java (.../SPEnrolmentServlet.java) (revision 657c3ddcb79ba8772e462cc797d2937dd88292cc) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/SPEnrolmentServlet.java (.../SPEnrolmentServlet.java) (revision f6a638aaf02124adf0a3a519440b3b31496937ae) @@ -332,10 +332,8 @@ // users who are part of courses but are not in the file anymore are eligible for disabling allExistingUsersFromParsedCourses.removeAll(allParsedUsers); for (User user : allExistingUsersFromParsedCourses) { - // make a flat set of roles from all subcourses - Set roles = userManagementService.getRolesForUser(user.getUserId()).values().stream() - .collect(HashSet::new, Set::addAll, Set::addAll); - if (roles.isEmpty()) { + boolean hasAnyRoles = userManagementService.hasUserAnyRoles(user.getUserId()); + if (!hasAnyRoles) { // he is only a learner or this is staff mode, so disable userManagementService.disableUser(user.getUserId()); Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java =================================================================== diff -u -r346836ed4a3680af233482b184e7371ec5b620bc -rf6a638aaf02124adf0a3a519440b3b31496937ae --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 346836ed4a3680af233482b184e7371ec5b620bc) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision f6a638aaf02124adf0a3a519440b3b31496937ae) @@ -246,6 +246,11 @@ Map> getRolesForUser(Integer userId); /** + * Checks if given user has got any roles in any organisation. + */ + boolean hasUserAnyRoles(Integer userId); + + /** * @param login * @param typeId * @param stateId Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -r3080c61fc08c0d5fdc28fb9ad6c8ab51363693d9 -rf6a638aaf02124adf0a3a519440b3b31496937ae --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 3080c61fc08c0d5fdc28fb9ad6c8ab51363693d9) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision f6a638aaf02124adf0a3a519440b3b31496937ae) @@ -402,7 +402,17 @@ return baseDAO.findByProperties(UserOrganisation.class, properties); } + /** + * Checks if given user has got any roles in any organisation. + */ @Override + public boolean hasUserAnyRoles(Integer userId) { + Map properties = new HashMap<>(); + properties.put("userOrganisation.user.userId", userId); + return baseDAO.countByProperties(UserOrganisationRole.class, properties) > 0; + } + + @Override public List getUserOrganisationsForUserByTypeAndStatusAndParent(String login, Integer typeId, Integer stateId, Integer parentOrgId) { Map properties = new HashMap<>();