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

Service

parent b7585fbb
Branches
Tags
No related merge requests found
...@@ -2,14 +2,16 @@ ...@@ -2,14 +2,16 @@
namespace UnicaenValidation\Service\ValidationInstance; namespace UnicaenValidation\Service\ValidationInstance;
use Doctrine\ORM\Exception\NotSupported;
use Doctrine\ORM\Exception\ORMException;
use Doctrine\ORM\NonUniqueResultException; use Doctrine\ORM\NonUniqueResultException;
use Doctrine\ORM\ORMException;
use Doctrine\ORM\QueryBuilder; use Doctrine\ORM\QueryBuilder;
use Laminas\Mvc\Controller\AbstractActionController; use Laminas\Mvc\Controller\AbstractActionController;
use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Exception\RuntimeException;
use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenApp\Service\EntityManagerAwareTrait;
use UnicaenUtilisateur\Entity\Db\User; use UnicaenUtilisateur\Entity\Db\User;
use UnicaenValidation\Entity\Db\ValidationInstance; use UnicaenValidation\Entity\Db\ValidationInstance;
use UnicaenValidation\Entity\HasValidationsInterface;
use UnicaenValidation\Service\ValidationType\ValidationTypeServiceAwareTrait; use UnicaenValidation\Service\ValidationType\ValidationTypeServiceAwareTrait;
class ValidationInstanceService { class ValidationInstanceService {
...@@ -105,11 +107,14 @@ class ValidationInstanceService { ...@@ -105,11 +107,14 @@ class ValidationInstanceService {
*/ */
public function createQueryBuilder() : QueryBuilder public function createQueryBuilder() : QueryBuilder
{ {
try {
$qb = $this->getEntityManager()->getRepository(ValidationInstance::class)->createQueryBuilder('vinstance') $qb = $this->getEntityManager()->getRepository(ValidationInstance::class)->createQueryBuilder('vinstance')
->addSelect('createur')->join('vinstance.histoCreateur', 'createur') ->addSelect('createur')->join('vinstance.histoCreateur', 'createur')
->addSelect('modificateur')->join('vinstance.histoModificateur', 'modificateur') ->addSelect('modificateur')->join('vinstance.histoModificateur', 'modificateur')
->addSelect('vtype')->join('vinstance.type', 'vtype') ->addSelect('vtype')->join('vinstance.type', 'vtype');
; } catch (NotSupported $e) {
throw new RuntimeException("Un problème est survenu lors de la création du QueryBuilder [".ValidationInstance::class."]",0,$e);
}
return $qb; return $qb;
} }
...@@ -142,7 +147,7 @@ class ValidationInstanceService { ...@@ -142,7 +147,7 @@ class ValidationInstanceService {
try { try {
$result = $qb->getQuery()->getOneOrNullResult(); $result = $qb->getQuery()->getOneOrNullResult();
} catch (NonUniqueResultException $e) { } catch (NonUniqueResultException $e) {
throw new RuntimeException("Plusieurs ValidationInstance partagent le même id [".$id."]", 0, true); throw new RuntimeException("Plusieurs ValidationInstance partagent le même id [".$id."]", 0, $e);
} }
return $result; return $result;
} }
...@@ -205,6 +210,7 @@ class ValidationInstanceService { ...@@ -205,6 +210,7 @@ class ValidationInstanceService {
/** /**
* @param string $code * @param string $code
* @param string|null $valeur * @param string|null $valeur
* @param string|null $justification
* @return ValidationInstance * @return ValidationInstance
*/ */
public function createWithCode(string $code, ?string $valeur = null, ?string $justification = null) : ValidationInstance public function createWithCode(string $code, ?string $valeur = null, ?string $justification = null) : ValidationInstance
...@@ -219,4 +225,25 @@ class ValidationInstanceService { ...@@ -219,4 +225,25 @@ class ValidationInstanceService {
return $instance; return $instance;
} }
public function setValidationActive(HasValidationsInterface $element, string $code, ?string $value = null) : HasValidationsInterface
{
//historisation de l'état actif actuel (s'il existe)
$validationActive = $element->getValidationActiveByTypeCode($code);
if (isset($validationActive)) {
$this->historise($validationActive);
}
//creation de la nouvelle instance
$validation = $this->createWithCode($code, $value);
//ajout à l'element et persist
$element->addValidation($validation);
try {
$this->getEntityManager()->persist($element);
} 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;
}
} }
\ 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