From 303323af66f77fb3c8f527cc2425ec3908c9da89 Mon Sep 17 00:00:00 2001
From: Jean-Philippe Metivier <jean-philippe.metivier@unicaen.fr>
Date: Wed, 5 Feb 2025 17:01:09 +0100
Subject: [PATCH] =?UTF-8?q?Ajout=20d=C3=A9corateurs?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../Entity/HasValidationsInterface.php            |  2 ++
 .../Entity/HasValidationsTrait.php                | 15 +++++++++++++++
 .../ValidationInstanceService.php                 |  4 ++--
 3 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/src/UnicaenValidation/Entity/HasValidationsInterface.php b/src/UnicaenValidation/Entity/HasValidationsInterface.php
index 59ff8f9..778b326 100644
--- a/src/UnicaenValidation/Entity/HasValidationsInterface.php
+++ b/src/UnicaenValidation/Entity/HasValidationsInterface.php
@@ -3,6 +3,7 @@
 namespace UnicaenValidation\Entity;
 
 use UnicaenValidation\Entity\Db\ValidationInstance;
+use Doctrine\ORM\QueryBuilder;
 
 interface HasValidationsInterface {
 
@@ -12,4 +13,5 @@ interface HasValidationsInterface {
     public function getValidationsByTypeCode(string $typeCode) : array ;
     public function getValidationActiveByTypeCode(string $typeCode) : ?ValidationInstance;
 
+    static public function decorateWithValidations(QueryBuilder $qb, string $entityName,  array $validations = []) : QueryBuilder;
 }
\ No newline at end of file
diff --git a/src/UnicaenValidation/Entity/HasValidationsTrait.php b/src/UnicaenValidation/Entity/HasValidationsTrait.php
index b1a9f58..3c3c8c2 100644
--- a/src/UnicaenValidation/Entity/HasValidationsTrait.php
+++ b/src/UnicaenValidation/Entity/HasValidationsTrait.php
@@ -4,6 +4,7 @@ namespace UnicaenValidation\Entity;
 
 use Doctrine\Common\Collections\ArrayCollection;
 use Doctrine\Common\Collections\Collection;
+use Doctrine\ORM\QueryBuilder;
 use UnicaenValidation\Entity\Db\ValidationInstance;
 
 trait HasValidationsTrait {
@@ -62,6 +63,20 @@ trait HasValidationsTrait {
         }
         return null;
     }
+    static public function decorateWithValidations(QueryBuilder $qb, string $entityName,  array $validations = []) : QueryBuilder
+    {
+        $qb = $qb
+            ->leftJoin($entityName . '.validations', 'validation')->addSelect('validation')
+            ->leftJoin('validation.type', 'validationtype')->addSelect('validationtype')
+            ->andWhere('validation.histoDestruction IS NULL')
+        ;
+
+        if (!empty($validations)) {
+            $qb = $qb->andWhere('validation.type in (:etats)')
+                ->setParameter('validations', $validations);
+        }
+        return $qb;
+    }
 
 
 
diff --git a/src/UnicaenValidation/Service/ValidationInstance/ValidationInstanceService.php b/src/UnicaenValidation/Service/ValidationInstance/ValidationInstanceService.php
index 10d291d..37cfd43 100644
--- a/src/UnicaenValidation/Service/ValidationInstance/ValidationInstanceService.php
+++ b/src/UnicaenValidation/Service/ValidationInstance/ValidationInstanceService.php
@@ -226,7 +226,7 @@ class ValidationInstanceService {
         return $instance;
     }
 
-    public function setValidationActive(HasValidationsInterface $element, string $code, bool $refus = false, ?string $justification = null) : HasValidationsInterface
+    public function setValidationActive(HasValidationsInterface $element, string $code, bool $refus = false, ?string $justification = null) : ValidationInstance
     {
         //historisation de l'état actif actuel (s'il existe)
         $validationActive = $element->getValidationActiveByTypeCode($code);
@@ -245,6 +245,6 @@ class ValidationInstanceService {
         } catch (ORMException $e) {
             throw new RuntimeException("Un problème est survenu lors de l'ajout de  actif de [".get_class($element)."]",0,$e);
         }
-        return $element;
+        return $validation;
     }
 }
\ No newline at end of file
-- 
GitLab