Skip to content
Snippets Groups Projects
Commit 303323af authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Ajout décorateurs

parent 1850399d
No related branches found
No related tags found
No related merge requests found
Pipeline #38825 failed
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
namespace UnicaenValidation\Entity; namespace UnicaenValidation\Entity;
use UnicaenValidation\Entity\Db\ValidationInstance; use UnicaenValidation\Entity\Db\ValidationInstance;
use Doctrine\ORM\QueryBuilder;
interface HasValidationsInterface { interface HasValidationsInterface {
...@@ -12,4 +13,5 @@ interface HasValidationsInterface { ...@@ -12,4 +13,5 @@ interface HasValidationsInterface {
public function getValidationsByTypeCode(string $typeCode) : array ; public function getValidationsByTypeCode(string $typeCode) : array ;
public function getValidationActiveByTypeCode(string $typeCode) : ?ValidationInstance; public function getValidationActiveByTypeCode(string $typeCode) : ?ValidationInstance;
static public function decorateWithValidations(QueryBuilder $qb, string $entityName, array $validations = []) : QueryBuilder;
} }
\ No newline at end of file
...@@ -4,6 +4,7 @@ namespace UnicaenValidation\Entity; ...@@ -4,6 +4,7 @@ namespace UnicaenValidation\Entity;
use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\QueryBuilder;
use UnicaenValidation\Entity\Db\ValidationInstance; use UnicaenValidation\Entity\Db\ValidationInstance;
trait HasValidationsTrait { trait HasValidationsTrait {
...@@ -62,6 +63,20 @@ trait HasValidationsTrait { ...@@ -62,6 +63,20 @@ trait HasValidationsTrait {
} }
return null; 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;
}
......
...@@ -226,7 +226,7 @@ class ValidationInstanceService { ...@@ -226,7 +226,7 @@ class ValidationInstanceService {
return $instance; 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) //historisation de l'état actif actuel (s'il existe)
$validationActive = $element->getValidationActiveByTypeCode($code); $validationActive = $element->getValidationActiveByTypeCode($code);
...@@ -245,6 +245,6 @@ class ValidationInstanceService { ...@@ -245,6 +245,6 @@ class ValidationInstanceService {
} catch (ORMException $e) { } catch (ORMException $e) {
throw new RuntimeException("Un problème est survenu lors de l'ajout de actif de [".get_class($element)."]",0,$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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment