person: add civility: entity, migration, form, twig, config

This commit is contained in:
nobohan 2021-11-08 11:41:45 +01:00
parent 1dbf29beea
commit fa05a6856a
9 changed files with 112 additions and 4 deletions

View File

@ -77,6 +77,7 @@ class Configuration implements ConfigurationInterface
->append($this->addFieldNode('nationality')) ->append($this->addFieldNode('nationality'))
->append($this->addFieldNode('country_of_birth')) ->append($this->addFieldNode('country_of_birth'))
->append($this->addFieldNode('marital_status')) ->append($this->addFieldNode('marital_status'))
->append($this->addFieldNode('civility'))
->append($this->addFieldNode('spoken_languages')) ->append($this->addFieldNode('spoken_languages'))
->append($this->addFieldNode('address')) ->append($this->addFieldNode('address'))
->append($this->addFieldNode('accompanying_period')) ->append($this->addFieldNode('accompanying_period'))

View File

@ -34,6 +34,7 @@ use Chill\PersonBundle\Entity\MaritalStatus;
use Chill\PersonBundle\Entity\Household\HouseholdMember; use Chill\PersonBundle\Entity\Household\HouseholdMember;
use Chill\MainBundle\Entity\HasCenterInterface; use Chill\MainBundle\Entity\HasCenterInterface;
use Chill\MainBundle\Entity\Address; use Chill\MainBundle\Entity\Address;
use Chill\MainBundle\Entity\Civility;
use Chill\MainBundle\Entity\Embeddable\CommentEmbeddable; use Chill\MainBundle\Entity\Embeddable\CommentEmbeddable;
use Chill\PersonBundle\Entity\Person\PersonCurrentAddress; use Chill\PersonBundle\Entity\Person\PersonCurrentAddress;
use DateTime; use DateTime;
@ -212,6 +213,15 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
*/ */
private $maritalStatus; private $maritalStatus;
/**
* The marital status of the person
* @var Civility
*
* @ORM\ManyToOne(targetEntity="Chill\MainBundle\Entity\Civility")
* @ORM\JoinColumn(nullable=true)
*/
private $civility;
/** /**
* The date of the last marital status change of the person * The date of the last marital status change of the person
* @var \DateTime * @var \DateTime
@ -962,6 +972,28 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
return $this->maritalStatus; return $this->maritalStatus;
} }
/**
* Set civility
*
* @param Civility $civility
* @return Person
*/
public function setCivility(Civility $civility = null)
{
$this->civility = $civility;
return $this;
}
/**
* Get civility
*
* @return Civility
*/
public function getCivility()
{
return $this->civility;
}
/** /**
* Set contactInfo * Set contactInfo
* *

View File

@ -22,6 +22,7 @@
namespace Chill\PersonBundle\Form; namespace Chill\PersonBundle\Form;
use Chill\CustomFieldsBundle\Form\Type\CustomFieldType; use Chill\CustomFieldsBundle\Form\Type\CustomFieldType;
use Chill\MainBundle\Entity\Civility;
use Chill\MainBundle\Form\Type\ChillCollectionType; use Chill\MainBundle\Form\Type\ChillCollectionType;
use Chill\MainBundle\Form\Type\ChillTextareaType; use Chill\MainBundle\Form\Type\ChillTextareaType;
use Chill\MainBundle\Form\Type\Select2CountryType; use Chill\MainBundle\Form\Type\Select2CountryType;
@ -35,6 +36,10 @@ use Chill\PersonBundle\Form\Type\Select2MaritalStatusType;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Chill\MainBundle\Form\Type\ChillDateType; use Chill\MainBundle\Form\Type\ChillDateType;
use Chill\MainBundle\Form\Type\CommentType; use Chill\MainBundle\Form\Type\CommentType;
use Chill\MainBundle\Templating\TranslatableStringHelper;
use Doctrine\ORM\QueryBuilder;
use Doctrine\ORM\EntityRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\CallbackTransformer; use Symfony\Component\Form\CallbackTransformer;
use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TelType; use Symfony\Component\Form\Extension\Core\Type\TelType;
@ -63,16 +68,20 @@ class PersonType extends AbstractType
*/ */
protected $configAltNamesHelper; protected $configAltNamesHelper;
protected TranslatableStringHelper $translatableStringHelper;
/** /**
* *
* @param string[] $personFieldsConfiguration configuration of visibility of some fields * @param string[] $personFieldsConfiguration configuration of visibility of some fields
*/ */
public function __construct( public function __construct(
array $personFieldsConfiguration, array $personFieldsConfiguration,
ConfigPersonAltNamesHelper $configAltNamesHelper ConfigPersonAltNamesHelper $configAltNamesHelper,
TranslatableStringHelper $translatableStringHelper
) { ) {
$this->config = $personFieldsConfiguration; $this->config = $personFieldsConfiguration;
$this->configAltNamesHelper = $configAltNamesHelper; $this->configAltNamesHelper = $configAltNamesHelper;
$this->translatableStringHelper = $translatableStringHelper;
} }
/** /**
@ -190,6 +199,23 @@ class PersonType extends AbstractType
)); ));
} }
if ($this->config['civility'] === 'visible'){
$builder
->add('civility', EntityType::class, [
'label' => 'Civility',
'class' => Civility::class,
'choice_label' => function (Civility $civility): string {
return $this->translatableStringHelper->localize($civility->getName());
},
'query_builder' => function (EntityRepository $er): QueryBuilder {
return $er->createQueryBuilder('c')
->where('c.active = true');
},
'placeholder' => 'choose civility',
'required' => false
]);
}
if ($this->config['marital_status'] === 'visible'){ if ($this->config['marital_status'] === 'visible'){
$builder $builder
->add('maritalStatus', Select2MaritalStatusType::class, array( ->add('maritalStatus', Select2MaritalStatusType::class, array(

View File

@ -15,4 +15,5 @@ chill_person:
phonenumber: hidden phonenumber: hidden
country_of_birth: hidden country_of_birth: hidden
marital_status: hidden marital_status: hidden
spoken_languages: hidden spoken_languages: hidden
civility: hidden

View File

@ -37,6 +37,9 @@
<fieldset> <fieldset>
<legend><h2>{{ 'General information'|trans }}</h2></legend> <legend><h2>{{ 'General information'|trans }}</h2></legend>
{%- if form.civility is defined -%}
{{ form_row(form.civility, {'label' : 'Civility'}) }}
{% endif %}
{{ form_row(form.firstName, {'label' : 'First name'}) }} {{ form_row(form.firstName, {'label' : 'First name'}) }}
{{ form_row(form.lastName, {'label' : 'Last name'}) }} {{ form_row(form.lastName, {'label' : 'Last name'}) }}
{% if form.altNames is defined %} {% if form.altNames is defined %}

View File

@ -51,6 +51,15 @@ This view should receive those arguments:
<figure class="person-details"> <figure class="person-details">
<h2 class="chill-red">{{ 'General information'|trans }}</h2> <h2 class="chill-red">{{ 'General information'|trans }}</h2>
<dl> <dl>
{% if person.civility is not null %}
<dt>{{ 'Civility'|trans }}&nbsp;:</dt>
<dd>
{% if person.civility.name|length > 0 %}
{{ person.civility.name|first }}
{% endif %}
</dd>
{% endif %}
<dt>{{ 'First name'|trans }}&nbsp;:</dt> <dt>{{ 'First name'|trans }}&nbsp;:</dt>
<dd>{{ person.firstName }}</dd> <dd>{{ person.firstName }}</dd>

View File

@ -7,8 +7,9 @@ services:
Chill\PersonBundle\Form\PersonType: Chill\PersonBundle\Form\PersonType:
arguments: arguments:
- '%chill_person.person_fields%' $personFieldsConfiguration: '%chill_person.person_fields%'
- '@Chill\PersonBundle\Config\ConfigPersonAltNamesHelper' $configAltNamesHelper: '@Chill\PersonBundle\Config\ConfigPersonAltNamesHelper'
$translatableStringHelper: '@Chill\MainBundle\Templating\TranslatableStringHelper'
tags: tags:
- { name: form.type, alias: '@chill.person.form.person_creation' } - { name: form.type, alias: '@chill.person.form.person_creation' }

View File

@ -0,0 +1,33 @@
<?php
declare(strict_types=1);
namespace Chill\Migrations\Person;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Add Civility to Person
*/
final class Version20211108100849 extends AbstractMigration
{
public function getDescription(): string
{
return 'Add Civility to Person';
}
public function up(Schema $schema): void
{
$this->addSql('ALTER TABLE chill_person_person ADD civility_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE chill_person_person ADD CONSTRAINT FK_BF210A1423D6A298 FOREIGN KEY (civility_id) REFERENCES chill_main_civility (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('CREATE INDEX IDX_BF210A1423D6A298 ON chill_person_person (civility_id)');
}
public function down(Schema $schema): void
{
$this->addSql('ALTER TABLE chill_person_person DROP CONSTRAINT FK_BF210A1423D6A298');
$this->addSql('DROP INDEX IDX_BF210A1423D6A298');
$this->addSql('ALTER TABLE chill_person_person DROP civility_id');
}
}

View File

@ -80,6 +80,8 @@ Married: Marié(e)
'Contact information': 'Informations de contact' 'Contact information': 'Informations de contact'
'Administrative information': Administratif 'Administrative information': Administratif
File number: Dossier n° File number: Dossier n°
Civility: Civilité
choose civility: --
# dédoublonnage # dédoublonnage
Old person: Doublon Old person: Doublon