Skip to content
Snippets Groups Projects
Commit 1447d6c8 authored by Moreau Elise's avatar Moreau Elise
Browse files

add class and function to add user in a group

parent 4c7dfb68
No related branches found
No related tags found
No related merge requests found
...@@ -13,6 +13,7 @@ use App\Application\Actions\User\ViewModifyForm; ...@@ -13,6 +13,7 @@ use App\Application\Actions\User\ViewModifyForm;
use App\Application\Actions\Group\CreateGroupAction; use App\Application\Actions\Group\CreateGroupAction;
use App\Application\Actions\Group\ListGroupsAction; use App\Application\Actions\Group\ListGroupsAction;
use App\Application\Actions\Group\ViewGroupAction; use App\Application\Actions\Group\ViewGroupAction;
use App\Application\Actions\Group\AddUserGroupAction;
use App\Application\Actions\Search\SearchAction; use App\Application\Actions\Search\SearchAction;
...@@ -121,9 +122,8 @@ return function (App $app) { ...@@ -121,9 +122,8 @@ return function (App $app) {
return $this->get(Twig::class)->render($response, "/group/create_group.twig", []); return $this->get(Twig::class)->render($response, "/group/create_group.twig", []);
}); });
$group->get('', ListGroupsAction::class); $group->get('', ListGroupsAction::class);
$group->post('/{id}/add', AddUserGroupAction::class);
$group->get('/{id}', ViewGroupAction::class); $group->get('/{id}', ViewGroupAction::class);
$group->post('', CreateGroupAction::class);
$group->delete('{id}', DeleteGroupAction::class);
} }
); );
......
<?php
declare(strict_types=1);
namespace App\Application\Actions\Group;
use App\Domain\Group\GroupNotFoundException;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use App\Domain\Group\Group ;
class AddUserGroupAction extends GroupAction
{
/**
* {@inheritdoc}
*/
protected function action(): Response
{
$groupId = (int) $this->resolveArg('id');
$group = $this->groupRepository->find($groupId);
if (!isset($group)) {
throw new GroupNotFoundException();
}
$userRepository = $this->em->getRepository('App\Domain\User\User');
$currentUser = $userRepository->find($_SESSION['userId']);
$currentUser->addGroup($group);
$this->em->persist($group);
$this->em->flush();
$this->logger->info("User has been added in group.");
$this->flash->addMessage('add_user', 'User has been added in group.');
return $this->response
->withHeader('Location', '/groups/' . $groupId)
->withStatus(302);
}
}
...@@ -72,14 +72,9 @@ class Group implements JsonSerializable ...@@ -72,14 +72,9 @@ class Group implements JsonSerializable
} }
public function addUser(User $user){ public function addUser(User $user){
$this->users[] = $user; $this->users->add($user);
} }
public function setAdmin(User $user){
$this->admin[] = $user;
}
public function getUsers(){ public function getUsers(){
return $this->users; return $this->users;
} }
...@@ -89,28 +84,34 @@ class Group implements JsonSerializable ...@@ -89,28 +84,34 @@ class Group implements JsonSerializable
return $this->admin; return $this->admin;
} }
public function getUser($id): bool public function hasUser($id): bool
{ {
for ($i = 0; $i < count($this->users); $i += 1){ for ($i = 0; $i < count($this->users); $i += 1){
if ($this->users[$i]->getId() == $id){ if ($this->users[$i]->getId() == $id){
return true; return true;
} }
return false;
} }
return false;
} }
/** /**
* @return bool * @return bool
*/ */
public function getAdmin($id):bool public function checkAdmin($id):bool
{ {
if($id == $this->admin){ if($id == $this->admin->getId()){
return true; return true;
} }
return false; return false;
} }
/**
* Set user as admin
*/
public function setAdmin(User $user){
$this->admin = $user;
}
/** /**
* @return array * @return array
*/ */
...@@ -120,7 +121,8 @@ class Group implements JsonSerializable ...@@ -120,7 +121,8 @@ class Group implements JsonSerializable
'id' => $this->id, 'id' => $this->id,
'name' => $this->name, 'name' => $this->name,
'description' => $this->description, 'description' => $this->description,
'ids_users' => $this->ids_users 'users' => $this->users,
'private' => $this->private
]; ];
} }
......
...@@ -79,7 +79,7 @@ class User implements JsonSerializable ...@@ -79,7 +79,7 @@ class User implements JsonSerializable
private $messages; private $messages;
/** /**
* @OneToMany(targetEntity="App\Domain\Group\Group", mappedBy="users") * @ORM\OneToMany(targetEntity="App\Domain\Group\Group", mappedBy="users")
*/ */
private $admins; private $admins;
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<div class="ui card" id="usercard"> <div class="ui card" id="usercard">
<div class="content"> <div class="content">
<img class="ui left floated circular image" src="/assets/img/default-avatar.png"> <img class="ui left floated circular image" src="/assets/img/default-avatar.png">
<a class="header">{{group.name}}</a> <a class="header">{{group.name}}</a>
<div class="description"> <div class="description">
<p>{{group.description}}</p> <p>{{group.description}}</p>
...@@ -17,9 +16,24 @@ ...@@ -17,9 +16,24 @@
<form action="/group/delete" method="post"> <form action="/group/delete" method="post">
<button type="submit" class="ui button"><i class="trash icon"></i></button> <button type="submit" class="ui button"><i class="trash icon"></i></button>
</form> </form>
{% if group.hasUser(session.userId) == false %}
<form action="/groups/{{group.getId}}/add" method="post">
<button type="submit" class="ui button"><i class="user plus icon"></i></button>
</form>
{% endif %} {% endif %}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="ui relaxed divided list">
<h2> Members </h2>
{% for user in group.users %}
<div class="item">
<img class="ui avatar image" src="/assets/img/default-avatar.png"></i>
<div class="content">
<a href="users/{{user.id}}" class="header">@{{user.username}}</a>
</div>
</div>
{% endfor %}
</div>
{% endblock %} {% endblock %}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment