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

Add group all

parent f02e14d8
Branches
Tags
2 merge requests!55demo version for Clarisse workshop,!54tuleap-131-filter-my-capsules-by-groups
Pipeline #809 passed
......@@ -3,6 +3,7 @@
namespace App\Builder;
use App\Entity\Capsule;
use App\Entity\Group;
use App\Entity\User;
use App\Helper\ContractHelper;
......@@ -90,6 +91,12 @@ class CapsuleBuilder
return $this;
}
public function withGroup(Group $group): CapsuleBuilder
{
$this->capsule->addGroup($group);
return $this;
}
public function createCapsule(): Capsule
{
$this->createEditionLink();
......
......@@ -12,6 +12,8 @@ use App\Helper\StringHelper;
use App\Repository\CapsuleRepository;
use App\Builder\CapsuleBuilder;
use App\Form\CreateCapsuleFormType;
use App\Repository\GroupRepository;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Filesystem\Filesystem;
......@@ -26,13 +28,19 @@ class CapsuleController extends AbstractController
{
private CapsuleRepository $capsule_repository;
private TranslatorInterface $translator;
private GroupRepository $group_repository;
private EntityManagerInterface $entity_manager;
public function __construct(
CapsuleRepository $capsule_repository,
TranslatorInterface $translator
TranslatorInterface $translator,
GroupRepository $group_repository,
EntityManagerInterface $entity_manager
) {
$this->capsule_repository = $capsule_repository;
$this->translator = $translator;
$this->group_repository = $group_repository;
$this->entity_manager = $entity_manager;
}
/**
......@@ -51,6 +59,11 @@ class CapsuleController extends AbstractController
$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->handleRequest($request);
......@@ -175,8 +188,7 @@ class CapsuleController extends AbstractController
return $this->redirectToRoute('app_logout');
}
$entityManager = $this->getDoctrine()->getManager();
$capsule = $entityManager->getRepository(Capsule::class)->find($id);
$capsule = $this->capsule_repository->findOneBy(['id' => $id]);
if (! $capsule) {
throw $this->createNotFoundException(
......@@ -202,8 +214,8 @@ class CapsuleController extends AbstractController
if ($form->isSubmitted() && $form->isValid()) {
$current_user->removeCapsule($capsule);
$capsule->removeEditor($current_user);
$entityManager->remove($capsule);
$entityManager->flush();
$this->entity_manager->remove($capsule);
$this->entity_manager->flush();
$this->addFlash(
'success',
......@@ -240,8 +252,7 @@ class CapsuleController extends AbstractController
return $this->redirectToRoute('app_logout');
}
$entityManager = $this->getDoctrine()->getManager();
$parent_capsule = $entityManager->getRepository(Capsule::class)->find($id);
$parent_capsule = $this->capsule_repository->findOneBy(['id' => $id]);
if (! $parent_capsule instanceof Capsule) {
throw new \Exception('The retrieved capsule is not an instance of Capsule.');
......@@ -301,7 +312,6 @@ class CapsuleController extends AbstractController
$password = StringHelper::generateRandomHashedString();
$preview_link = Uuid::v4();
$entityManager = $this->getDoctrine()->getManager();
$capsule_builder = new CapsuleBuilder();
$capsule = $capsule_builder
->withName($capsule_name)
......@@ -310,11 +320,23 @@ class CapsuleController extends AbstractController
->withLinkPath($preview_link)
->withUpdateDate($new_date_time)
->withPassword($password)
->withGroup($this->getGroupAll())
->createCapsule();
$entityManager->persist($capsule);
$entityManager->flush();
$this->entity_manager->persist($capsule);
$this->entity_manager->flush();
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
{
if (!$this->capsules->contains($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;
......
......@@ -38,6 +38,7 @@
</h5>
<ul class="ps-0">
{% for group in groups %}
{% if group.getName() != 'All' %}
<li class="text-capitalize text-secondary list-unstyled p-1">
{{ group.getName() }}
-
......@@ -45,6 +46,7 @@
{{ 'groups.remove.link'|trans }}
</a>
</li>
{% endif %}
{% endfor %}
</ul>
</div>
......
......@@ -13,13 +13,14 @@
{{ 'capsule.title'|trans }}
</h2>
{% if app.request.query.get('page')|default(1) == 1 %}
<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_row(filterByGroupForm.name, {'attr': {'class': ''}}) }}
{{ form_row(filterByGroupForm.filter, {'attr': {'class': 'ms-2'}}) }}
{{ form_end(filterByGroupForm) }}
</div>
{% endif %}
<form class="d-flex mb-4 mb-lg-0">
<button id="btn-orange" formaction="/create">
......
......@@ -181,4 +181,4 @@ groups:
title: Remove group
success: Group group_name removed successfully
filter:
button: Filter by group
\ No newline at end of file
button: Apply group filter
\ 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