Skip to content
Snippets Groups Projects
Commit 4659d362 authored by Camille Simiand's avatar Camille Simiand
Browse files

Add group all

parent f02e14d8
Branches
No related tags found
2 merge requests!55demo version for Clarisse workshop,!54tuleap-131-filter-my-capsules-by-groups
Pipeline #809 passed
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
namespace App\Builder; namespace App\Builder;
use App\Entity\Capsule; use App\Entity\Capsule;
use App\Entity\Group;
use App\Entity\User; use App\Entity\User;
use App\Helper\ContractHelper; use App\Helper\ContractHelper;
...@@ -90,6 +91,12 @@ class CapsuleBuilder ...@@ -90,6 +91,12 @@ class CapsuleBuilder
return $this; return $this;
} }
public function withGroup(Group $group): CapsuleBuilder
{
$this->capsule->addGroup($group);
return $this;
}
public function createCapsule(): Capsule public function createCapsule(): Capsule
{ {
$this->createEditionLink(); $this->createEditionLink();
......
...@@ -12,6 +12,8 @@ use App\Helper\StringHelper; ...@@ -12,6 +12,8 @@ use App\Helper\StringHelper;
use App\Repository\CapsuleRepository; use App\Repository\CapsuleRepository;
use App\Builder\CapsuleBuilder; use App\Builder\CapsuleBuilder;
use App\Form\CreateCapsuleFormType; use App\Form\CreateCapsuleFormType;
use App\Repository\GroupRepository;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Component\Pager\PaginatorInterface; use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Filesystem\Filesystem;
...@@ -26,13 +28,19 @@ class CapsuleController extends AbstractController ...@@ -26,13 +28,19 @@ class CapsuleController extends AbstractController
{ {
private CapsuleRepository $capsule_repository; private CapsuleRepository $capsule_repository;
private TranslatorInterface $translator; private TranslatorInterface $translator;
private GroupRepository $group_repository;
private EntityManagerInterface $entity_manager;
public function __construct( public function __construct(
CapsuleRepository $capsule_repository, CapsuleRepository $capsule_repository,
TranslatorInterface $translator TranslatorInterface $translator,
GroupRepository $group_repository,
EntityManagerInterface $entity_manager
) { ) {
$this->capsule_repository = $capsule_repository; $this->capsule_repository = $capsule_repository;
$this->translator = $translator; $this->translator = $translator;
$this->group_repository = $group_repository;
$this->entity_manager = $entity_manager;
} }
/** /**
...@@ -51,6 +59,11 @@ class CapsuleController extends AbstractController ...@@ -51,6 +59,11 @@ class CapsuleController extends AbstractController
$all_capsules = $current_user->getCapsules(); $all_capsules = $current_user->getCapsules();
$group_all = $this->getGroupAll();
$group_all->addCapsules($all_capsules->toArray());
$this->entity_manager->persist($group_all);
$this->entity_manager->flush();
$form = $this->createForm(FilterByGroupFormType::class, ['groups' => $current_user->getGroups()]); $form = $this->createForm(FilterByGroupFormType::class, ['groups' => $current_user->getGroups()]);
$form->handleRequest($request); $form->handleRequest($request);
...@@ -175,8 +188,7 @@ class CapsuleController extends AbstractController ...@@ -175,8 +188,7 @@ class CapsuleController extends AbstractController
return $this->redirectToRoute('app_logout'); return $this->redirectToRoute('app_logout');
} }
$entityManager = $this->getDoctrine()->getManager(); $capsule = $this->capsule_repository->findOneBy(['id' => $id]);
$capsule = $entityManager->getRepository(Capsule::class)->find($id);
if (! $capsule) { if (! $capsule) {
throw $this->createNotFoundException( throw $this->createNotFoundException(
...@@ -202,8 +214,8 @@ class CapsuleController extends AbstractController ...@@ -202,8 +214,8 @@ class CapsuleController extends AbstractController
if ($form->isSubmitted() && $form->isValid()) { if ($form->isSubmitted() && $form->isValid()) {
$current_user->removeCapsule($capsule); $current_user->removeCapsule($capsule);
$capsule->removeEditor($current_user); $capsule->removeEditor($current_user);
$entityManager->remove($capsule); $this->entity_manager->remove($capsule);
$entityManager->flush(); $this->entity_manager->flush();
$this->addFlash( $this->addFlash(
'success', 'success',
...@@ -240,8 +252,7 @@ class CapsuleController extends AbstractController ...@@ -240,8 +252,7 @@ class CapsuleController extends AbstractController
return $this->redirectToRoute('app_logout'); return $this->redirectToRoute('app_logout');
} }
$entityManager = $this->getDoctrine()->getManager(); $parent_capsule = $this->capsule_repository->findOneBy(['id' => $id]);
$parent_capsule = $entityManager->getRepository(Capsule::class)->find($id);
if (! $parent_capsule instanceof Capsule) { if (! $parent_capsule instanceof Capsule) {
throw new \Exception('The retrieved capsule is not an instance of Capsule.'); throw new \Exception('The retrieved capsule is not an instance of Capsule.');
...@@ -301,7 +312,6 @@ class CapsuleController extends AbstractController ...@@ -301,7 +312,6 @@ class CapsuleController extends AbstractController
$password = StringHelper::generateRandomHashedString(); $password = StringHelper::generateRandomHashedString();
$preview_link = Uuid::v4(); $preview_link = Uuid::v4();
$entityManager = $this->getDoctrine()->getManager();
$capsule_builder = new CapsuleBuilder(); $capsule_builder = new CapsuleBuilder();
$capsule = $capsule_builder $capsule = $capsule_builder
->withName($capsule_name) ->withName($capsule_name)
...@@ -310,11 +320,23 @@ class CapsuleController extends AbstractController ...@@ -310,11 +320,23 @@ class CapsuleController extends AbstractController
->withLinkPath($preview_link) ->withLinkPath($preview_link)
->withUpdateDate($new_date_time) ->withUpdateDate($new_date_time)
->withPassword($password) ->withPassword($password)
->withGroup($this->getGroupAll())
->createCapsule(); ->createCapsule();
$entityManager->persist($capsule); $this->entity_manager->persist($capsule);
$entityManager->flush(); $this->entity_manager->flush();
return $capsule; return $capsule;
} }
private function getGroupAll(): Group
{
$group_all = $this->group_repository->findOneBy(['name' => "All"]);
if (! $group_all instanceof Group) {
throw new \Exception("Group not found");
}
return $group_all;
}
} }
<?php
namespace App\DataFixtures;
use App\Entity\Group;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
class GroupFixtures extends Fixture
{
public function load(ObjectManager $manager): void
{
$group_all = new Group();
$group_all->setName("All");
$manager->persist($group_all);
$manager->flush();
}
/** @phpstan-ignore-next-line */
public function getDependencies(): array
{
return [
CapsuleFixtures::class,
];
}
}
...@@ -67,6 +67,19 @@ class Group ...@@ -67,6 +67,19 @@ class Group
{ {
if (!$this->capsules->contains($capsule)) { if (!$this->capsules->contains($capsule)) {
$this->capsules[] = $capsule; $this->capsules[] = $capsule;
$capsule->addGroup($this);
}
return $this;
}
/**
* @param array<Capsule> $capsules
*/
public function addCapsules(array $capsules): self
{
foreach ($capsules as $capsule) {
$this->addCapsule($capsule);
} }
return $this; return $this;
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
</h5> </h5>
<ul class="ps-0"> <ul class="ps-0">
{% for group in groups %} {% for group in groups %}
{% if group.getName() != 'All' %}
<li class="text-capitalize text-secondary list-unstyled p-1"> <li class="text-capitalize text-secondary list-unstyled p-1">
{{ group.getName() }} {{ group.getName() }}
- -
...@@ -45,6 +46,7 @@ ...@@ -45,6 +46,7 @@
{{ 'groups.remove.link'|trans }} {{ 'groups.remove.link'|trans }}
</a> </a>
</li> </li>
{% endif %}
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
......
...@@ -13,13 +13,14 @@ ...@@ -13,13 +13,14 @@
{{ 'capsule.title'|trans }} {{ 'capsule.title'|trans }}
</h2> </h2>
{% if app.request.query.get('page')|default(1) == 1 %}
<div class="mb-3 mb-sm-0"> <div class="mb-3 mb-sm-0">
{{ form_start(filterByGroupForm, {'attr': {novalidate: 'novalidate', 'class': 'd-flex flex-column flex-sm-row mb-0 align-items-center pt-3'}}) }} {{ form_start(filterByGroupForm, {'attr': {novalidate: 'novalidate', 'class': 'd-flex flex-column flex-sm-row mb-0 align-items-center pt-3'}}) }}
{{ form_row(filterByGroupForm.name, {'attr': {'class': ''}}) }} {{ form_row(filterByGroupForm.name, {'attr': {'class': ''}}) }}
{{ form_row(filterByGroupForm.filter, {'attr': {'class': 'ms-2'}}) }} {{ form_row(filterByGroupForm.filter, {'attr': {'class': 'ms-2'}}) }}
{{ form_end(filterByGroupForm) }} {{ form_end(filterByGroupForm) }}
</div> </div>
{% endif %}
<form class="d-flex mb-4 mb-lg-0"> <form class="d-flex mb-4 mb-lg-0">
<button id="btn-orange" formaction="/create"> <button id="btn-orange" formaction="/create">
......
...@@ -181,4 +181,4 @@ groups: ...@@ -181,4 +181,4 @@ groups:
title: Remove group title: Remove group
success: Group group_name removed successfully success: Group group_name removed successfully
filter: filter:
button: Filter by group button: Apply group filter
\ No newline at end of file \ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment