From fcbe220c6c7b3ab8ab1f4af565d2870a198889bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Sat, 7 Dec 2013 12:40:12 +0100 Subject: [PATCH] circuit of creating a person --- Controller/PersonController.php | 89 ++++++++++++++----- Entity/Person.php | 14 ++- Form/CreationPersonType.php | 16 +++- Resources/views/Person/create.html.twig | 51 +++++++++++ .../views/Person/create_review.html.twig | 87 ++++++++++++++++++ Resources/views/Person/list.html.twig | 5 ++ 6 files changed, 237 insertions(+), 25 deletions(-) create mode 100644 Resources/views/Person/create.html.twig create mode 100644 Resources/views/Person/create_review.html.twig diff --git a/Controller/PersonController.php b/Controller/PersonController.php index f04584a65..c5474e2e7 100644 --- a/Controller/PersonController.php +++ b/Controller/PersonController.php @@ -166,38 +166,27 @@ class PersonController extends Controller { * @return \CL\Chill\PersonBundle\Entity\Person */ private function _bindCreationForm($form) { - $date = new \DateTime($form['creation_date']->getData()); - $person = new Person($date); + $date = new \DateTime(); + $person = new Person($form['creation_date']->getData()); - $date_of_birth = new \DateTime($form['dateOfBirth']->getData()); + $date_of_birth = new \DateTime(); $person->setName($form['name']->getData()) ->setSurname($form['surname']->getData()) ->setGenre($form['genre']->getData()) - ->setDateOfBirth($date_of_birth) + ->setDateOfBirth($form['dateOfBirth']->getData()) ; return $person; } - public function reviewAction() { - $request = $this->getRequest(); - - if ($request->getMethod() !== 'POST') { - $r = new Response("You must send something to review the creation of a new Person"); - $r->setStatusCode(400); - return $r; - } - - $form = $this->createForm( - new CreationPersonType(CreationPersonType::FORM_BEING_REVIEWED), - null, array('action' => $this->generateUrl('chill_person_create'))); - - $form->handleRequest($request); - - $person = $this->_bindCreationForm($form); - + /** + * + * @param \CL\Chill\PersonBundle\Entity\Person $person + * @return \Symfony\Component\Validator\ConstraintViolationListInterface + */ + private function _validatePersonAndHistory(Person $person) { $errors = $this->get('validator') ->validate($person, array('creation')); @@ -214,6 +203,28 @@ class PersonController extends Controller { } } + return $errors; + } + + public function reviewAction() { + $request = $this->getRequest(); + + if ($request->getMethod() !== 'POST') { + $r = new Response("You must send something to review the creation of a new Person"); + $r->setStatusCode(400); + return $r; + } + + $form = $this->createForm( + new CreationPersonType(CreationPersonType::FORM_BEING_REVIEWED), + null, array('action' => $this->generateUrl('chill_person_create'))); + + $form->handleRequest($request); + + $person = $this->_bindCreationForm($form); + + $errors = $this->_validatePersonAndHistory($person); + if ( count($errors) > 0) { @@ -279,6 +290,42 @@ class PersonController extends Controller { } + public function createAction() { + + $request = $this->getRequest(); + + if ($request->getMethod() !== 'POST') { + $r = new Response('You must send something to create a person !'); + $r->setStatusCode(400); + return $r; + } + + $form = $this->createForm(new CreationPersonType()); + + $form->handleRequest($request); + + $person = $this->_bindCreationForm($form); + + $errors = $this->_validatePersonAndHistory($person); + + if ($errors->count() === 0) { + $em = $this->getDoctrine()->getManager(); + + $em->persist($person); + + $em->flush(); + + return $this->redirect($this->generateUrl('chill_person_view', + array('id' => $person->getId()))); + } else { + $r = new Response('this should not happen if you reviewed your submission'); + $r->setStatusCode(400); + return $r; + } + + + } + /** * easy getting a person by his id * @return \CL\Chill\PersonBundle\Entity\Person diff --git a/Entity/Person.php b/Entity/Person.php index 42db477ff..729972f6a 100644 --- a/Entity/Person.php +++ b/Entity/Person.php @@ -46,7 +46,7 @@ class Person /** * @var string */ - private $civil_union; + private $civil_union = self::CIVIL_UNKNOW; /*Célibataire Marié(e) Veuf – Veuve @@ -339,6 +339,10 @@ ou une valeur vide lorsque la donnée nest pas connue*/ */ public function setPlaceOfBirth($placeOfBirth) { + if ($placeOfBirth === null) { + $placeOfBirth = ''; + } + $this->placeOfBirth = $placeOfBirth; return $this; @@ -443,6 +447,10 @@ ou une valeur vide lorsque la donnée nest pas connue*/ */ public function setBelgianNationalNumber($belgianNationalNumber) { + if ($belgianNationalNumber === null) { + $belgianNationalNumber = ''; + } + $this->belgian_national_number = $belgianNationalNumber; return $this; @@ -520,6 +528,10 @@ ou une valeur vide lorsque la donnée nest pas connue*/ */ public function setEmail($email) { + if ($email === null) { + $email = ''; + } + $this->email = $email; return $this; diff --git a/Form/CreationPersonType.php b/Form/CreationPersonType.php index e3c9a2458..e0afc8451 100644 --- a/Form/CreationPersonType.php +++ b/Form/CreationPersonType.php @@ -8,6 +8,7 @@ use Symfony\Component\OptionsResolver\OptionsResolverInterface; use CL\Chill\PersonBundle\Form\Type\CivilType; use CL\Chill\PersonBundle\Form\Type\GenderType; use CL\BelgianNationalNumberBundle\Form\BelgianNationalNumberType; +use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToStringTransformer; class CreationPersonType extends AbstractType { @@ -31,11 +32,20 @@ class CreationPersonType extends AbstractType public function buildForm(FormBuilderInterface $builder, array $options) { if ($this->form_status === self::FORM_BEING_REVIEWED) { + + $dateToStringTransformer = new DateTimeToStringTransformer( + null, null, 'Y-m-d', true); + + $builder->add('name', 'hidden') ->add('surname', 'hidden') - ->add('dateOfBirth', 'hidden') + ->add( $builder->create('dateOfBirth', 'hidden') + ->addModelTransformer($dateToStringTransformer) + ) ->add('genre', 'hidden') - ->add('creation_date', 'hidden') + ->add( $builder->create('creation_date', 'hidden') + ->addModelTransformer($dateToStringTransformer) + ) ->add('form_status', 'hidden') ; } else { @@ -44,7 +54,7 @@ class CreationPersonType extends AbstractType ->add('surname') ->add('dateOfBirth', 'date', array('required' => false, 'widget' => 'single_text')) ->add('genre', new GenderType(), array( - 'required' => false + 'required' => true )) ->add('creation_date', 'date', array('required' => true, 'widget' => 'single_text', 'data' => new \DateTime())) diff --git a/Resources/views/Person/create.html.twig b/Resources/views/Person/create.html.twig new file mode 100644 index 000000000..8544c2e36 --- /dev/null +++ b/Resources/views/Person/create.html.twig @@ -0,0 +1,51 @@ +{% extends "CLChillMainBundle::layout.html.twig" %} + +{% block title %}{{ 'views.Person.creation.title'|trans }}{% endblock title %} + +{% block css %} + + {% stylesheets output="css/all.css" filter="cssrewrite" + "bundles/clchillperson/css/person.css" + %} + + {% endstylesheets %} + + +{% endblock %} + +{% form_theme form 'CLChillMainBundle:Form:fields.html.twig' %} + + +{% block content %} +
+
+{{ form_start(form) }} + +

{{ 'views.Person.creation.open'|trans }}

+ +{{ form_row(form.name, { 'label' : 'views.Person.view.name'|trans }) }} + +{{ form_row(form.surname, { 'label' : 'views.Person.view.surname'|trans }) }} + +{{ form_row(form.dateOfBirth, { 'label' : 'views.Person.view.dateOfBirth'|trans }) }} + +{{ form_row(form.genre, { 'label' : 'views.Person.view.gender'|trans }) }} + +{{ form_row(form.creation_date, { 'label' : 'views.Person.review.creation_date'|trans }) }} + +{{ form_rest(form) }} + + +
+
+ +
+
+ +{{ form_end(form) }} +
+ + + +
+{% endblock content %} \ No newline at end of file diff --git a/Resources/views/Person/create_review.html.twig b/Resources/views/Person/create_review.html.twig new file mode 100644 index 000000000..252f76ae3 --- /dev/null +++ b/Resources/views/Person/create_review.html.twig @@ -0,0 +1,87 @@ +{% extends "CLChillMainBundle::layout.html.twig" %} + +{% block title %}{{ 'views.Person.review.title'|trans }}{% endblock title %} + +{% block css %} + + {% stylesheets output="css/all.css" filter="cssrewrite" + "bundles/clchillperson/css/person.css" + %} + + {% endstylesheets %} + + +{% endblock %} + +{% form_theme form 'CLChillMainBundle:Form:fields.html.twig' %} + + +{% block content %} +
+ {% if alternatePersons is not empty %} + + + + + + + + + + {% for person in alternatePersons %} + + + + + + {% endfor %} + + + +
{{ 'views.Person.review.altName'|trans }}{{ 'views.Person.review.altDateOfBirth'|trans }}{{ 'views.Person.review.altNationality'|trans }}
+ + {{ person }}{% spaceless %}{% if person.isOpen == false %}{% endif %} +{% endspaceless %} + + {{ person.dateOfBirth|date(date_format) }}{{ person.nationality|default('person.without_nationality'|trans) }} +
+ {% endif %} + + +
+{{ form_start(form) }} +

{{ 'views.Person.review.you_will_create_this_person'|trans }}

+ +
+
{{ 'views.Person.view.name'|trans }}
+
{{ name }}
+ +
{{ 'views.Person.view.surname'|trans }}
+
{{ surname }}
+ +
{{ 'views.Person.view.dateOfBirth'|trans }}
+
{{ dateOfBirth|date(date_format)|default( 'person.without_date_of_birth'|trans ) }}
+ +
{{ 'views.Person.view.gender'|trans }}
+
{{ ('person.gender.' ~ genre)|trans }}
+ +
{{ 'views.Person.review.creation_date'|trans }}
+
{{ creation_date|date(date_format) }}
+
+ +{{ form_rest(form) }} + + +
+
+ +
+
+ +{{ form_end(form) }} +
+ + + +
+{% endblock content %} \ No newline at end of file diff --git a/Resources/views/Person/list.html.twig b/Resources/views/Person/list.html.twig index 2e9d97378..b670305e8 100644 --- a/Resources/views/Person/list.html.twig +++ b/Resources/views/Person/list.html.twig @@ -21,6 +21,11 @@ {{person.surname}} {{person.name}} + {% spaceless %} + {% if person.isOpen == false %} + + {% endif %} + {% endspaceless %} {{person.dateOfBirth.format(date_format)}}