Author: echatellier Date: 2014-06-09 17:26:32 +0200 (Mon, 09 Jun 2014) New Revision: 156 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/156 Log: Affichage des utilsateurs suivant la configuration des chefs de groupe Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/UserFolderAction.java trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/user-folder-input.jsp Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java 2014-06-09 14:52:18 UTC (rev 155) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java 2014-06-09 15:26:32 UTC (rev 156) @@ -24,6 +24,7 @@ * #L% */ +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -46,6 +47,8 @@ import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroup; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroupTopiaDao; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.GroupChef; +import com.franciaflex.faxtomail.persistence.entities.GroupChefTopiaDao; import com.franciaflex.faxtomail.persistence.entities.MailFilter; import com.franciaflex.faxtomail.persistence.entities.MailFilterTopiaDao; import com.franciaflex.faxtomail.persistence.entities.MailFolder; @@ -205,7 +208,6 @@ public void saveUserFolders(Map<String, Collection<MailFolder>> userFolders) { log.warn("user folders = " + userFolders); - //MailFolderTopiaDao mailFolderTopiaDao = getPersistenceContext().getMailFolderDao(); FaxToMailUserTopiaDao faxToMailUserTopiaDao = getPersistenceContext().getFaxToMailUserDao(); for (Map.Entry<String, Collection<MailFolder>> entry : userFolders.entrySet()) { @@ -227,4 +229,41 @@ FaxToMailUserGroupTopiaDao faxToMailUserGroupDao = getPersistenceContext().getFaxToMailUserGroupDao(); return faxToMailUserGroupDao.forAll().setOrderByArguments(FaxToMailUserGroup.PROPERTY_FULL_PATH).findAll(); } + + /** + * Retourne l'ensemble des utilisateurs appartenant aux groupes gérés par les groupes chef. + * + * @param user current user + * @return all managed users + */ + public List<FaxToMailUser> getUserManagedUsers(FaxToMailUser user) { + + List<FaxToMailUser> result = new ArrayList<>(); + + // s'il n'y a pas de group, il ne peut pas y avoir de droits + if (user.getUserGroups() != null) { + + // recuperation de tout les groupes chef dont l'utilsateur est membre + GroupChefTopiaDao groupChefTopiaDao = getPersistenceContext().getGroupChefDao(); + List<GroupChef> groupChefs = groupChefTopiaDao.forUserGroupIn(user.getUserGroups()).findAll(); + + // recuperation de tous les users des groups gérés + FaxToMailUserTopiaDao faxToMailUserTopiaDao = getPersistenceContext().getFaxToMailUserDao(); + for (GroupChef groupChef : groupChefs) { + // groups + if (groupChef.getManagedGroups() != null) { + for (FaxToMailUserGroup group : groupChef.getManagedGroups()) { + List<FaxToMailUser> users = faxToMailUserTopiaDao.forUserGroupsContains(group).findAll(); + result.addAll(users); + } + } + // users + if (groupChef.getManagedUsers() != null) { + result.addAll(groupChef.getManagedUsers()); + } + } + } + + return result; + } } Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/UserFolderAction.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/UserFolderAction.java 2014-06-09 14:52:18 UTC (rev 155) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/UserFolderAction.java 2014-06-09 15:26:32 UTC (rev 156) @@ -26,9 +26,11 @@ import java.lang.reflect.Type; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.convention.annotation.Action; @@ -37,7 +39,6 @@ import org.apache.struts2.convention.annotation.Result; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; -import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroup; import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.services.service.ConfigurationService; import com.franciaflex.faxtomail.services.service.MailFolderService; @@ -60,8 +61,6 @@ protected List<FaxToMailUser> users; - protected List<FaxToMailUserGroup> groups; - protected Map<String, Collection<MailFolder>> userFolders; public void setConfigurationService(ConfigurationService configurationService) { @@ -76,8 +75,13 @@ @Action("user-folder-input") public String input() throws Exception { mailFolders = mailFolderService.getAllMailFolders(); - users = configurationService.getAllUsers(); - groups = configurationService.getAllGroups(); + users = configurationService.getUserManagedUsers(getSession().getAuthenticatedFaxToMailUser()); + + // build display map + userFolders = new HashMap<>(); + for (FaxToMailUser user : users) { + userFolders.put(user.getTopiaId(), CollectionUtils.emptyIfNull(user.getAffectedFolders())); + } return INPUT; } @@ -97,10 +101,6 @@ return users; } - public List<FaxToMailUserGroup> getGroups() { - return groups; - } - public Map<String, Collection<MailFolder>> getUserFolders() { return userFolders; } Modified: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/user-folder-input.jsp =================================================================== --- trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/user-folder-input.jsp 2014-06-09 14:52:18 UTC (rev 155) +++ trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/user-folder-input.jsp 2014-06-09 15:26:32 UTC (rev 156) @@ -36,10 +36,16 @@ UserFolderModule.value('UserFolderData', { 'mailFolders': <s:property value="toJson(mailFolders)" escapeHtml="false"/>, 'users': <s:property value="toJson(users)" escapeHtml="false"/>, - 'groups': <s:property value="toJson(groups)" escapeHtml="false"/>, 'userFolders': <s:property value="toJson(userFolders)" escapeHtml="false"/> }); </script> + + <!-- + Current user groups : + <s:iterator value="authenticatedUser.userGroups"> + - <s:property value="fullPath" /> + </s:iterator> + --> </head> <body> @@ -51,11 +57,8 @@ <s:form id="main_form" action="user-folder" method="post" ng-controller="UserFolderController"> <s:hidden name="userFoldersJson" value="{{userFolders}}" /> - <div class="form-group"> - <label>Groupe : - <select ng-model="selectedGroup" ng-options="group as group.fullPath for group in groups"></select> - </label> - </div> + Voici la liste des utilisateurs dont vous avez la gestion car vous faites partit d'un groupe + capable de gérer les utilisateurs suivants : <table id='table-snapshot' class="table table-bordered"> <thead> @@ -73,6 +76,9 @@ </div> </td> </tr> + <tr ng-if="!users || users.length == 0"> + <td class="emptyTable" colspan="2">Aucun utilisateur trouvé</td> + </tr> </tbody> </table>