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

add private option in groups

parent 1447d6c8
No related branches found
No related tags found
No related merge requests found
......@@ -19,20 +19,22 @@ class CreateGroupAction extends GroupAction
$groupname = $parsedRequestBody['name'];
$description = $parsedRequestBody['description'];
$private = isset($parsedRequestBody['private']) ? 1 : 0;
if ($this->groupRepository->findOneBy(array('name' => $groupname))){
return $this->twig->render(
$this->response, "/group/create_group.twig",
array(
"name" => $groupname,
"description" => $description,
"private" => $private,
"message" => "Groupname already exist",
"formstatus" => "error"
)
);
}
$group = new Group(null, $groupname, $description, $currentUser);
$group = new Group(null, $groupname, $description, $currentUser, $private);
$currentUser->addGroup($group);
$this->em->persist($group);
$this->em->flush();
......
......@@ -12,10 +12,17 @@ class ListGroupsAction extends GroupAction
*/
protected function action(): Response
{
$groups = $this->groupRepository->findAll();
$query = $this->em->createQueryBuilder();
$query->select('g')
->from('App\Domain\Group\Group', 'g')
->where('g.private = 0')
->orWhere(':user_id MEMBER OF g.users')
->setParameters(array(':user_id' => $_SESSION['userId']));
$groups = $query->getQuery()->getResult();
$this->logger->info("Group list was viewed.");
return $this->twig->render($this->response, "/group/list_groups.twig", ["groups" => $groups]);
return $this->twig->render($this->response, "/group/list_groups.twig", ["groups" => $groups, "session" => $_SESSION]);
}
}
......@@ -20,8 +20,8 @@ class ModifyGroupAction extends GroupAction
$name = $this->checkvalue($parsedRequestBody['name']);
$description = $this->checkvalue($parsedRequestBody['description']);
$private = $this->checkvalue($parsedRequestBody['private']);
$group_id = $this->checkvalue($parsedRequestBody['id']);
$private = isset($parsedRequestBody['private']) ? 1 : 0;
$group_id = (int) $this->resolveArg('id');
if (!$this->groupRepository->findOneBy(array('name' => $name))) {
return $this->twig->render(
......
......@@ -47,6 +47,12 @@ class Group implements JsonSerializable
*/
private $description;
/**
* @var int
* @ORM\Column(type="integer")
*/
private $private;
/**
* @return int|null
*/
......@@ -106,12 +112,47 @@ class Group implements JsonSerializable
return false;
}
/**
* @return int
*/
public function getPrivate(): int
{
return $this->private;
}
public function isPrivate(): bool
{
return $this->private == 1;
}
/**
* Set user as admin
*/
public function setAdmin(User $user){
$this->admin = $user;
}
/**
* Set private information
*/
public function setPrivate($private){
$this->private = $private;
}
/**
* Set groupname
*/
public function setName($name){
$this->name = $name;
}
/**
* Set description
*/
public function setDescription($description){
$this->description = $description;
}
/**
* @return array
*/
......@@ -132,12 +173,14 @@ class Group implements JsonSerializable
* @param int|null $id
* @param string $name
* @param string $description
* @param int|null $private
*/
public function __construct(?int $id, string $name, string $description, User $admin)
public function __construct(?int $id, string $name, string $description, User $admin, int $private)
{
$this->id = $id;
$this->name = strtolower($name);
$this->description = ucfirst($description);
$this->private = $private;
$this->users = new \Doctrine\Common\Collections\ArrayCollection();
$this->admin = $admin;
}
......
......@@ -9,6 +9,9 @@
<div class="field">
<textarea name="description" id="description" placeholder="Description" value="{{description}}" required></textarea>
</div>
<div class="field">
<input type="checkbox" name="private" id="private" value="private"><label for="private"> Private group </label>
</div>
<input type="submit" class="ui submit button">
</form>
</div>
......
......@@ -4,6 +4,11 @@
<div class="content">
<img class="ui left floated circular image" src="/assets/img/default-avatar.png">
<a class="header">{{group.name}}</a>
<div class="meta">
<span class="date">
{% if group.isPrivate %} Private {% else %} Public {% endif %} group
</span>
</div>
<div class="description">
<p>{{group.description}}</p>
</div>
......
......@@ -3,13 +3,13 @@
<a href="/groups/create">Create a group</a>
<h1 class="display-4 text-center"> List groups </h1>
<div class="ui relaxed divided list">
{% for group in groups %}
<div class="item">
<img class="ui avatar image" src="/assets/img/default-avatar.png"></i>
<div class="content">
<a href="groups/{{group.id}}" class="header">@{{group.name}}</a>
</div>
{% for group in groups %}
<a href="groups/{{group.id}}" class="item">
<div class="ui horizontal label">
{% if group.isPrivate %} Private {% else %} Public {% endif %}
</div>
{% endfor %}
{{group.name}}
</a>
{% endfor %}
</div>
{% 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