From 3a3eb682882e3d3556366c63bf05605b5f0320c3 Mon Sep 17 00:00:00 2001 From: nobohan Date: Fri, 1 Apr 2022 16:17:04 +0200 Subject: [PATCH 1/8] household address: add a form for editing the validFrom date --- .../Controller/HouseholdController.php | 41 +++++++++++++++++++ .../address_valid_from_edit.html.twig | 34 +++++++++++++++ .../views/Household/addresses.html.twig | 7 +++- .../translations/messages.fr.yml | 3 ++ 4 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 src/Bundle/ChillPersonBundle/Resources/views/Household/address_valid_from_edit.html.twig diff --git a/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php b/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php index 0a8b7eea1..c0f0baab2 100644 --- a/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php +++ b/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php @@ -12,6 +12,7 @@ declare(strict_types=1); namespace Chill\PersonBundle\Controller; use Chill\MainBundle\Entity\Address; +use Chill\MainBundle\Form\Type\AddressType; use Chill\PersonBundle\Entity\Household\Household; use Chill\PersonBundle\Form\HouseholdType; use Chill\PersonBundle\Repository\Household\PositionRepository; @@ -136,6 +137,46 @@ class HouseholdController extends AbstractController ); } + /** + * @Route( + * "/{household_id}/address/edit_valid_from", + * name="chill_person_household_address_valid_from_edit", + * methods={"GET", "HEAD", "POST"} + * ) + * @ParamConverter("household", options={"id": "household_id"}) + */ + public function addressValidFromEdit(Request $request, Household $household) + { + // TODO ACL + + $address_id = $request->query->get('address_id'); + $address = $this->getDoctrine()->getManager() + ->getRepository(Address::class) + ->find($address_id); + + $form = $this->createForm(AddressType::class, $address, []); + + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $this->getDoctrine()->getManager()->persist($address); + $this->getDoctrine()->getManager()->flush(); + + return $this->redirectToRoute('chill_person_household_addresses', [ + 'household_id' => $household->getId() + ]); + } + + return $this->render( + '@ChillPerson/Household/address_valid_from_edit.html.twig', + [ + 'household' => $household, + 'address' => $address, + 'form' => $form->createView() + ] + ); + } + /** * @Route( * "/{household_id}/addresses", diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Household/address_valid_from_edit.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Household/address_valid_from_edit.html.twig new file mode 100644 index 000000000..a58e29de0 --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Resources/views/Household/address_valid_from_edit.html.twig @@ -0,0 +1,34 @@ +{% extends '@ChillPerson/Household/layout.html.twig' %} + +{% block title 'Edit household address valid from'|trans %} + +{% block content %} +

{{ block('title') }}

+
+ {{ address|chill_entity_render_box}} +
+ + {{ form_start(form) }} + {{ form_errors(form) }} + +
+ {{ form_row(form.validFrom) }} +
+ + + + + {{ form_end(form) }} + +{% endblock %} diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Household/addresses.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Household/addresses.html.twig index 2802c62a7..d61e0b63e 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/Household/addresses.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/Household/addresses.html.twig @@ -64,9 +64,12 @@ }) }} diff --git a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml index ae7687324..5395ba983 100644 --- a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml @@ -498,6 +498,9 @@ Concerns household n°%id%: Concerne le ménage n°%id% Composition: Composition Budget: Budget The composition has been successfully removed.: La composition a été supprimée. +edit address valid from: Changer la date du déménagement +Edit household address valid from: Changer la date du déménagement + # accompanying course work Accompanying Course Actions: Actions d'accompagnements From ddce7603ad72d3e7742a4619375586d3d7db92b0 Mon Sep 17 00:00:00 2001 From: nobohan Date: Sat, 2 Apr 2022 10:53:54 +0200 Subject: [PATCH 2/8] household address: add condition for minimum value for vaildFrom date --- .../Controller/HouseholdController.php | 18 ++++++++++++++++-- .../address_valid_from_edit.html.twig | 7 ++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php b/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php index c0f0baab2..311d2eaad 100644 --- a/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php +++ b/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php @@ -158,10 +158,23 @@ class HouseholdController extends AbstractController $form->handleRequest($request); + $addresses = $household->getAddressesOrdered(); + + foreach($addresses as $a) { + if ($a->getId() === $address->getId()){ + $currentValueIndex = array_search($a, $addresses); + } + } + if (count($addresses) > 1 && $currentValueIndex > 0) { + $previousAddress = $addresses[$currentValueIndex - 1]; + $minValidFrom = $previousAddress->getValidTo(); + } else { + $minValidFrom = null; + } + if ($form->isSubmitted() && $form->isValid()) { $this->getDoctrine()->getManager()->persist($address); $this->getDoctrine()->getManager()->flush(); - return $this->redirectToRoute('chill_person_household_addresses', [ 'household_id' => $household->getId() ]); @@ -172,7 +185,8 @@ class HouseholdController extends AbstractController [ 'household' => $household, 'address' => $address, - 'form' => $form->createView() + 'form' => $form->createView(), + 'minValidFrom' => $minValidFrom ] ); } diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Household/address_valid_from_edit.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Household/address_valid_from_edit.html.twig index a58e29de0..78c7b0fe1 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/Household/address_valid_from_edit.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/Household/address_valid_from_edit.html.twig @@ -11,8 +11,13 @@ {{ form_start(form) }} {{ form_errors(form) }} +
- {{ form_row(form.validFrom) }} + {% if minValidFrom is not null %} + {{ form_row(form.validFrom, {'attr': {'min': minValidFrom|date('Y-m-d') }}) }} + {% else %} + {{ form_row(form.validFrom) }} + {% endif %}