diff --git a/src/UnicaenValidation/Entity/HasValidationsInterface.php b/src/UnicaenValidation/Entity/HasValidationsInterface.php index 59ff8f9704db12b9ba915caaf0151541c1dd17e3..778b3269950fb806096d988ced639dc7f24ddd4c 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 b1a9f58ef4ecde4daaa5bb423b64f4ed5358fe19..3c3c8c292cb2f2ab4e9c1d09e74d1bbd2d9d2bde 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 10d291d2c5300dddf7b4fe0d9e8781b1219f94d3..37cfd4349593f4cc2cd010895dbe1af3fdaf863f 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