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#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'],

View File

@ -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;
}
}

View File

@ -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);
}
}

View File

@ -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');

View File

@ -32,13 +32,13 @@
placeholder="Suche"
:options="agencyContributor"
@input="updateContributor" />-->
<Multiselect v-model="value"
<Multiselect v-if="!group.isMainGroup"
v-model="value"
:options="formattedContributors"
label="displayName"
placeholder="Mitarbeiter der Gruppe hinzufügen"
track-by="user"
:multiple="true"
:user-select="true"
style="width: 350px"
@input="updateContributorsValue()">
<template #singleLabel="{ option }">
@ -87,15 +87,16 @@ export default {
}
},
mounted() {
this.value = null
this.getAgencyContributors()
},
methods: {
async updateContributorsValue() {
let valueData = ''
const selectedUsers = []
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)
},
// Contributors changed, update the formattedContributors for the Field