Commit 303323af authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Ajout décorateurs

parent 1850399d
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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
+15 −0
Original line number Diff line number Diff line
@@ -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;
    }



+2 −2
Original line number Diff line number Diff line
@@ -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