Loading config/merged/validation-instance.config.php +17 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,13 @@ return [ 'bjyauthorize' => [ 'guards' => [ PrivilegeController::class => [ [ 'controller' => ValidationInstanceController::class, 'action' => [ 'rechercher-validateur', ], 'roles' => [], ], [ 'controller' => ValidationInstanceController::class, 'action' => [ Loading Loading @@ -129,6 +136,16 @@ return [ ], ], ], 'rechercher-validateur' => [ 'type' => Literal::class, 'options' => [ 'route' => '/rechercher-validateur', 'defaults' => [ 'controller' => ValidationInstanceController::class, 'action' => 'rechercher-validateur', ], ], ], ], ], ], Loading src/UnicaenValidation/Controller/ValidationInstanceController.php +27 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,8 @@ namespace UnicaenValidation\Controller; use Laminas\Http\Response; use Laminas\View\Model\JsonModel; use UnicaenUtilisateur\Entity\Db\User; use UnicaenValidation\Entity\Db\ValidationInstance; use UnicaenValidation\Form\ValidationInstance\ValidationInstanceFormAwareTrait; use UnicaenValidation\Service\ValidationInstance\ValidationInstanceServiceAwareTrait; Loading @@ -18,10 +20,15 @@ class ValidationInstanceController extends AbstractActionController { public function indexAction() : ViewModel { $instances = $this->getValidationInstanceService()->getValidationsInstances(); $params = $this->params()->fromQuery(); $instances = $this->getValidationInstanceService()->getValidationsInstancesWithFiltre($params); $types = $this->getValidationTypeService()->getValidationsTypes(); return new ViewModel([ 'instances' => $instances, 'types' => $types, 'params' => $params, ]); } Loading Loading @@ -120,4 +127,23 @@ class ValidationInstanceController extends AbstractActionController { } return $vm; } public function rechercherValidateurAction() { if (($term = $this->params()->fromQuery('term'))) { /** @var User $validateurs */ $validateurs = $this->getValidationInstanceService()->findValidateurByTerm($term); foreach ($validateurs as $validateur) { $result[] = array( 'id' => $validateur->getHistoCreateur()->getId(), 'label' => $validateur->getHistoCreateur()->getDisplayName(), ); } usort($result, function ($a, $b) { return strcmp($a['label'], $b['label']); }); return new JsonModel($result); } exit; } } src/UnicaenValidation/Entity/Db/Mapping/UnicaenValidation.Entity.Db.ValidationInstance.dcm.xml +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ </many-to-one> <field name="valeur" type="string" column="valeur" nullable="true"/> <field name="justification" type="string" column="justification" nullable="true"/> <field name="histoCreation" type="datetime" column="histo_creation" nullable="false"/> <field name="histoModification" type="datetime" column="histo_modification" nullable="false"/> Loading src/UnicaenValidation/Entity/Db/ValidationInstance.php +43 −2 Original line number Diff line number Diff line Loading @@ -2,8 +2,8 @@ namespace UnicaenValidation\Entity\Db; use UnicaenUtilisateur\Entity\HistoriqueAwareInterface; use UnicaenUtilisateur\Entity\HistoriqueAwareTrait; use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface; use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait; class ValidationInstance implements HistoriqueAwareInterface { use HistoriqueAwareTrait; Loading @@ -11,6 +11,7 @@ class ValidationInstance implements HistoriqueAwareInterface { private int $id; private ?ValidationType $type = null; private ?string $valeur = null; private ?string $justification = null; /** * @return int Loading Loading @@ -56,6 +57,22 @@ class ValidationInstance implements HistoriqueAwareInterface { return $this; } /** * @return string|null */ public function getJustification(): ?string { return $this->justification; } /** * @param string|null $justification */ public function setJustification(?string $justification): void { $this->justification = $justification; } public function generateTooltipText() : string { $text = "Validation effectuée<br/>"; Loading @@ -63,4 +80,28 @@ class ValidationInstance implements HistoriqueAwareInterface { $text .= "le <span class='date'>".$this->getHistoModification()->format('d/m/Y')."</span>"; return $text; } /** toString functions */ public function toStringDate() : string { return $this->getHistoCreation()->format('d/m/Y à H:i'); } public function toStringJustification() : string { if ($this->getJustification() === null) return "Aucune justification associée à la validation"; return $this->getJustification(); } public function toStringValeur() : string { if ($this->getValeur() === null) return "Aucune valeur associée à la validation"; return $this->getValeur(); } public function toStringValidateur() : string { return $this->getHistoCreateur()->getDisplayName(); } } No newline at end of file src/UnicaenValidation/Service/ValidationInstance/ValidationInstanceService.php +42 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ 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\Service\ValidationType\ValidationTypeServiceAwareTrait; Loading Loading @@ -158,6 +159,47 @@ class ValidationInstanceService { return $result; } /** * @param ?string $term * @return User[] */ public function findValidateurByTerm(?string $term) : array { $qb = $this->createQueryBuilder() ->andWhere("LOWER(createur.displayName) like :search") ->setParameter('search', '%'.strtolower($term).'%'); $result = $qb->getQuery()->getResult(); $validateurs = []; /** @var $item */ foreach ($result as $item) { $validateurs[$item->getHistoCreateur()->getId()] = $item; } return $validateurs; } /** * @param array $params * @return ValidationInstance[] */ public function getValidationsInstancesWithFiltre(array $params) : array { $qb = $this->createQueryBuilder(); if (isset($params['reponse']) AND $params['reponse'] !== '') { $qb = $qb->andWhere('vinstance.valeur = :reponse')->setParameter('reponse', $params['reponse']); } if (isset($params['type']) AND $params['type'] !== '') { $qb = $qb->andWhere('vtype.code = :code')->setParameter('code', $params['type']); } if (isset($params['validateur']) AND isset($params['validateur']['id']) AND $params['validateur']['id'] !== '') { $id = ((int) $params['validateur']['id']); $qb = $qb->andWhere('createur.id = :id')->setParameter('id', $id); } $result = $qb->getQuery()->getResult(); return $result; } /** FACADE ********************************************************************************************************/ /** Loading Loading
config/merged/validation-instance.config.php +17 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,13 @@ return [ 'bjyauthorize' => [ 'guards' => [ PrivilegeController::class => [ [ 'controller' => ValidationInstanceController::class, 'action' => [ 'rechercher-validateur', ], 'roles' => [], ], [ 'controller' => ValidationInstanceController::class, 'action' => [ Loading Loading @@ -129,6 +136,16 @@ return [ ], ], ], 'rechercher-validateur' => [ 'type' => Literal::class, 'options' => [ 'route' => '/rechercher-validateur', 'defaults' => [ 'controller' => ValidationInstanceController::class, 'action' => 'rechercher-validateur', ], ], ], ], ], ], Loading
src/UnicaenValidation/Controller/ValidationInstanceController.php +27 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,8 @@ namespace UnicaenValidation\Controller; use Laminas\Http\Response; use Laminas\View\Model\JsonModel; use UnicaenUtilisateur\Entity\Db\User; use UnicaenValidation\Entity\Db\ValidationInstance; use UnicaenValidation\Form\ValidationInstance\ValidationInstanceFormAwareTrait; use UnicaenValidation\Service\ValidationInstance\ValidationInstanceServiceAwareTrait; Loading @@ -18,10 +20,15 @@ class ValidationInstanceController extends AbstractActionController { public function indexAction() : ViewModel { $instances = $this->getValidationInstanceService()->getValidationsInstances(); $params = $this->params()->fromQuery(); $instances = $this->getValidationInstanceService()->getValidationsInstancesWithFiltre($params); $types = $this->getValidationTypeService()->getValidationsTypes(); return new ViewModel([ 'instances' => $instances, 'types' => $types, 'params' => $params, ]); } Loading Loading @@ -120,4 +127,23 @@ class ValidationInstanceController extends AbstractActionController { } return $vm; } public function rechercherValidateurAction() { if (($term = $this->params()->fromQuery('term'))) { /** @var User $validateurs */ $validateurs = $this->getValidationInstanceService()->findValidateurByTerm($term); foreach ($validateurs as $validateur) { $result[] = array( 'id' => $validateur->getHistoCreateur()->getId(), 'label' => $validateur->getHistoCreateur()->getDisplayName(), ); } usort($result, function ($a, $b) { return strcmp($a['label'], $b['label']); }); return new JsonModel($result); } exit; } }
src/UnicaenValidation/Entity/Db/Mapping/UnicaenValidation.Entity.Db.ValidationInstance.dcm.xml +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ </many-to-one> <field name="valeur" type="string" column="valeur" nullable="true"/> <field name="justification" type="string" column="justification" nullable="true"/> <field name="histoCreation" type="datetime" column="histo_creation" nullable="false"/> <field name="histoModification" type="datetime" column="histo_modification" nullable="false"/> Loading
src/UnicaenValidation/Entity/Db/ValidationInstance.php +43 −2 Original line number Diff line number Diff line Loading @@ -2,8 +2,8 @@ namespace UnicaenValidation\Entity\Db; use UnicaenUtilisateur\Entity\HistoriqueAwareInterface; use UnicaenUtilisateur\Entity\HistoriqueAwareTrait; use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface; use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait; class ValidationInstance implements HistoriqueAwareInterface { use HistoriqueAwareTrait; Loading @@ -11,6 +11,7 @@ class ValidationInstance implements HistoriqueAwareInterface { private int $id; private ?ValidationType $type = null; private ?string $valeur = null; private ?string $justification = null; /** * @return int Loading Loading @@ -56,6 +57,22 @@ class ValidationInstance implements HistoriqueAwareInterface { return $this; } /** * @return string|null */ public function getJustification(): ?string { return $this->justification; } /** * @param string|null $justification */ public function setJustification(?string $justification): void { $this->justification = $justification; } public function generateTooltipText() : string { $text = "Validation effectuée<br/>"; Loading @@ -63,4 +80,28 @@ class ValidationInstance implements HistoriqueAwareInterface { $text .= "le <span class='date'>".$this->getHistoModification()->format('d/m/Y')."</span>"; return $text; } /** toString functions */ public function toStringDate() : string { return $this->getHistoCreation()->format('d/m/Y à H:i'); } public function toStringJustification() : string { if ($this->getJustification() === null) return "Aucune justification associée à la validation"; return $this->getJustification(); } public function toStringValeur() : string { if ($this->getValeur() === null) return "Aucune valeur associée à la validation"; return $this->getValeur(); } public function toStringValidateur() : string { return $this->getHistoCreateur()->getDisplayName(); } } No newline at end of file
src/UnicaenValidation/Service/ValidationInstance/ValidationInstanceService.php +42 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ 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\Service\ValidationType\ValidationTypeServiceAwareTrait; Loading Loading @@ -158,6 +159,47 @@ class ValidationInstanceService { return $result; } /** * @param ?string $term * @return User[] */ public function findValidateurByTerm(?string $term) : array { $qb = $this->createQueryBuilder() ->andWhere("LOWER(createur.displayName) like :search") ->setParameter('search', '%'.strtolower($term).'%'); $result = $qb->getQuery()->getResult(); $validateurs = []; /** @var $item */ foreach ($result as $item) { $validateurs[$item->getHistoCreateur()->getId()] = $item; } return $validateurs; } /** * @param array $params * @return ValidationInstance[] */ public function getValidationsInstancesWithFiltre(array $params) : array { $qb = $this->createQueryBuilder(); if (isset($params['reponse']) AND $params['reponse'] !== '') { $qb = $qb->andWhere('vinstance.valeur = :reponse')->setParameter('reponse', $params['reponse']); } if (isset($params['type']) AND $params['type'] !== '') { $qb = $qb->andWhere('vtype.code = :code')->setParameter('code', $params['type']); } if (isset($params['validateur']) AND isset($params['validateur']['id']) AND $params['validateur']['id'] !== '') { $id = ((int) $params['validateur']['id']); $qb = $qb->andWhere('createur.id = :id')->setParameter('id', $id); } $result = $qb->getQuery()->getResult(); return $result; } /** FACADE ********************************************************************************************************/ /** Loading