Gruppen können befüllt und geleert werden

This commit is contained in:
holger.trampe 2021-07-01 16:26:08 +02:00
parent e8fbc6dfcc
commit 2442ae051b
5 changed files with 42 additions and 11 deletions

View File

@ -9,7 +9,7 @@ return [
['name' => 'agency#show', 'url' => '/getagencydata', 'verb' => 'GET'], ['name' => 'agency#show', 'url' => '/getagencydata', 'verb' => 'GET'],
['name' => 'agency#updateagencydata', 'url' => '/updateagencydata', 'verb' => 'PUT'], ['name' => 'agency#updateagencydata', 'url' => '/updateagencydata', 'verb' => 'PUT'],
['name' => 'agency#getagencycontributors', 'url' => '/getagencycontributors', 'verb' => 'GET'], ['name' => 'agency#getagencycontributors', 'url' => '/getagencycontributors', 'verb' => 'GET'],
['name' => 'agency#updateagencygroupcontributors', 'url' => '/updateagencygroupcontributors/{gid}', 'verb' => 'POST'], ['name' => 'agency#updateagencygroupcontributors', 'url' => '/updateagencygroupcontributors/{gid}', 'verb' => 'PUT'],
# GROUPS # GROUPS
['name' => 'group#getagencygroups', 'url' => '/getagencygroups', 'verb' => 'GET'], ['name' => 'group#getagencygroups', 'url' => '/getagencygroups', 'verb' => 'GET'],
['name' => 'group#addagencygroup', 'url' => '/addagencygroup', 'verb' => 'PUT'], ['name' => 'group#addagencygroup', 'url' => '/addagencygroup', 'verb' => 'PUT'],

View File

@ -3,6 +3,7 @@ namespace OCA\Agency\Agency;
use OCP\IRequest; use OCP\IRequest;
use OCP\IUserSession; use OCP\IUserSession;
use OCP\IUserManager;
use OCP\IDBConnection; use OCP\IDBConnection;
use OCA\Agency\Db\AgencyMapper; use OCA\Agency\Db\AgencyMapper;
use OCA\Agency\Service\AgencyService; use OCA\Agency\Service\AgencyService;
@ -14,12 +15,14 @@ class AgencyManager {
protected $agencyMapper; protected $agencyMapper;
protected $groupManager; protected $groupManager;
protected $userSession; protected $userSession;
protected $userManager;
protected $db; 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->agencyMapper = $agencyMapper;
$this->groupManager = $groupManager; $this->groupManager = $groupManager;
$this->userSession = $userSession; $this->userSession = $userSession;
$this->userManager = $userManager;
} }
/** /**
* Creates a new Agency and save it to the database. * Creates a new Agency and save it to the database.
@ -94,4 +97,24 @@ class AgencyManager {
} }
return $return_users; 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;
}
} }

View File

@ -5,6 +5,7 @@ namespace OCA\Agency\Controller;
use OCP\IRequest; use OCP\IRequest;
use OCP\IUserSession; use OCP\IUserSession;
use OCP\IUserManager;
use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Controller; use OCP\AppFramework\Controller;
@ -15,7 +16,6 @@ use OCP\IDBConnection;
class AgencyController extends Controller { class AgencyController extends Controller {
protected $userManager;
private $service; private $service;
private $Id; private $Id;
protected $userSession; protected $userSession;
@ -109,8 +109,8 @@ class AgencyController extends Controller {
* *
*/ */
# TODO: Noch prüfen, OB der Nutzer das überhautp darf und Agenturcheck usw. # TODO: Noch prüfen, OB der Nutzer das überhautp darf und Agenturcheck usw.
public function updateagencygroupcontributors(string $gid){ public function updateagencygroupcontributors(string $gid, array $users){
return $_POST; return $this->agencyManager->updateagencygroupcontributors($gid, $users);
} }
} }

View File

@ -54,12 +54,19 @@ class GroupController extends Controller {
if(str_contains($group->getGId(), 'subgroup')){ if(str_contains($group->getGId(), 'subgroup')){
$isDefault = false; $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 // Adding current Users to the Group
$user_groups = []; $user_groups = [];
foreach($group->getUsers() as $groupuser){ foreach($group->getUsers() as $groupuser){
array_push($user_groups, array("user" => $groupuser->getUID(), "displayName" => $groupuser->getDisplayName())); 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 //Sorting the Array A-Z by GroupDisplayName
$keys = array_column($response_groups, 'name'); $keys = array_column($response_groups, 'name');

View File

@ -32,13 +32,13 @@
placeholder="Suche" placeholder="Suche"
:options="agencyContributor" :options="agencyContributor"
@input="updateContributor" />--> @input="updateContributor" />-->
<Multiselect v-model="value" <Multiselect v-if="!group.isMainGroup"
v-model="value"
:options="formattedContributors" :options="formattedContributors"
label="displayName" label="displayName"
placeholder="Mitarbeiter der Gruppe hinzufügen" placeholder="Mitarbeiter der Gruppe hinzufügen"
track-by="user" track-by="user"
:multiple="true" :multiple="true"
:user-select="true"
style="width: 350px" style="width: 350px"
@input="updateContributorsValue()"> @input="updateContributorsValue()">
<template #singleLabel="{ option }"> <template #singleLabel="{ option }">
@ -87,15 +87,16 @@ export default {
} }
}, },
mounted() { mounted() {
this.value = null
this.getAgencyContributors() this.getAgencyContributors()
}, },
methods: { methods: {
async updateContributorsValue() { async updateContributorsValue() {
let valueData = '' const selectedUsers = []
this.value.forEach((item) => { this.value.forEach((item) => {
valueData += item.user + '___' selectedUsers.push(item.user)
}) })
const r = await axios.post(generateUrl('/apps/agency/updateagencygroupcontributors/' + this.group.gid), valueData) const r = await axios.put(generateUrl('/apps/agency/updateagencygroupcontributors/' + this.group.gid), { users: selectedUsers })
console.log(r) console.log(r)
}, },
// Contributors changed, update the formattedContributors for the Field // Contributors changed, update the formattedContributors for the Field