diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b0e027b2..c711723d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to * renommer "dossier numéro" en "parcours numéro" dans les résultats de recherche * renomme date de début en date d'ouverture dans le formulaire parcours +* [household]: household composition double edit button replaced by a delete action (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/426) ## Test releases diff --git a/src/Bundle/ChillPersonBundle/Controller/HouseholdCompositionController.php b/src/Bundle/ChillPersonBundle/Controller/HouseholdCompositionController.php index c74113a05..22e92eb02 100644 --- a/src/Bundle/ChillPersonBundle/Controller/HouseholdCompositionController.php +++ b/src/Bundle/ChillPersonBundle/Controller/HouseholdCompositionController.php @@ -16,9 +16,12 @@ use Chill\PersonBundle\Entity\Household\Household; use Chill\PersonBundle\Entity\Household\HouseholdComposition; use Chill\PersonBundle\Form\HouseholdCompositionType; use Chill\PersonBundle\Repository\Household\HouseholdCompositionRepository; +use Chill\PersonBundle\Repository\Household\HouseholdRepository; use Chill\PersonBundle\Security\Authorization\HouseholdVoter; use DateTimeImmutable; use Doctrine\ORM\EntityManagerInterface; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\FormFactoryInterface; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; @@ -31,7 +34,7 @@ use Symfony\Component\Security\Core\Security; use Symfony\Component\Templating\EngineInterface; use Symfony\Contracts\Translation\TranslatorInterface; -class HouseholdCompositionController +class HouseholdCompositionController extends AbstractController { private EngineInterface $engine; @@ -41,6 +44,8 @@ class HouseholdCompositionController private HouseholdCompositionRepository $householdCompositionRepository; + private HouseholdRepository $householdRepository; + private PaginatorFactory $paginatorFactory; private Security $security; @@ -52,6 +57,7 @@ class HouseholdCompositionController public function __construct( Security $security, HouseholdCompositionRepository $householdCompositionRepository, + HouseholdRepository $householdRepository, PaginatorFactory $paginatorFactory, FormFactoryInterface $formFactory, EntityManagerInterface $entityManager, @@ -67,6 +73,59 @@ class HouseholdCompositionController $this->translator = $translator; $this->engine = $engine; $this->urlGenerator = $urlGenerator; + $this->householdRepository = $householdRepository; + } + + /** + * @Route("/{_locale}/person/household/{household_id}/composition/{composition_id}/delete", name="chill_person_household_composition_delete") + * + * @param mixed $household_id + * @param mixed $composition_id + */ + public function deleteAction(Request $request, $household_id, $composition_id): Response + { + $composition = $this->householdCompositionRepository->find($composition_id); + $household = $this->householdRepository->find($household_id); + + $this->denyAccessUnlessGranted(HouseholdVoter::EDIT, $household); + + if (null === $composition) { + throw $this->createNotFoundException('Unable to find composition entity.'); + } + + $form = $this->createFormBuilder() + ->setAction($this->generateUrl('chill_person_household_composition_delete', [ + 'composition_id' => $composition_id, + 'household_id' => $household_id, + ])) + ->setMethod('DELETE') + ->add('submit', SubmitType::class, ['label' => 'Delete']) + ->getForm(); + + if ($request->getMethod() === Request::METHOD_DELETE) { + $form->handleRequest($request); + + if ($form->isValid()) { + $this->entityManager->remove($composition); + $this->entityManager->flush(); + + $this->addFlash('success', $this->translator + ->trans('The composition has been successfully removed.')); + + return $this->redirectToRoute('chill_person_household_composition_index', [ + 'id' => $household_id, + ]); + } + } + + return $this->render( + 'ChillPersonBundle:HouseholdComposition:delete.html.twig', + [ + 'household' => $household, + 'composition' => $composition, + 'form' => $form->createView(), + ] + ); } /** diff --git a/src/Bundle/ChillPersonBundle/Resources/views/HouseholdComposition/delete.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/HouseholdComposition/delete.html.twig new file mode 100644 index 000000000..7f4aeba0c --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Resources/views/HouseholdComposition/delete.html.twig @@ -0,0 +1,38 @@ +{% extends '@ChillPerson/Household/layout.html.twig' %} + +{% set activeRouteKey = 'chill_person_household_composition_index' %} + +{% block title 'Remove household composition'|trans %} + +{% block display_content %} +

{{ 'Concerns household n°%id%'|trans({ '%id%' : household.id } ) }}

+
+
+

{{ 'Composition'|trans }}:

+
+
+ {% for m in household.members %} + + {% include '@ChillMain/OnTheFly/_insert_vue_onthefly.html.twig' with { + action: 'show', displayBadge: true, + targetEntity: { name: 'person', id: m.person.id }, + buttonText: m.person|chill_entity_render_string, + isDead: m.person.deathdate is not null + } %} + + {% endfor %} +
+
+{% endblock %} + +{% block content %} +{{ include('@ChillMain/Util/confirmation_template.html.twig', + { + 'title' : 'Remove household composition'|trans, + 'confirm_question' : 'Are you sure you want to remove this composition?'|trans, + 'display_content' : block('display_content'), + 'cancel_route' : 'chill_person_household_composition_index', + 'cancel_parameters' : { 'composition_id' : composition.id, 'id' : household.id }, + 'form' : form + } ) }} +{% endblock %} \ No newline at end of file diff --git a/src/Bundle/ChillPersonBundle/Resources/views/HouseholdComposition/index.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/HouseholdComposition/index.html.twig index 594863a64..7ff72b2cd 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/HouseholdComposition/index.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/HouseholdComposition/index.html.twig @@ -22,7 +22,7 @@

{{ c.householdCompositionType.label|localize_translatable_string }}

{{ 'household_composition.numberOfChildren'|trans }}: {{ c.numberOfChildren }}

-
{{ 'household_composition.Since'|trans({'startDate': c.startDate}) }}
+
{{ 'household_composition.Since'|trans({'startDate': c.startDate}) }}
@@ -45,7 +45,10 @@
  • - +
  • @@ -57,8 +60,8 @@ {{ form_widget(form) }}