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

Service

parent b7585fbb
No related branches found
No related tags found
No related merge requests found
......@@ -2,14 +2,16 @@
namespace UnicaenValidation\Service\ValidationInstance;
use Doctrine\ORM\Exception\NotSupported;
use Doctrine\ORM\Exception\ORMException;
use Doctrine\ORM\NonUniqueResultException;
use Doctrine\ORM\ORMException;
use Doctrine\ORM\QueryBuilder;
use Laminas\Mvc\Controller\AbstractActionController;
use UnicaenApp\Exception\RuntimeException;
use UnicaenApp\Service\EntityManagerAwareTrait;
use UnicaenUtilisateur\Entity\Db\User;
use UnicaenValidation\Entity\Db\ValidationInstance;
use UnicaenValidation\Entity\HasValidationsInterface;
use UnicaenValidation\Service\ValidationType\ValidationTypeServiceAwareTrait;
class ValidationInstanceService {
......@@ -105,11 +107,14 @@ class ValidationInstanceService {
*/
public function createQueryBuilder() : QueryBuilder
{
try {
$qb = $this->getEntityManager()->getRepository(ValidationInstance::class)->createQueryBuilder('vinstance')
->addSelect('createur')->join('vinstance.histoCreateur', 'createur')
->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;
}
......@@ -142,7 +147,7 @@ class ValidationInstanceService {
try {
$result = $qb->getQuery()->getOneOrNullResult();
} 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;
}
......@@ -205,6 +210,7 @@ class ValidationInstanceService {
/**
* @param string $code
* @param string|null $valeur
* @param string|null $justification
* @return ValidationInstance
*/
public function createWithCode(string $code, ?string $valeur = null, ?string $justification = null) : ValidationInstance
......@@ -219,4 +225,25 @@ class ValidationInstanceService {
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