diff --git a/src/Bundle/ChillMainBundle/Form/Type/CommentType.php b/src/Bundle/ChillMainBundle/Form/Type/CommentType.php index a6e664769..2e9a19717 100644 --- a/src/Bundle/ChillMainBundle/Form/Type/CommentType.php +++ b/src/Bundle/ChillMainBundle/Form/Type/CommentType.php @@ -51,7 +51,7 @@ class CommentType extends AbstractType $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) { $data = $event->getForm()->getData(); - $comment = $event->getData(); + $comment = $event->getData() ?? ['comment' => '']; if ($data->getComment() !== $comment['comment']) { $data->setDate(new \DateTime()); diff --git a/src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php b/src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php index 3ebe3ceb1..927612d5f 100644 --- a/src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php +++ b/src/Bundle/ChillPersonBundle/DependencyInjection/Configuration.php @@ -78,6 +78,7 @@ class Configuration implements ConfigurationInterface ->append($this->addFieldNode('address')) ->append($this->addFieldNode('accompanying_period')) ->append($this->addFieldNode('memo')) + ->append($this->addFieldNode('number_of_children')) ->arrayNode('alt_names') ->defaultValue([]) ->arrayPrototype() @@ -130,7 +131,7 @@ class Configuration implements ConfigurationInterface { $tree = new TreeBuilder($key,'enum'); $node = $tree->getRootNode($key); - + switch($key) { case 'accompanying_period': $info = "If the accompanying periods are shown"; diff --git a/src/Bundle/ChillPersonBundle/Entity/Person.php b/src/Bundle/ChillPersonBundle/Entity/Person.php index 7efbb3eca..3cd0eacd5 100644 --- a/src/Bundle/ChillPersonBundle/Entity/Person.php +++ b/src/Bundle/ChillPersonBundle/Entity/Person.php @@ -23,13 +23,17 @@ namespace Chill\PersonBundle\Entity; */ use ArrayIterator; +use Chill\MainBundle\Doctrine\Model\TrackCreationInterface; +use Chill\MainBundle\Doctrine\Model\TrackUpdateInterface; use Chill\MainBundle\Entity\Center; use Chill\MainBundle\Entity\Country; +use Chill\MainBundle\Entity\User; use Chill\PersonBundle\Entity\Household\Household; use Chill\PersonBundle\Entity\MaritalStatus; use Chill\PersonBundle\Entity\Household\HouseholdMember; use Chill\MainBundle\Entity\HasCenterInterface; use Chill\MainBundle\Entity\Address; +use Chill\MainBundle\Entity\Embeddable\CommentEmbeddable; use DateTime; use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\Collection; @@ -53,7 +57,7 @@ use Chill\PersonBundle\Entity\Household\PersonHouseholdAddress; * "person"=Person::class * }) */ -class Person implements HasCenterInterface +class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateInterface { /** * The person's id @@ -100,6 +104,14 @@ class Person implements HasCenterInterface */ private $birthdate; //to change in birthdate + /** + * The person's deathdate + * @var \DateTimeImmutable + * + * @ORM\Column(type="date_immutable", nullable=true) + */ + private ?\DateTimeImmutable $deathdate; + /** * The person's place of birth * @var string @@ -143,6 +155,14 @@ class Person implements HasCenterInterface const MALE_GENDER = 'man'; const FEMALE_GENDER = 'woman'; const BOTH_GENDER = 'both'; + const NO_INFORMATION = 'unknown'; + + /** + * Comment on gender + * @var CommentEmbeddable + * @ORM\Embedded(class="Chill\MainBundle\Entity\Embeddable\CommentEmbeddable", columnPrefix="genderComment_") + */ + private CommentEmbeddable $genderComment; /** * The marital status of the person @@ -153,6 +173,21 @@ class Person implements HasCenterInterface */ private $maritalStatus; + /** + * The date of the last marital status change of the person + * @var \DateTime + * + * @ORM\Column(type="date", nullable=true) + */ + private $maritalStatusDate; + + /** + * Comment on marital status + * @var CommentEmbeddable + * @ORM\Embedded(class="Chill\MainBundle\Entity\Embeddable\CommentEmbeddable", columnPrefix="maritalStatusComment_") + */ + private CommentEmbeddable $maritalStatusComment; + /** * Contact information for contacting the person * @var string @@ -240,6 +275,54 @@ class Person implements HasCenterInterface */ private $memo = ''; // TO-CHANGE in remark + + /** + * Accept short text message (aka SMS) + * @var boolean + * + * @ORM\Column(type="boolean", options={"default" : false}) + */ + private ?bool $acceptSMS = false; + + /** + * Accept receiving email + * @var boolean + * + * @ORM\Column(type="boolean", options={"default" : false}) + */ + private ?bool $acceptEmail = false; + + /** + * Number of children + * @var int + * + * @ORM\Column(type="integer", nullable=true) + */ + private ?int $numberOfChildren = null; + + /** + * @ORM\ManyToOne(targetEntity=User::class) + * @ORM\JoinColumn(nullable=true) + */ + private $createdBy; + + /** + * @ORM\Column(type="datetime", nullable=true, options={"default": NULL}) + */ + private \DateTimeInterface $createdAt; + + /** + * @ORM\ManyToOne( + * targetEntity=User::class + * ) + */ + private User $updatedBy; + + /** + * @ORM\Column(type="datetime", nullable=true, options={"default": NULL}) + */ + private \DateTimeInterface $updatedAt; + /** * @var boolean * @deprecated @@ -316,8 +399,10 @@ class Person implements HasCenterInterface } $this->open(new AccompanyingPeriod($opening)); + $this->genderComment = new CommentEmbeddable(); + $this->maritalStatusComment = new CommentEmbeddable(); } - + /** * This private function scan accompanyingPeriodParticipations Collection, * searching for a given AccompanyingPeriod @@ -329,10 +414,10 @@ class Person implements HasCenterInterface if ($accompanyingPeriod === $participation->getAccompanyingPeriod()) { return $participation; }} - + return null; } - + /** * This public function is the same but return only true or false */ @@ -340,7 +425,7 @@ class Person implements HasCenterInterface { return ($this->participationsContainAccompanyingPeriod($accompanyingPeriod)) ? false : true; } - + /** * Add AccompanyingPeriodParticipation * @@ -350,7 +435,7 @@ class Person implements HasCenterInterface { $participation = new AccompanyingPeriodParticipation($accompanyingPeriod, $this); $this->accompanyingPeriodParticipations->add($participation); - + return $this; } @@ -360,7 +445,7 @@ class Person implements HasCenterInterface public function removeAccompanyingPeriod(AccompanyingPeriod $accompanyingPeriod) : void { $participation = $this->participationsContainAccompanyingPeriod($accompanyingPeriod); - + if (! null === $participation) { $participation->setEndDate(\DateTimeImmutable::class); $this->accompanyingPeriodParticipations->removeElement($participation); @@ -438,7 +523,7 @@ class Person implements HasCenterInterface } return $accompanyingPeriods; } - + /** * Get AccompanyingPeriodParticipations Collection */ @@ -447,7 +532,7 @@ class Person implements HasCenterInterface return $this->accompanyingPeriodParticipations; } - /** + /** * Return a collection of participation, where the participation * is still opened, not a draft, and the period is still opened */ @@ -465,9 +550,9 @@ class Person implements HasCenterInterface ->filter(function (AccompanyingPeriodParticipation $app) { $period = $app->getAccompanyingPeriod(); return ( - NULL === $period->getClosingDate() + NULL === $period->getClosingDate() || new \DateTime('now') < $period->getClosingDate() - ) + ) && AccompanyingPeriod::STEP_DRAFT !== $period->getStep(); }); } @@ -1195,12 +1280,12 @@ class Person implements HasCenterInterface return true; } - + public function getFullnameCanonical() : string { return $this->fullnameCanonical; } - + public function setFullnameCanonical($fullnameCanonical) : Person { $this->fullnameCanonical = $fullnameCanonical; @@ -1341,4 +1426,122 @@ class Person implements HasCenterInterface return null; } } + + public function getGenderComment(): CommentEmbeddable + { + return $this->genderComment; + } + + public function setGenderComment(CommentEmbeddable $genderComment): self + { + $this->genderComment = $genderComment; + + return $this; + } + + public function getMaritalStatusComment(): CommentEmbeddable + { + return $this->maritalStatusComment; + } + + public function setMaritalStatusComment(CommentEmbeddable $maritalStatusComment): self + { + $this->maritalStatusComment = $maritalStatusComment; + + return $this; + } + + public function getDeathdate(): ?\DateTimeInterface + { + return $this->deathdate; + } + + public function setDeathdate(?\DateTimeInterface $deathdate): self + { + $this->deathdate = $deathdate; + + return $this; + } + + public function getMaritalStatusDate(): ?\DateTimeInterface + { + return $this->maritalStatusDate; + } + + public function setMaritalStatusDate(?\DateTimeInterface $maritalStatusDate): self + { + $this->maritalStatusDate = $maritalStatusDate; + + return $this; + } + + public function getAcceptSMS(): ?bool + { + return $this->acceptSMS; + } + + public function setAcceptSMS(bool $acceptSMS): self + { + $this->acceptSMS = $acceptSMS; + + return $this; + } + + public function getAcceptEmail(): ?bool + { + return $this->acceptEmail; + } + + public function setAcceptEmail(bool $acceptEmail): self + { + $this->acceptEmail = $acceptEmail; + + return $this; + } + + public function getNumberOfChildren(): ?int + { + return $this->numberOfChildren; + } + + public function setNumberOfChildren(int $numberOfChildren): self + { + $this->numberOfChildren = $numberOfChildren; + + return $this; + } + + public function getCreatedBy(): ?User + { + return $this->createdBy; + } + + public function setCreatedBy(User $createdBy): self + { + $this->createdBy = $createdBy; + + return $this; + } + + public function setCreatedAt(\DateTimeInterface $datetime): self + { + $this->createdAt = $datetime; + + return $this; + } + + public function setUpdatedBy(User $user): self + { + $this->updatedBy = $user; + + return $this; + } + + public function setUpdatedAt(\DateTimeInterface $datetime): self + { + $this->updatedAt = $datetime; + + return $this; + } + } diff --git a/src/Bundle/ChillPersonBundle/Form/PersonType.php b/src/Bundle/ChillPersonBundle/Form/PersonType.php index 42c625baa..376310965 100644 --- a/src/Bundle/ChillPersonBundle/Form/PersonType.php +++ b/src/Bundle/ChillPersonBundle/Form/PersonType.php @@ -34,9 +34,13 @@ use Chill\PersonBundle\Entity\PersonPhone; use Chill\PersonBundle\Form\Type\Select2MaritalStatusType; use Symfony\Component\Form\AbstractType; use Chill\MainBundle\Form\Type\ChillDateType; +use Chill\MainBundle\Form\Type\CommentType; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\TelType; use Symfony\Component\Form\Extension\Core\Type\TextType; +use Symfony\Component\Form\Extension\Core\Type\IntegerType; +use Symfony\Component\Form\Extension\Core\Type\CheckboxType; +use Symfony\Component\Form\Extension\Core\Type\DateType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; @@ -82,8 +86,19 @@ class PersonType extends AbstractType ->add('birthdate', ChillDateType::class, [ 'required' => false, ]) + ->add('deathdate', DateType::class, [ + 'required' => false, + 'input' => 'datetime_immutable', + 'widget' => 'single_text' + ]) ->add('gender', GenderType::class, array( 'required' => true + )) + ->add('genderComment', CommentType::class, array( + 'required' => false + )) + ->add('numberOfChildren', IntegerType::class, array( + 'required' => false )); if ($this->configAltNamesHelper->hasAltNames()) { @@ -111,7 +126,12 @@ class PersonType extends AbstractType } if ($this->config['mobilenumber'] === 'visible') { - $builder->add('mobilenumber', TelType::class, array('required' => false)); + $builder + ->add('mobilenumber', TelType::class, array('required' => false)) + ->add('acceptSMS', CheckboxType::class, array( + 'value' => false, + 'required' => true + )); } $builder->add('otherPhoneNumbers', ChillCollectionType::class, [ @@ -130,7 +150,9 @@ class PersonType extends AbstractType ]); if ($this->config['email'] === 'visible') { - $builder->add('email', EmailType::class, array('required' => false)); + $builder + ->add('email', EmailType::class, array('required' => false)) + ->add('acceptEmail', CheckboxType::class, array('required' => false)); } if ($this->config['country_of_birth'] === 'visible') { @@ -153,9 +175,16 @@ class PersonType extends AbstractType } if ($this->config['marital_status'] === 'visible'){ - $builder->add('maritalStatus', Select2MaritalStatusType::class, array( - 'required' => false - )); + $builder + ->add('maritalStatus', Select2MaritalStatusType::class, array( + 'required' => false + )) + ->add('maritalStatusDate', ChillDateType::class, array( + 'required' => false + )) + ->add('maritalStatusComment', CommentType::class, array( + 'required' => false + )); } if($options['cFGroup']) { diff --git a/src/Bundle/ChillPersonBundle/Resources/public/js/person.js b/src/Bundle/ChillPersonBundle/Resources/public/js/person.js new file mode 100644 index 000000000..da40dddc7 --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Resources/public/js/person.js @@ -0,0 +1,57 @@ +import { ShowHide } from 'ShowHide/show_hide.js'; + +const maritalStatus = document.getElementById("maritalStatus"); +const maritalStatusDate = document.getElementById("maritalStatusDate"); +const personEmail = document.getElementById("personEmail"); +const personAcceptEmail = document.getElementById("personAcceptEmail"); +const personPhoneNumber = document.getElementById("personPhoneNumber"); +const personAcceptSMS = document.getElementById("personAcceptSMS"); + + +new ShowHide({ + froms: [maritalStatus], + container: [maritalStatusDate], + test: function(froms) { + for (let f of froms.values()) { + for (let input of f.querySelectorAll('select').values()) { + if (input.value) { + return true + } + } + } + return false; + }, + event_name: 'change' +}); + +new ShowHide({ + froms: [personEmail], + container: [personAcceptEmail], + test: function(froms) { + for (let f of froms.values()) { + for (let input of f.querySelectorAll('input').values()) { + if (input.value) { + return true + } + } + } + return false; + }, + event_name: 'input' +}); + +new ShowHide({ + froms: [personPhoneNumber], + container: [personAcceptSMS], + test: function(froms) { + for (let f of froms.values()) { + for (let input of f.querySelectorAll('input').values()) { + if (input.value) { + return true + } + } + } + return false; + }, + event_name: 'input' +}); diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Person/edit.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Person/edit.html.twig index a69253695..549025429 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/Person/edit.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/Person/edit.html.twig @@ -43,6 +43,7 @@ {{ form_widget(form.altNames, { 'label': 'Alternative names'}) }} {% endif %} {{ form_row(form.gender, {'label' : 'Gender'}) }} + {{ form_row(form.genderComment, { 'label' : 'Comment on the gender'} ) }}
@@ -54,9 +55,12 @@ {%- if form.countryOfBirth is defined -%} {{ form_row(form.countryOfBirth, { 'label' : 'Country of birth' } ) }} {%- endif -%} + {%- if form.deathdate is defined -%} + {{ form_row(form.deathdate, { 'label' : 'Date of death' } ) }} + {%- endif -%}
-{%- if form.nationality is defined or form.spokenLanguages is defined or form.maritalStatus is defined -%} +{%- if form.nationality is defined or form.spokenLanguages is defined -%}

{{ 'Administrative information'|trans }}

{%- if form.nationality is defined -%} @@ -65,8 +69,21 @@ {%- if form.spokenLanguages is defined -%} {{ form_row(form.spokenLanguages, {'label' : 'Spoken languages'}) }} {%- endif -%} +
+{%- endif -%} + +{%- if form.numberOfChildren is defined or form.maritalStatus is defined -%} +
+

{{ 'Marital status'|trans }}

+ {{ form_row(form.numberOfChildren, {'label' : 'Number of children'}) }} {%- if form.maritalStatus is defined -%} - {{ form_row(form.maritalStatus, { 'label' : 'Marital status'} ) }} +
+ {{ form_row(form.maritalStatus, { 'label' : 'Marital status'} ) }} +
+
+ {{ form_row(form.maritalStatusDate, { 'label' : 'Date of last marital status change'} ) }} + {{ form_row(form.maritalStatusComment, { 'label' : 'Comment on the marital status'} ) }} +
{%- endif -%}
{%- endif -%} @@ -75,13 +92,24 @@

{{ 'Contact information'|trans }}

{%- if form.email is defined -%} - {{ form_row(form.email, {'label': 'Email'}) }} +
+ {{ form_row(form.email, {'label': 'Email'}) }} +
+
+ {{ form_row(form.acceptEmail, {'label' : 'Accept emails ?'}) }} +
{%- endif -%} + {%- if form.phonenumber is defined -%} {{ form_row(form.phonenumber, {'label': 'Phonenumber'}) }} {%- endif -%} {%- if form.mobilenumber is defined -%} - {{ form_row(form.mobilenumber, {'label': 'Mobilenumber'}) }} +
+ {{ form_row(form.mobilenumber, {'label': 'Mobilenumber'}) }} +
+
+ {{ form_row(form.acceptSMS, {'label' : 'Accept short text message ?'}) }} +
{%- endif -%} {%- if form.otherPhoneNumbers is defined -%} {{ form_widget(form.otherPhoneNumbers) }} @@ -114,3 +142,8 @@ {% endblock personcontent %} + + +{% block js %} + +{% endblock js %} diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Person/view.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Person/view.html.twig index 796a7f82e..76c6437d5 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/Person/view.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/Person/view.html.twig @@ -73,12 +73,14 @@ This view should receive those arguments:
{{ 'Gender'|trans }} :
{{ ( person.gender|default('Not given'))|trans }}
+ + {% if not person.genderComment.isEmpty %} +
{{ 'Gender comment'|trans }} :
+
{{ person.genderComment|chill_entity_render_box }}
+ {% endif %} + - - {% if is_granted('CHILL_PERSON_UPDATE', person) %} - {{ include(edit_tmp_name, edit_tmp_args) }} - {% endif %} @@ -114,11 +116,14 @@ This view should receive those arguments: {% endif %} {% endapply %} {%- endif -%} + + {% if person.deathdate is not null %} +
{{ 'Date of death'|trans }} :
+
{{ person.deathdate|format_date('long') }}
+ {% endif %} + - {% if is_granted('CHILL_PERSON_UPDATE', person) %} - {{ include(edit_tmp_name, edit_tmp_args) }} - {% endif %} @@ -155,6 +160,21 @@ This view should receive those arguments: {%- endif -%} + + + {%-if chill_person.fields.number_of_children == 'visible' -%} +
+
{{'Number of children'|trans}} :
+
+ {% if person.numberOfChildren is not null %} + {{ person.numberOfChildren }} + {% else %} + {{ 'No data given'|trans }} + {% endif %} +
+
+ {%- endif -%} + {%- if chill_person.fields.marital_status == 'visible' -%}
{{'Marital status'|trans}} :
@@ -166,11 +186,24 @@ This view should receive those arguments: {% endif %}
+
+
{{'Date of last marital status change'|trans}} :
+ {% if person.maritalStatusDate is not null %} +
+ {{ person.maritalStatusDate|format_date('long') }} +
+ {% endif %} +
+
+ {% if not person.maritalStatusComment.isEmpty %} +
{{'Comment on the marital status'|trans}} :
+
+ {{ person.maritalStatusComment|chill_entity_render_box }} +
+ {% endif %} +
{%- endif -%} - {% if is_granted('CHILL_PERSON_UPDATE', person) %} - {{ include(edit_tmp_name, edit_tmp_args) }} - {% endif %} {%- endif -%} @@ -213,6 +246,13 @@ This view should receive those arguments:
{{ 'Email'|trans }} :
{% if person.email is not empty %}{{ person.email }}{% else %}{{ 'No data given'|trans }}{% endif %}
+ {%- if person.email is not empty and person.acceptEmail -%} +
+ + {{- 'Accept emails'|trans -}} + +
+ {%- endif -%}
{%- endif -%} {%- if chill_person.fields.phonenumber == 'visible' -%} @@ -225,6 +265,13 @@ This view should receive those arguments:
{{ 'Mobilenumber'|trans }} :
{% if person.mobilenumber is not empty %}
{{ person.mobilenumber|chill_format_phonenumber }}
{% else %}{{ 'No data given'|trans }}{% endif %}
+ {%- if person.mobilenumber is not empty and person.acceptSMS -%} +
+ + {{- 'Accept short text message'|trans -}} + +
+ {%- endif -%}
{% endif %} {% for pp in person.otherPhoneNumbers %} @@ -253,9 +300,6 @@ This view should receive those arguments: {%- endif -%} - {% if is_granted('CHILL_PERSON_UPDATE', person) %} - {{ include(edit_tmp_name, edit_tmp_args) }} - {% endif %} {%- endif -%} @@ -272,14 +316,21 @@ This view should receive those arguments:
- - {% if is_granted('CHILL_PERSON_UPDATE', person) %} - {{ include(edit_tmp_name, edit_tmp_args) }} - {% endif %}
{% endif %} +{% if is_granted('CHILL_PERSON_UPDATE', person) %} + +{% endif %} + {% endblock %} diff --git a/src/Bundle/ChillPersonBundle/chill.webpack.config.js b/src/Bundle/ChillPersonBundle/chill.webpack.config.js index b20aa004e..14f4ee694 100644 --- a/src/Bundle/ChillPersonBundle/chill.webpack.config.js +++ b/src/Bundle/ChillPersonBundle/chill.webpack.config.js @@ -14,4 +14,6 @@ module.exports = function(encore, entries) encore.addEntry('vue_accourse', __dirname + '/Resources/public/vuejs/AccompanyingCourse/index.js'); encore.addEntry('household_edit_metadata', __dirname + '/Resources/public/modules/household_edit_metadata/index.js'); encore.addEntry('accompanying_course_work_create', __dirname + '/Resources/public/vuejs/AccompanyingCourseWorkCreate/index.js'); + encore.addEntry('person', __dirname + '/Resources/public/js/person.js'); + }; diff --git a/src/Bundle/ChillPersonBundle/migrations/Version20210617073504.php b/src/Bundle/ChillPersonBundle/migrations/Version20210617073504.php new file mode 100644 index 000000000..f9e96697d --- /dev/null +++ b/src/Bundle/ChillPersonBundle/migrations/Version20210617073504.php @@ -0,0 +1,49 @@ +addSql('ALTER TABLE chill_person_person ADD deathdate DATE DEFAULT NULL'); + $this->addSql('ALTER TABLE chill_person_person ADD maritalStatusDate DATE DEFAULT NULL'); + $this->addSql('ALTER TABLE chill_person_person ADD acceptSMS BOOLEAN DEFAULT false NOT NULL'); + $this->addSql('ALTER TABLE chill_person_person ADD acceptEmail BOOLEAN DEFAULT false NOT NULL'); + $this->addSql('ALTER TABLE chill_person_person ADD numberOfChildren INT DEFAULT NULL'); + $this->addSql('ALTER TABLE chill_person_person ADD genderComment_comment TEXT DEFAULT NULL'); + $this->addSql('ALTER TABLE chill_person_person ADD genderComment_userId INT DEFAULT NULL'); + $this->addSql('ALTER TABLE chill_person_person ADD genderComment_date TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL'); + $this->addSql('ALTER TABLE chill_person_person ADD maritalStatusComment_comment TEXT DEFAULT NULL'); + $this->addSql('ALTER TABLE chill_person_person ADD maritalStatusComment_userId INT DEFAULT NULL'); + $this->addSql('ALTER TABLE chill_person_person ADD maritalStatusComment_date TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL'); + } + + public function down(Schema $schema): void + { + $this->addSql('ALTER TABLE chill_person_person DROP deathdate'); + $this->addSql('ALTER TABLE chill_person_person DROP maritalStatusDate'); + $this->addSql('ALTER TABLE chill_person_person DROP acceptSMS'); + $this->addSql('ALTER TABLE chill_person_person DROP acceptEmail'); + $this->addSql('ALTER TABLE chill_person_person DROP numberOfChildren'); + $this->addSql('ALTER TABLE chill_person_person DROP genderComment_comment'); + $this->addSql('ALTER TABLE chill_person_person DROP genderComment_userId'); + $this->addSql('ALTER TABLE chill_person_person DROP genderComment_date'); + $this->addSql('ALTER TABLE chill_person_person DROP maritalStatusComment_comment'); + $this->addSql('ALTER TABLE chill_person_person DROP maritalStatusComment_userId'); + $this->addSql('ALTER TABLE chill_person_person DROP maritalStatusComment_date'); + } +} diff --git a/src/Bundle/ChillPersonBundle/migrations/Version20210618080702.php b/src/Bundle/ChillPersonBundle/migrations/Version20210618080702.php new file mode 100644 index 000000000..93c6b8bf0 --- /dev/null +++ b/src/Bundle/ChillPersonBundle/migrations/Version20210618080702.php @@ -0,0 +1,45 @@ +addSql('ALTER TABLE chill_person_person ADD createdAt TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL'); + $this->addSql('ALTER TABLE chill_person_person ADD updatedAt TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL'); + $this->addSql('ALTER TABLE chill_person_person ADD createdBy_id INT DEFAULT NULL'); + $this->addSql('ALTER TABLE chill_person_person ADD updatedBy_id INT DEFAULT NULL'); + $this->addSql('COMMENT ON COLUMN chill_person_person.deathdate IS \'(DC2Type:date_immutable)\''); + $this->addSql('ALTER TABLE chill_person_person ADD CONSTRAINT FK_BF210A143174800F FOREIGN KEY (createdBy_id) REFERENCES users (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE chill_person_person ADD CONSTRAINT FK_BF210A1465FF1AEC FOREIGN KEY (updatedBy_id) REFERENCES users (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('CREATE INDEX IDX_BF210A143174800F ON chill_person_person (createdBy_id)'); + $this->addSql('CREATE INDEX IDX_BF210A1465FF1AEC ON chill_person_person (updatedBy_id)'); + } + + public function down(Schema $schema): void + { + $this->addSql('ALTER TABLE chill_person_person DROP CONSTRAINT FK_BF210A143174800F'); + $this->addSql('ALTER TABLE chill_person_person DROP CONSTRAINT FK_BF210A1465FF1AEC'); + $this->addSql('DROP INDEX IDX_BF210A143174800F'); + $this->addSql('DROP INDEX IDX_BF210A1465FF1AEC'); + $this->addSql('ALTER TABLE chill_person_person DROP createdAt'); + $this->addSql('ALTER TABLE chill_person_person DROP updatedAt'); + $this->addSql('ALTER TABLE chill_person_person DROP createdBy_id'); + $this->addSql('ALTER TABLE chill_person_person DROP updatedBy_id'); + $this->addSql('COMMENT ON COLUMN chill_person_person.deathdate IS NULL'); + } +} diff --git a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml index 8bba291cd..77c01e2da 100644 --- a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml @@ -10,6 +10,8 @@ First name or Last name: Prénom ou nom id: identifiant Birthdate: 'Date de naissance' birthdate: date de naissance +deathdate: date de décès +Date of death: Date de décès 'Date of birth': 'Date de naissance' dateOfBirth: date de naissance dateofbirth: date de naissance @@ -21,6 +23,7 @@ nationality: nationalité 'Without nationality': 'Sans nationalité' Gender: Genre gender: genre +Gender comment: Remarque sur le genre 'Creation date': 'Date d''ouverture' 'Not given': 'Non renseigné' 'Place of birth': 'Lieu de naissance' @@ -30,16 +33,22 @@ placeOfBirth: lieu de naissance countryOfBirth: 'Pays de naissance' 'Unknown country of birth': 'Pays inconnu' 'Marital status': 'État civil' +Date of last marital status change: État civil depuis le +Comment on the marital status: Commentaires sur l'état civil 'Number of children': 'Nombre d''enfants' '{0} No child|{1} One child | ]1,Inf] %nb% children': '{0} Aucun enfant|{1} Un enfant | ]1,Inf] %nb% enfants' 'National number': 'Numéro national' Email: 'Courrier électronique' +Accept emails ?: Accepte les courriels? +Accept emails: Peut être contacté par email Address: Adresse Memo: Mémo Phonenumber: 'Numéro de téléphone' phonenumber: numéro de téléphone Mobilenumber: 'Numéro de téléphone portable' mobilenumber: numéro de téléphone portable +Accept short text message ?: Accepte les SMS? +Accept short text message: Accepte les SMS Other phonenumber: Autre numéro de téléphone Description: description Add new phone: Ajouter un numéro de téléphone