From c865956523d7448aa867b965bf19aa9dbaee7585 Mon Sep 17 00:00:00 2001
From: Jean-Philippe Metivier <jean-philippe.metivier@unicaen.fr>
Date: Fri, 1 Sep 2023 14:20:48 +0200
Subject: [PATCH] Valeur => Refus (Boolean)

---
 documentation/001_table.sql                   |  2 +-
 .../Entity/Db/ValidationInstance.php          | 38 ++++---------------
 .../ValidationInstanceHydrator.php            |  5 ++-
 .../ValidationInstanceService.php             |  8 ++--
 .../Helper/partial/validation-afficher.phtml  |  4 +-
 .../Helper/partial/validation-badge.phtml     |  2 +-
 .../validation-instance/index.phtml           |  2 +-
 7 files changed, 19 insertions(+), 42 deletions(-)

diff --git a/documentation/001_table.sql b/documentation/001_table.sql
index d6c63fd..25a8508 100755
--- a/documentation/001_table.sql
+++ b/documentation/001_table.sql
@@ -19,7 +19,7 @@ create table unicaen_validation_instance
         constraint unicaen_validation_instance_unicaen_validation_type_id_fk
             references unicaen_validation_type
                 on delete cascade,
-    valeur                text,
+    refus                boolean not null default false,
     justification                text,
     histo_creation        timestamp not null,
     histo_createur_id     integer   not null
diff --git a/src/UnicaenValidation/Entity/Db/ValidationInstance.php b/src/UnicaenValidation/Entity/Db/ValidationInstance.php
index 9ce80a6..c8c6bbd 100755
--- a/src/UnicaenValidation/Entity/Db/ValidationInstance.php
+++ b/src/UnicaenValidation/Entity/Db/ValidationInstance.php
@@ -10,64 +10,40 @@ class ValidationInstance implements HistoriqueAwareInterface {
 
     private int $id;
     private ?ValidationType $type = null;
-    private ?string $valeur = null;
+    private bool $refus = false;
     private ?string $justification = null;
     
-    /**
-     * @return int
-     */
     public function getId() : int
     {
         return $this->id;
     }
 
-    /**
-     * @return ValidationType|null
-     */
     public function getType() : ?ValidationType
     {
         return $this->type;
     }
 
-    /**
-     * @param ValidationType $type
-     * @return ValidationInstance
-     */
     public function setType(ValidationType $type) : ValidationInstance
     {
         $this->type = $type;
         return $this;
     }
 
-    /**
-     * @return string|null
-     */
-    public function getValeur() : ?string
+    public function isRefus(): bool
     {
-        return $this->valeur;
+        return $this->refus;
     }
 
-    /**
-     * @param string|null $valeur
-     * @return ValidationInstance
-     */
-    public function setValeur(?string $valeur) : ValidationInstance
+    public function setRefus(bool $refus): void
     {
-        $this->valeur = $valeur;
-        return $this;
+        $this->refus = $refus;
     }
 
-    /**
-     * @return string|null
-     */
     public function getJustification(): ?string
     {
         return $this->justification;
     }
 
-    /**
-     * @param string|null $justification
-     */
     public function setJustification(?string $justification): void
     {
         $this->justification = $justification;
@@ -96,8 +72,8 @@ class ValidationInstance implements HistoriqueAwareInterface {
 
     public function toStringValeur() : string
     {
-        if ($this->getValeur() === null) return "Aucune valeur associée à la validation";
-        return $this->getValeur();
+        if ($this->getJustification() === null) return "Aucune valeur associée à la validation";
+        return $this->getJustification();
     }
 
     public function toStringValidateur() : string
diff --git a/src/UnicaenValidation/Form/ValidationInstance/ValidationInstanceHydrator.php b/src/UnicaenValidation/Form/ValidationInstance/ValidationInstanceHydrator.php
index a901991..6ab5a4a 100644
--- a/src/UnicaenValidation/Form/ValidationInstance/ValidationInstanceHydrator.php
+++ b/src/UnicaenValidation/Form/ValidationInstance/ValidationInstanceHydrator.php
@@ -17,7 +17,7 @@ class ValidationInstanceHydrator implements HydratorInterface {
     {
         $data = [
             'type'          => ($object AND $object->getType())?$object->getType()->getId():null,
-            'valeur'        => $object?$object->getValeur():null,
+            'valeur'        => $object?$object->getJustification():null,
         ];
         return $data;
     }
@@ -31,7 +31,8 @@ class ValidationInstanceHydrator implements HydratorInterface {
     {
         $type = $this->getValidationTypeService()->getValidationType($data['type']);
         $object->setType($type);
-        $object->setValeur($data['valeur'] ?? null);
+        $object->setJustification($data['valeur'] ?? null);
+        $object->setRefus($data['valeur'] === null || $data['valeur'] === "");
         return $object;
     }
 }
\ No newline at end of file
diff --git a/src/UnicaenValidation/Service/ValidationInstance/ValidationInstanceService.php b/src/UnicaenValidation/Service/ValidationInstance/ValidationInstanceService.php
index d2fe5ef..3c089b7 100644
--- a/src/UnicaenValidation/Service/ValidationInstance/ValidationInstanceService.php
+++ b/src/UnicaenValidation/Service/ValidationInstance/ValidationInstanceService.php
@@ -213,20 +213,20 @@ class ValidationInstanceService {
      * @param string|null $justification
      * @return ValidationInstance
      */
-    public function createWithCode(string $code, ?string $valeur = null, ?string $justification = null) : ValidationInstance
+    public function createWithCode(string $code, bool $refus = false, ?string $justification = null) : ValidationInstance
     {
         $type = $this->getValidationTypeService()->getValidationTypeByCode($code);
 
         $instance = new ValidationInstance();
         $instance->setType($type);
-        $instance->setValeur($valeur);
+        $instance->setRefus($refus);
         $instance->setJustification($justification);
         $this->create($instance);
 
         return $instance;
     }
 
-    public function setValidationActive(HasValidationsInterface $element, string $code, ?string $value = null) : HasValidationsInterface
+    public function setValidationActive(HasValidationsInterface $element, string $code, ?string $justification = null) : HasValidationsInterface
     {
         //historisation de l'état actif actuel (s'il existe)
         $validationActive = $element->getValidationActiveByTypeCode($code);
@@ -235,7 +235,7 @@ class ValidationInstanceService {
         }
 
         //creation de la nouvelle instance
-        $validation = $this->createWithCode($code, $value);
+        $validation = $this->createWithCode($code, $justification !== null,  $justification);
 
         //ajout à l'element et persist
         $element->addValidation($validation);
diff --git a/src/UnicaenValidation/View/Helper/partial/validation-afficher.phtml b/src/UnicaenValidation/View/Helper/partial/validation-afficher.phtml
index fc3f456..a9af9b1 100644
--- a/src/UnicaenValidation/View/Helper/partial/validation-afficher.phtml
+++ b/src/UnicaenValidation/View/Helper/partial/validation-afficher.phtml
@@ -11,8 +11,8 @@ $type = $instance->getType();
 
 ?>
 
-<div class="validation validation-affichage <?php echo ($instance->getValeur() === null)?"validation-valider":"validation-refuser" ?>">
-        <?php if ($instance->getValeur() !== null) : ?>
+<div class="validation validation-affichage <?php echo ($instance->isRefus())?"validation-refuser":"validation-valider" ?>">
+        <?php if ($instance->isRefus()) : ?>
             Refusé
         <?php else : ?>
             Validé
diff --git a/src/UnicaenValidation/View/Helper/partial/validation-badge.phtml b/src/UnicaenValidation/View/Helper/partial/validation-badge.phtml
index dcb6d13..e6835f9 100644
--- a/src/UnicaenValidation/View/Helper/partial/validation-badge.phtml
+++ b/src/UnicaenValidation/View/Helper/partial/validation-badge.phtml
@@ -12,7 +12,7 @@ $texte = (isset($options['texte']) AND $options['texte'] === true);
 ?>
 
 <?php if ($validation !== null) : ?>
-    <?php if ($validation->getValeur() === null) : ?>
+    <?php if (!$validation->isRefus()) : ?>
         <span class="icon ok" style="color: darkgreen;"
               data-bs-toggle="tooltip" data-bs-html="true"
               title="Validé le <span class='highlight date'> <?php echo $validation->getHistoCreation()->format('d/m/Y'); ?> </span> par <span class='highlight agent'> <?php echo $validation->getHistoCreateur()->getDisplayName(); ?>">
diff --git a/view/unicaen-validation/validation-instance/index.phtml b/view/unicaen-validation/validation-instance/index.phtml
index 7cc3cf9..65e91b6 100644
--- a/view/unicaen-validation/validation-instance/index.phtml
+++ b/view/unicaen-validation/validation-instance/index.phtml
@@ -70,7 +70,7 @@ $canAfficherType = $this->isAllowed(ValidationTypePrivileges::getResourceId(Vali
         <?php foreach ($instances as $instance) : ?>
             <tr class="<?php if ($instance->estHistorise()) echo "historise"; ?>">
                 <td> <?php echo $instance->getType()->getCode(); ?> </td>
-                <td> <?php echo $instance->getValeur(); ?> </td>
+                <td> <?php echo $instance->isRefus()?"Refus":"Validé"; ?> </td>
                 <td> <?php echo $instance->getHistoModification()->format('d/m/Y à H:i:s'); ?> </td>
                 <td> <?php echo $instance->getHistoModificateur()->getDisplayName(); ?> </td>
                 <td  class="action">
-- 
GitLab