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