From 1222c16a320b21f44b536f54fac3f52ae3f91b73 Mon Sep 17 00:00:00 2001
From: Guillaume Heurtier <guillaume.heurtier@maarch.org>
Date: Fri, 15 Nov 2019 15:02:27 +0100
Subject: [PATCH] FEAT #12161 TIME 0:30 showing all groups in user admin, but
 disabling the groups the user cannot assign

---
 src/app/group/models/GroupModelAbstract.php    | 18 ++++++++++++------
 .../user/user-administration.component.html    |  2 +-
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/src/app/group/models/GroupModelAbstract.php b/src/app/group/models/GroupModelAbstract.php
index 0f91c5d12d6..02bab73fa05 100755
--- a/src/app/group/models/GroupModelAbstract.php
+++ b/src/app/group/models/GroupModelAbstract.php
@@ -195,17 +195,23 @@ abstract class GroupModelAbstract
         $rawUserGroups = UserModel::getGroupsByUser(['id' => $aArgs['userId']]);
         $userGroups = array_column($rawUserGroups, 'group_id');
 
-        if ($GLOBALS['userId'] == 'superadmin') {
-            $allGroups = GroupModel::get(['select' => ['group_id', 'group_desc']]);
-        } else {
-            $allGroups = PrivilegeController::getAssignableGroups(['userId' => $GLOBALS['id']]);
+        $allGroups = GroupModel::get(['select' => ['group_id', 'group_desc']]);
+        $assignableGroups = PrivilegeController::getAssignableGroups(['userId' => $GLOBALS['id']]);
+        $assignableGroups = array_column($assignableGroups, 'group_id');
+
+        foreach ($allGroups as $key => $value) {
+            if (in_array($value['group_id'], $assignableGroups)) {
+                $allGroups[$key]['enabled'] = true;
+            } else {
+                $allGroups[$key]['enabled'] = false;
+            }
         }
 
         foreach ($allGroups as $key => $value) {
             if (in_array($value['group_id'], $userGroups)) {
-                $allGroups[$key]['disabled'] = true;
+                $allGroups[$key]['checked'] = true;
             } else {
-                $allGroups[$key]['disabled'] = false;
+                $allGroups[$key]['checked'] = false;
             }
         }
 
diff --git a/src/frontend/app/administration/user/user-administration.component.html b/src/frontend/app/administration/user/user-administration.component.html
index 835a01c9c45..b81d74506d9 100755
--- a/src/frontend/app/administration/user/user-administration.component.html
+++ b/src/frontend/app/administration/user/user-administration.component.html
@@ -219,7 +219,7 @@
                         <mat-nav-list>
                             <mat-list-item *ngFor="let group of user.allGroups" disableRipple="true">
                                 <mat-slide-toggle id="{{group.group_id}}" color="primary"
-                                    [checked]="group.disabled == true" (change)="toggleGroup(group)">
+                                    [checked]="group.checked == true" [disabled]="!group.enabled" (change)="toggleGroup(group)">
                                     {{group.group_desc}}</mat-slide-toggle>
                             </mat-list-item>
                         </mat-nav-list>
-- 
GitLab