diff --git a/src/Enum/StatusEnum.php b/src/Enum/StatusEnum.php index 52c3509..24c647a 100644 --- a/src/Enum/StatusEnum.php +++ b/src/Enum/StatusEnum.php @@ -15,10 +15,19 @@ /** @var string When it's waiting for something or someone to continue actions */ public const WAITING = 'waiting'; - + /** @var string Actions are planified and nothing is happening before */ public const PLANIFIED = 'planified'; /** @var No more actions required, success or fail */ public const CLOSED = 'closed'; + + /** @var array Names of status */ + public const STATUS_NAME = [ + 'open' => 'Ouvert', + 'inProgress' => 'En cours', + 'waiting' => 'En attente', + 'planified' => 'Planifié', + 'closed' => 'Clos', + ]; } \ No newline at end of file diff --git a/src/Exception/InvalidEnumKeyException.php b/src/Exception/InvalidEnumKeyException.php index 32f4cb6..11e256b 100644 --- a/src/Exception/InvalidEnumKeyException.php +++ b/src/Exception/InvalidEnumKeyException.php @@ -4,7 +4,7 @@ use Exception; /** - * Exceptions thrown when invalid enum key is set + * Exceptions thrown when invalid enum key is used */ class InvalidEnumKeyException extends Exception { diff --git a/src/Form/Activity/ActivityAddForm.php b/src/Form/Activity/ActivityAddForm.php index 30ef4a2..8d6333f 100644 --- a/src/Form/Activity/ActivityAddForm.php +++ b/src/Form/Activity/ActivityAddForm.php @@ -8,6 +8,7 @@ use Symfony\Bridge\Doctrine\Form\Type\EntityType; use App\Entity\ActorEntity; use Symfony\Component\Form\Extension\Core\Type\DateType; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use App\Enum\StatusEnum; class ActivityAddForm extends AbstractFormManager @@ -24,19 +25,12 @@ $activity = new activityEntity(); $activity->generateId(); $activity->setName($data['name']); + $activity->setActor($data['actor']); + $activity->setStatus($data['status']); $activity->setStartDate($data['startDate']); $activity->setEndDate($data['endDate']); $activity->setRealStartDate($data['realStartDate']); $activity->setRealEndDate($data['realEndDate']); - $activity->setActor($data['actor']); - - if(!is_null($data['realEndDate'])) { - $activity->setStatus(StatusEnum::CLOSED); - } elseif (!is_null($data['realStartDate'])) { - $activity->setStatus(StatusEnum::IN_PROGRESS); - } else { - $activity->setStatus(StatusEnum::OPEN); - } return $activity; } @@ -60,6 +54,12 @@ 'choice_label' => 'displayName', 'required' => false, ]) + ->add('status', ChoiceType::class, [ + 'choices' => ActivityEntity::VALID_STATUS, + 'choice_label' => function($choice, $key, $value) { + return StatusEnum::STATUS_NAME[$choice]; + }, + ]) ->add('startDate', DateType::class, [ 'required' => false, 'widget' => 'single_text', diff --git a/templates/_includes/html/form/activity/add.html.twig b/templates/_includes/html/form/activity/add.html.twig index 7851ad8..79a8993 100644 --- a/templates/_includes/html/form/activity/add.html.twig +++ b/templates/_includes/html/form/activity/add.html.twig @@ -1,30 +1,41 @@ +{% import '_includes/macros/status.html.twig' as statusTools %} + {{ form_start(form, {attr: {class: 'ajax-form'}}) }}
- {{ form_label(form.name, 'Nom', {label_attr: {class: 'input-text-label'}}) }} - {{ form_widget(form.name, {attr: {class: 'w-100'}}) }} +
+ {{ form_label(form.name, 'Nom', {label_attr: {class: 'input-text-label'}}) }} + {{ form_widget(form.name, {attr: {class: 'w-100'}}) }} +
+
+ {{ form_label(form.status, 'Status', {label_attr: {class: 'input-text-label'}}) }} + {{ form_widget(form.status, {attr: {class: 'w-100'}}) }} +
+
+ {{ form_label(form.actor, 'Acteur', {label_attr: {class: 'input-text-label'}}) }} + {{ form_widget(form.actor, {attr: {class: 'w-100'}}) }} +
+
- {{ form_label(form.startDate, 'Début planifié', {label_attr: {class: 'input-text-label'}}) }} - {{ form_widget(form.startDate, {attr: {class: 'w-100'}}) }} +
+ {{ form_label(form.startDate, 'Début planifié', {label_attr: {class: 'input-text-label'}}) }} + {{ form_widget(form.startDate, {attr: {class: 'w-100'}}) }} +
+
+ {{ form_label(form.endDate, 'Début réel', {label_attr: {class: 'input-text-label'}}) }} + {{ form_widget(form.endDate, {attr: {class: 'w-100'}}) }} +
- {{ form_label(form.realStartDate, 'Fin planifié', {label_attr: {class: 'input-text-label'}}) }} - {{ form_widget(form.realStartDate, {attr: {class: 'w-100'}}) }} -
-
-
-
- {{ form_label(form.actor, 'Acteur', {label_attr: {class: 'input-text-label'}}) }} - {{ form_widget(form.actor, {attr: {class: 'w-100'}}) }} -
-
- {{ form_label(form.endDate, 'Début réel', {label_attr: {class: 'input-text-label'}}) }} - {{ form_widget(form.endDate, {attr: {class: 'w-100'}}) }} -
-
- {{ form_label(form.realEndDate, 'Fin réelle', {label_attr: {class: 'input-text-label'}}) }} - {{ form_widget(form.realEndDate, {attr: {class: 'w-100'}}) }} +
+ {{ form_label(form.realStartDate, 'Fin planifié', {label_attr: {class: 'input-text-label'}}) }} + {{ form_widget(form.realStartDate, {attr: {class: 'w-100'}}) }} +
+
+ {{ form_label(form.realEndDate, 'Fin réelle', {label_attr: {class: 'input-text-label'}}) }} + {{ form_widget(form.realEndDate, {attr: {class: 'w-100'}}) }} +
{{ form_widget(form.submit, {attr: {class: 'w-100'}, label: 'Nouvelle activité'}) }} diff --git a/templates/_includes/macros/status.html.twig b/templates/_includes/macros/status.html.twig index 9cef145..31d400e 100644 --- a/templates/_includes/macros/status.html.twig +++ b/templates/_includes/macros/status.html.twig @@ -1,9 +1,3 @@ {% macro statusName(statusId) %} -{{ { - open: 'Ouvert', - inProgress: 'En cours', - waiting: 'En attente', - planified: 'Planifié', - closed: 'Clos', -}[statusId] }} +{{ constant('App\\Enum\\StatusEnum::STATUS_NAME')[statusId] }} {% endmacro %} \ No newline at end of file