mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-12 13:24:25 +00:00
improves create a person with address
* validation: must have an address when 'create a form' is checked; * minor improvements
This commit is contained in:
parent
64432bb08a
commit
6abbf9bf21
@ -36,33 +36,35 @@
|
|||||||
|
|
||||||
{# Flash messages ! #}
|
{# Flash messages ! #}
|
||||||
{% if app.session.flashbag.keys()|length > 0 %}
|
{% if app.session.flashbag.keys()|length > 0 %}
|
||||||
<div class="col-8 mb-5 flash_message">
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-10 mb-5 flash_message">
|
||||||
|
|
||||||
|
{% for flashMessage in app.session.flashbag.get('success') %}
|
||||||
|
<div class="alert alert-success flash_message">
|
||||||
|
<span>{{ flashMessage|raw }}</span>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% for flashMessage in app.session.flashbag.get('error') %}
|
||||||
|
<div class="alert alert-danger flash_message">
|
||||||
|
<span>{{ flashMessage|raw }}</span>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% for flashMessage in app.session.flashbag.get('notice') %}
|
||||||
|
<div class="alert alert-warning flash_message">
|
||||||
|
<span>{{ flashMessage|raw }}</span>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
{% for flashMessage in app.session.flashbag.get('success') %}
|
|
||||||
<div class="alert alert-success flash_message">
|
|
||||||
<span>{{ flashMessage|raw }}</span>
|
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
</div>
|
||||||
|
|
||||||
{% for flashMessage in app.session.flashbag.get('error') %}
|
|
||||||
<div class="alert alert-danger flash_message">
|
|
||||||
<span>{{ flashMessage|raw }}</span>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% for flashMessage in app.session.flashbag.get('notice') %}
|
|
||||||
<div class="alert alert-warning flash_message">
|
|
||||||
<span>{{ flashMessage|raw }}</span>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="col-8 main_search">
|
<div class="col-8 main_search">
|
||||||
<h2>{{ 'Search'|trans }}</h2>
|
<h2>{{ 'Search'|trans }}</h2>
|
||||||
|
|
||||||
<form action="{{ path('chill_main_search') }}" method="get">
|
<form action="{{ path('chill_main_search') }}" method="get">
|
||||||
<input class="form-control form-control-lg" name="q" type="search" placeholder="{{ 'Search persons, ...'|trans }}" />
|
<input class="form-control form-control-lg" name="q" type="search" placeholder="{{ 'Search persons, ...'|trans }}" />
|
||||||
<center>
|
<center>
|
||||||
@ -75,11 +77,11 @@
|
|||||||
</center>
|
</center>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{# DISABLED {{ chill_widget('homepage', {} ) }} #}
|
{# DISABLED {{ chill_widget('homepage', {} ) }} #}
|
||||||
|
|
||||||
{% include '@ChillMain/Homepage/index.html.twig' %}
|
{% include '@ChillMain/Homepage/index.html.twig' %}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -252,7 +252,7 @@ final class PersonController extends AbstractController
|
|||||||
$this->lastPostDataReset();
|
$this->lastPostDataReset();
|
||||||
|
|
||||||
$address = $form->get('address')->getData();
|
$address = $form->get('address')->getData();
|
||||||
$addressForm = $form->get('addressForm')->getData();
|
$addressForm = (bool) $form->get('addressForm')->getData();
|
||||||
|
|
||||||
if (null !== $address && $addressForm) {
|
if (null !== $address && $addressForm) {
|
||||||
$household = new Household();
|
$household = new Household();
|
||||||
@ -271,7 +271,7 @@ final class PersonController extends AbstractController
|
|||||||
if ($form->get('createHousehold')->isClicked()) {
|
if ($form->get('createHousehold')->isClicked()) {
|
||||||
return $this->redirectToRoute('chill_person_household_members_editor', [
|
return $this->redirectToRoute('chill_person_household_members_editor', [
|
||||||
'persons' => [$person->getId()],
|
'persons' => [$person->getId()],
|
||||||
'household' => $household->getId()
|
'household' => $household->getId(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ class HouseholdMember
|
|||||||
/**
|
/**
|
||||||
* @ORM\Column(type="date_immutable", nullable=true, options={"default": null})
|
* @ORM\Column(type="date_immutable", nullable=true, options={"default": null})
|
||||||
* @Serializer\Groups({"read", "docgen:read"})
|
* @Serializer\Groups({"read", "docgen:read"})
|
||||||
* @Assert\GreaterThan(
|
* @Assert\GreaterThanOrEqual(
|
||||||
* propertyPath="startDate",
|
* propertyPath="startDate",
|
||||||
* message="household_membership.The end date must be after start date",
|
* message="household_membership.The end date must be after start date",
|
||||||
* groups={"household_memberships"}
|
* groups={"household_memberships"}
|
||||||
@ -202,7 +202,7 @@ class HouseholdMember
|
|||||||
|
|
||||||
public function setPosition(?Position $position): self
|
public function setPosition(?Position $position): self
|
||||||
{
|
{
|
||||||
if ($this->position instanceof Position) {
|
if ($this->position instanceof Position && $this->position !== $position) {
|
||||||
throw new LogicException('The position is already set. You cannot change ' .
|
throw new LogicException('The position is already set. You cannot change ' .
|
||||||
'a position of a membership');
|
'a position of a membership');
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Chill\PersonBundle\Form;
|
namespace Chill\PersonBundle\Form;
|
||||||
|
|
||||||
|
use Chill\MainBundle\Entity\Address;
|
||||||
use Chill\MainBundle\Form\Event\CustomizeFormEvent;
|
use Chill\MainBundle\Form\Event\CustomizeFormEvent;
|
||||||
use Chill\MainBundle\Form\Type\ChillDateType;
|
use Chill\MainBundle\Form\Type\ChillDateType;
|
||||||
use Chill\MainBundle\Form\Type\ChillPhoneNumberType;
|
use Chill\MainBundle\Form\Type\ChillPhoneNumberType;
|
||||||
@ -30,6 +31,8 @@ use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
|||||||
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
use Symfony\Component\Validator\Constraints\Callback;
|
||||||
|
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||||
|
|
||||||
final class CreationPersonType extends AbstractType
|
final class CreationPersonType extends AbstractType
|
||||||
{
|
{
|
||||||
@ -84,10 +87,12 @@ final class CreationPersonType extends AbstractType
|
|||||||
'label' => 'Create a household and add an address',
|
'label' => 'Create a household and add an address',
|
||||||
'required' => false,
|
'required' => false,
|
||||||
'mapped' => false,
|
'mapped' => false,
|
||||||
|
'help' => 'A new household will be created. The person will be member of this household.',
|
||||||
])
|
])
|
||||||
->add('address', PickAddressType::class, [
|
->add('address', PickAddressType::class, [
|
||||||
'required' => false,
|
'required' => false,
|
||||||
'mapped' => false,
|
'mapped' => false,
|
||||||
|
'label' => false,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if ($this->askCenters) {
|
if ($this->askCenters) {
|
||||||
@ -114,6 +119,9 @@ final class CreationPersonType extends AbstractType
|
|||||||
{
|
{
|
||||||
$resolver->setDefaults([
|
$resolver->setDefaults([
|
||||||
'data_class' => Person::class,
|
'data_class' => Person::class,
|
||||||
|
'constraints' => [
|
||||||
|
new Callback([$this, 'validateCheckedAddress']),
|
||||||
|
],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,4 +132,18 @@ final class CreationPersonType extends AbstractType
|
|||||||
{
|
{
|
||||||
return self::NAME;
|
return self::NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function validateCheckedAddress($data, ExecutionContextInterface $context, $payload): void
|
||||||
|
{
|
||||||
|
/** @var bool $addressFrom */
|
||||||
|
$addressFrom = $context->getObject()->get('addressForm')->getData();
|
||||||
|
/** @var ?Address $address */
|
||||||
|
$address = $context->getObject()->get('address')->getData();
|
||||||
|
|
||||||
|
if ($addressFrom && null === $address) {
|
||||||
|
$context->buildViolation('person_creation.If you want to create an household, an address is required')
|
||||||
|
->atPath('addressForm')
|
||||||
|
->addViolation();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -111,7 +111,6 @@
|
|||||||
{{ form_row(form.addressForm) }}
|
{{ form_row(form.addressForm) }}
|
||||||
</div>
|
</div>
|
||||||
<div id=address>
|
<div id=address>
|
||||||
<p>{{ 'A new household will be created. The person will be member of this household.'|trans }}</p>
|
|
||||||
{{ form_row(form.address) }}
|
{{ form_row(form.address) }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -148,4 +147,4 @@
|
|||||||
|
|
||||||
{% block css %}
|
{% block css %}
|
||||||
{{ encore_entry_link_tags('mod_input_address') }}
|
{{ encore_entry_link_tags('mod_input_address') }}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -65,4 +65,7 @@ The person where the course is located must be associated to the course. Change
|
|||||||
|
|
||||||
#relationship
|
#relationship
|
||||||
relationship:
|
relationship:
|
||||||
duplicate: Une relation de filiation existe déjà entre ces 2 personnes
|
duplicate: Une relation de filiation existe déjà entre ces 2 personnes
|
||||||
|
|
||||||
|
person_creation:
|
||||||
|
If you want to create an household, an address is required: Pour la création d'un ménage, une adresse est requise
|
||||||
|
Loading…
x
Reference in New Issue
Block a user