mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-12 13:24:25 +00:00
Merge branch 'issue541_change_moving_date' into 'master'
household address: add a form for editing the validFrom date See merge request Chill-Projet/chill-bundles!402
This commit is contained in:
commit
92a169be1e
@ -11,6 +11,7 @@ and this project adheres to
|
|||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
<!-- write down unreleased development here -->
|
<!-- write down unreleased development here -->
|
||||||
|
* [person] household address: add a form for editing the validFrom date (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/541)
|
||||||
* [person] householdmemberseditor: fix composition type bug in select form (vuejs) (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/543)
|
* [person] householdmemberseditor: fix composition type bug in select form (vuejs) (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/543)
|
||||||
* [docgen] add more persons choices in docgen for course: amongst requestor (if person), resources of course (if person), and PersonResource (if person);
|
* [docgen] add more persons choices in docgen for course: amongst requestor (if person), resources of course (if person), and PersonResource (if person);
|
||||||
* [docgen] add a new context with a list of activities in course
|
* [docgen] add a new context with a list of activities in course
|
||||||
|
@ -480,8 +480,11 @@ class Address
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setStreet(string $street): self
|
public function setStreet(?string $street): self
|
||||||
{
|
{
|
||||||
|
if (null === $street) {
|
||||||
|
$street = '';
|
||||||
|
}
|
||||||
$this->street = $street;
|
$this->street = $street;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
@ -515,8 +518,11 @@ class Address
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setStreetNumber(string $streetNumber): self
|
public function setStreetNumber(?string $streetNumber): self
|
||||||
{
|
{
|
||||||
|
if (null === $streetNumber) {
|
||||||
|
$streetNumber = '';
|
||||||
|
}
|
||||||
$this->streetNumber = $streetNumber;
|
$this->streetNumber = $streetNumber;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
|
37
src/Bundle/ChillMainBundle/Form/Type/AddressDateType.php
Normal file
37
src/Bundle/ChillMainBundle/Form/Type/AddressDateType.php
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Chill is a software for social workers
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Chill\MainBundle\Form\Type;
|
||||||
|
|
||||||
|
use Chill\MainBundle\Entity\Address;
|
||||||
|
use Symfony\Component\Form\AbstractType;
|
||||||
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
|
||||||
|
class AddressDateType extends AbstractType
|
||||||
|
{
|
||||||
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
|
{
|
||||||
|
$builder
|
||||||
|
->add(
|
||||||
|
'validFrom',
|
||||||
|
ChillDateType::class,
|
||||||
|
[
|
||||||
|
'required' => true,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
|
{
|
||||||
|
$resolver->setDefault('data_class', Address::class);
|
||||||
|
}
|
||||||
|
}
|
@ -12,13 +12,16 @@ declare(strict_types=1);
|
|||||||
namespace Chill\PersonBundle\Controller;
|
namespace Chill\PersonBundle\Controller;
|
||||||
|
|
||||||
use Chill\MainBundle\Entity\Address;
|
use Chill\MainBundle\Entity\Address;
|
||||||
|
use Chill\MainBundle\Form\Type\AddressDateType;
|
||||||
use Chill\PersonBundle\Entity\Household\Household;
|
use Chill\PersonBundle\Entity\Household\Household;
|
||||||
use Chill\PersonBundle\Form\HouseholdType;
|
use Chill\PersonBundle\Form\HouseholdType;
|
||||||
use Chill\PersonBundle\Repository\Household\PositionRepository;
|
use Chill\PersonBundle\Repository\Household\PositionRepository;
|
||||||
use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter;
|
use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter;
|
||||||
|
use Chill\PersonBundle\Security\Authorization\HouseholdVoter;
|
||||||
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\Form\FormInterface;
|
use Symfony\Component\Form\FormInterface;
|
||||||
|
use Symfony\Component\HttpFoundation\Exception\BadRequestException;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\Routing\Annotation\Route;
|
use Symfony\Component\Routing\Annotation\Route;
|
||||||
use Symfony\Component\Security\Core\Security;
|
use Symfony\Component\Security\Core\Security;
|
||||||
@ -186,6 +189,62 @@ 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)
|
||||||
|
{
|
||||||
|
$this->denyAccessUnlessGranted(HouseholdVoter::EDIT, $household);
|
||||||
|
|
||||||
|
if (!$request->query->has('address_id')) {
|
||||||
|
throw new BadRequestException('parameter address_id is missing');
|
||||||
|
}
|
||||||
|
|
||||||
|
$address_id = $request->query->getInt('address_id');
|
||||||
|
|
||||||
|
// loop over adresses of the household, to be sure that the household is associated
|
||||||
|
// to the edited address
|
||||||
|
$address = null;
|
||||||
|
|
||||||
|
foreach ($household->getAddresses() as $householdAddress) {
|
||||||
|
if ($householdAddress->getId() === $address_id) {
|
||||||
|
$address = $householdAddress;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === $address) {
|
||||||
|
throw new BadRequestException('The edited address does not belongs to the household');
|
||||||
|
}
|
||||||
|
|
||||||
|
$form = $this->createForm(AddressDateType::class, $address, []);
|
||||||
|
|
||||||
|
$form->handleRequest($request);
|
||||||
|
|
||||||
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
|
$household->makeAddressConsistent();
|
||||||
|
|
||||||
|
$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(
|
* @Route(
|
||||||
* "/{household_id}/members/metadata/edit",
|
* "/{household_id}/members/metadata/edit",
|
||||||
|
@ -151,6 +151,9 @@ class Household
|
|||||||
return $this->addresses;
|
return $this->addresses;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array|Address[]
|
||||||
|
*/
|
||||||
public function getAddressesOrdered(): array
|
public function getAddressesOrdered(): array
|
||||||
{
|
{
|
||||||
$addresses = $this->getAddresses()->toArray();
|
$addresses = $this->getAddresses()->toArray();
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
{% extends '@ChillPerson/Household/layout.html.twig' %}
|
||||||
|
|
||||||
|
{% block title 'Edit household address valid from'|trans %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>{{ block('title') }}</h1>
|
||||||
|
<div>
|
||||||
|
{{ address|chill_entity_render_box}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{ form_start(form) }}
|
||||||
|
{{ form_errors(form) }}
|
||||||
|
|
||||||
|
|
||||||
|
<div>
|
||||||
|
{{ form_row(form.validFrom) }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ul class="record_actions sticky-form-buttons">
|
||||||
|
<li class="cancel">
|
||||||
|
<a href="{{ path('chill_person_household_addresses', { 'household_id': household.id } ) }}" class="btn btn-cancel">
|
||||||
|
{{ 'Cancel'|trans }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<button class="btn btn-update" type="submit">{{ 'Save'|trans }}</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
{{ form_end(form) }}
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -62,13 +62,17 @@
|
|||||||
'extended_infos': true,
|
'extended_infos': true,
|
||||||
'has_no_address': true
|
'has_no_address': true
|
||||||
}) }}
|
}) }}
|
||||||
<ul class="record_actions">
|
{% if is_granted('CHILL_PERSON_HOUSEHOLD_EDIT', household) %}
|
||||||
<li>
|
<ul class="record_actions">
|
||||||
<a href="{{ path('chill_person_household_address_edit', { 'household_id': household.id, 'address_id' : address.id } ) }}"
|
<li>
|
||||||
class="btn btn-edit"></a>
|
<a href="{{ path('chill_person_household_address_valid_from_edit', { 'household_id': household.id, 'address_id' : address.id } ) }}"
|
||||||
|
class="btn btn-edit">{{ "edit address valid from"|trans }}
|
||||||
</li>
|
</a>
|
||||||
</ul>
|
<a href="{{ path('chill_person_household_address_edit', { 'household_id': household.id, 'address_id' : address.id } ) }}"
|
||||||
|
class="btn btn-edit"></a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="date">
|
<div class="date">
|
||||||
|
@ -498,6 +498,9 @@ Concerns household n°%id%: Concerne le ménage n°%id%
|
|||||||
Composition: Composition
|
Composition: Composition
|
||||||
Budget: Budget
|
Budget: Budget
|
||||||
The composition has been successfully removed.: La composition a été supprimée.
|
The composition has been successfully removed.: La composition a été supprimée.
|
||||||
|
edit address valid from: Modifier la date du déménagement
|
||||||
|
Edit household address valid from: Modifier la date du déménagement
|
||||||
|
|
||||||
|
|
||||||
# accompanying course work
|
# accompanying course work
|
||||||
Accompanying Course Actions: Actions d'accompagnements
|
Accompanying Course Actions: Actions d'accompagnements
|
||||||
|
Loading…
x
Reference in New Issue
Block a user