diff --git a/appinfo/routes.php b/appinfo/routes.php index 98812d6..21f9ef7 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -9,7 +9,7 @@ return [ ['name' => 'agency#show', 'url' => '/getagencydata', 'verb' => 'GET'], ['name' => 'agency#updateagencydata', 'url' => '/updateagencydata', 'verb' => 'PUT'], ['name' => 'agency#getagencycontributors', 'url' => '/getagencycontributors', 'verb' => 'GET'], - ['name' => 'agency#updateagencygroupcontributors', 'url' => '/updateagencygroupcontributors/{gid}', 'verb' => 'POST'], + ['name' => 'agency#updateagencygroupcontributors', 'url' => '/updateagencygroupcontributors/{gid}', 'verb' => 'PUT'], # GROUPS ['name' => 'group#getagencygroups', 'url' => '/getagencygroups', 'verb' => 'GET'], ['name' => 'group#addagencygroup', 'url' => '/addagencygroup', 'verb' => 'PUT'], diff --git a/lib/Agency/AgencyManager.php b/lib/Agency/AgencyManager.php index 520658e..652de31 100644 --- a/lib/Agency/AgencyManager.php +++ b/lib/Agency/AgencyManager.php @@ -3,6 +3,7 @@ namespace OCA\Agency\Agency; use OCP\IRequest; use OCP\IUserSession; +use OCP\IUserManager; use OCP\IDBConnection; use OCA\Agency\Db\AgencyMapper; use OCA\Agency\Service\AgencyService; @@ -14,12 +15,14 @@ class AgencyManager { protected $agencyMapper; protected $groupManager; protected $userSession; + protected $userManager; protected $db; - public function __construct($AppName, IDBConnection $db, IRequest $request, AgencyMapper $agencyMapper, IGroupManager $groupManager, IUserSession $userSession) { + public function __construct($AppName, IDBConnection $db, IRequest $request, AgencyMapper $agencyMapper, IGroupManager $groupManager, IUserSession $userSession, IUserManager $userManager) { $this->agencyMapper = $agencyMapper; $this->groupManager = $groupManager; $this->userSession = $userSession; + $this->userManager = $userManager; } /** * Creates a new Agency and save it to the database. @@ -94,4 +97,24 @@ class AgencyManager { } return $return_users; } + + # TODO: Hier prüfen, ob alle User in der gleichen Agentur sind und er eingeloggte User auch wirklich das Recht dazu hat + public function updateagencygroupcontributors(string $gid, array $users){ + $groupToChange = $this->groupManager->get($gid); + $usersInGroup = $groupToChange->getUsers(); + + foreach($usersInGroup as $user){ + if($groupToChange->canRemoveUser()){ + $groupToChange->removeUser($user); + } + } + + foreach($users as $user) { + if($groupToChange->canAddUser()){ + $groupToChange->addUser($this->userManager->get($user)); + } + } + return $users; + } + } \ No newline at end of file diff --git a/lib/Controller/AgencyController.php b/lib/Controller/AgencyController.php index 5c18a8f..6626dc2 100644 --- a/lib/Controller/AgencyController.php +++ b/lib/Controller/AgencyController.php @@ -5,6 +5,7 @@ namespace OCA\Agency\Controller; use OCP\IRequest; use OCP\IUserSession; +use OCP\IUserManager; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Controller; @@ -15,7 +16,6 @@ use OCP\IDBConnection; class AgencyController extends Controller { - protected $userManager; private $service; private $Id; protected $userSession; @@ -109,8 +109,8 @@ class AgencyController extends Controller { * */ # TODO: Noch prüfen, OB der Nutzer das überhautp darf und Agenturcheck usw. - public function updateagencygroupcontributors(string $gid){ - return $_POST; + public function updateagencygroupcontributors(string $gid, array $users){ + return $this->agencyManager->updateagencygroupcontributors($gid, $users); } } \ No newline at end of file diff --git a/lib/Controller/GroupController.php b/lib/Controller/GroupController.php index bf9b772..60cdeb0 100644 --- a/lib/Controller/GroupController.php +++ b/lib/Controller/GroupController.php @@ -54,12 +54,19 @@ class GroupController extends Controller { if(str_contains($group->getGId(), 'subgroup')){ $isDefault = false; } + + //Checking if the Group is the Main-Group - EVERY User of this Agency should be in this group! + $isMainGroup = false; + if(sizeof(explode("_", strval($group->getGId()))) == 2){ + $isMainGroup = true; + } + // Adding current Users to the Group $user_groups = []; foreach($group->getUsers() as $groupuser){ array_push($user_groups, array("user" => $groupuser->getUID(), "displayName" => $groupuser->getDisplayName())); } - array_push($response_groups, array('name' => $group->getDisplayName(), 'gid' => $group->getGid(), 'isDefault' => $isDefault, 'users' => $user_groups)); + array_push($response_groups, array('name' => $group->getDisplayName(), 'gid' => $group->getGid(), 'isDefault' => $isDefault, 'isMainGroup' => $isMainGroup, 'users' => $user_groups)); } //Sorting the Array A-Z by GroupDisplayName $keys = array_column($response_groups, 'name'); diff --git a/src/components/Group.vue b/src/components/Group.vue index 0abbb71..7044f9a 100644 --- a/src/components/Group.vue +++ b/src/components/Group.vue @@ -32,13 +32,13 @@ placeholder="Suche" :options="agencyContributor" @input="updateContributor" />--> -