Loading module/Application/src/Application/Service/Agent/AgentService.php +43 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ use Structure\Entity\Db\StructureResponsable; use Structure\Service\Structure\StructureServiceAwareTrait; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenUtilisateur\Entity\Db\Role; use UnicaenUtilisateur\Entity\Db\User; use UnicaenUtilisateur\Service\User\UserServiceAwareTrait; Loading Loading @@ -692,4 +693,46 @@ class AgentService { } return $result; } /** * @return Agent[] */ public function getAgentsByResponsabilite(?User $user, ?Role $role) : array { $agent = $this->getAgentByUser($user); if ($role->getRoleId() === Agent::ROLE_SUPERIEURE) { $qb = $this->getComplementService()->createQueryBuilder() ->select('complement.attachmentId') ->andWhere('complement.type = :type')->setParameter('type', 'RESPONSABLE_HIERARCHIQUE') ->andWhere('complement.complementId = :agentId')->setParameter('agentId', $agent->getId()) ; $resultId = $qb->getQuery()->getResult(); $result = $this->getAgentsByIds($resultId); return $result; } if ($role->getRoleId() === Agent::ROLE_AUTORITE) { $qb = $this->getComplementService()->createQueryBuilder() ->select('complement.attachmentId') ->andWhere('complement.type = :type')->setParameter('type', 'AUTORITE_HIERARCHIQUE') ->andWhere('complement.complementId = :agentId')->setParameter('agentId', $agent->getId()) ; $resultId = $qb->getQuery()->getResult(); $result = $this->getAgentsByIds($resultId); return $result; } return []; } private function getAgentsByIds(array $ids) { $qb = $this->createQueryBuilder() ->andWhere('agent.id in (:ids)')->setParameter('ids', $ids); $result = $qb->getQuery()->getResult(); return $result; } } No newline at end of file module/Formation/config/module.config.php +75 −0 Original line number Diff line number Diff line Loading @@ -49,7 +49,9 @@ return [ [ 'controller' => IndexController::class, 'action' => [ 'apropos', 'index', 'contact', ], 'roles' => [], ], Loading Loading @@ -118,6 +120,27 @@ return [ 'action' => 'index', ], ], 'may_terminate' => true, ], 'apropos' => [ 'type' => Literal::class, 'options' => [ 'route' => '/mes-formations-apropos', 'defaults' => [ 'controller' => IndexController::class, 'action' => 'apropos', ], ], ], 'contact' => [ 'type' => Literal::class, 'options' => [ 'route' => '/mes-formations-contact', 'defaults' => [ 'controller' => IndexController::class, 'action' => 'contact', ], ], ], ], ], Loading @@ -130,6 +153,58 @@ return [ 'label' => _("Accueil"), 'route' => 'home', 'pages' => [ 'apropos' => [ 'label' => _("À propos"), 'title' => _("À propos de cette application"), 'route' => 'mes-formations/apropos', 'class' => 'apropos', 'visible' => false, 'footer' => true, // propriété maison pour inclure cette page dans le menu de pied de page 'sitemap' => true, // propriété maison pour inclure cette page dans le plan 'order' => 1001, ], 'contact' => [ 'label' => _("Contact"), 'title' => _("Contact concernant l'application"), 'route' => 'contact', 'class' => 'contact', 'visible' => false, 'footer' => true, // propriété maison pour inclure cette page dans le menu de pied de page 'sitemap' => true, // propriété maison pour inclure cette page dans le plan 'resource' => 'controller/UnicaenApp\Controller\Application:contact', 'order' => 1002, ], // 'plan' => [ // 'label' => _("Plan de navigation"), // 'title' => _("Plan de navigation au sein de l'application"), // 'route' => 'plan', // 'class' => 'plan', // 'visible' => false, // 'footer' => true, // propriété maison pour inclure cette page dans le menu de pied de page // 'sitemap' => true, // propriété maison pour inclure cette page dans le plan // 'resource' => 'controller/UnicaenApp\Controller\Application:plan', // 'order' => 1003, // ], 'mentions-legales' => [ 'label' => _("Mentions légales"), 'title' => _("Mentions légales"), 'uri' => 'http://www.unicaen.fr/acces-direct/mentions-legales/', 'class' => 'ml', 'visible' => false, 'footer' => true, // propriété maison pour inclure cette page dans le menu de pied de page 'sitemap' => true, // propriété maison pour inclure cette page dans le plan 'order' => 1004, ], 'informatique-et-libertes' => [ 'label' => _("Vie privée"), 'title' => _("Vie privée"), 'uri' => 'http://www.unicaen.fr/acces-direct/vie-privee/', 'class' => 'il', 'visible' => false, 'footer' => true, // propriété maison pour inclure cette page dans le menu de pied de page 'sitemap' => true, // propriété maison pour inclure cette page dans le plan 'order' => 1005, ], ], ], ], Loading module/Formation/src/Formation/Controller/AgentController.php +1 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ class AgentController extends AbstractActionController { $user = $this->getUserService()->getConnectedUser(); $role = $this->getUserService()->getConnectedRole(); $agents = []; //$this->getAgentService()->getAgentsByResponsabilite($user, $role); $agents = $this->getAgentService()->getAgentsByResponsabilite($user, $role); return new ViewModel([ 'user' => $user, 'role' => $role, Loading module/Formation/src/Formation/Controller/IndexController.php +10 −0 Original line number Diff line number Diff line Loading @@ -34,4 +34,14 @@ class IndexController extends AbstractActionController { 'role' => $this->getUserService()->getConnectedRole(), ]); } public function aproposAction() : ViewModel { return new ViewModel([]); } public function contactAction() : ViewModel { return new ViewModel([]); } } No newline at end of file module/Formation/view/formation/agent/mes-agents.phtml +19 −0 Original line number Diff line number Diff line <?php use Application\Entity\Db\Agent; /** * @see \Formation\Controller\AgentController::mesAgentsAction() * @var Agent[] $agents */ $a = true; ?> <ul> <?php foreach ($agents as $agent) : ?> <li> <?php echo $agent->getDenomination(); ?> </li> <?php endforeach; ?> </ul> Loading
module/Application/src/Application/Service/Agent/AgentService.php +43 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ use Structure\Entity\Db\StructureResponsable; use Structure\Service\Structure\StructureServiceAwareTrait; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenUtilisateur\Entity\Db\Role; use UnicaenUtilisateur\Entity\Db\User; use UnicaenUtilisateur\Service\User\UserServiceAwareTrait; Loading Loading @@ -692,4 +693,46 @@ class AgentService { } return $result; } /** * @return Agent[] */ public function getAgentsByResponsabilite(?User $user, ?Role $role) : array { $agent = $this->getAgentByUser($user); if ($role->getRoleId() === Agent::ROLE_SUPERIEURE) { $qb = $this->getComplementService()->createQueryBuilder() ->select('complement.attachmentId') ->andWhere('complement.type = :type')->setParameter('type', 'RESPONSABLE_HIERARCHIQUE') ->andWhere('complement.complementId = :agentId')->setParameter('agentId', $agent->getId()) ; $resultId = $qb->getQuery()->getResult(); $result = $this->getAgentsByIds($resultId); return $result; } if ($role->getRoleId() === Agent::ROLE_AUTORITE) { $qb = $this->getComplementService()->createQueryBuilder() ->select('complement.attachmentId') ->andWhere('complement.type = :type')->setParameter('type', 'AUTORITE_HIERARCHIQUE') ->andWhere('complement.complementId = :agentId')->setParameter('agentId', $agent->getId()) ; $resultId = $qb->getQuery()->getResult(); $result = $this->getAgentsByIds($resultId); return $result; } return []; } private function getAgentsByIds(array $ids) { $qb = $this->createQueryBuilder() ->andWhere('agent.id in (:ids)')->setParameter('ids', $ids); $result = $qb->getQuery()->getResult(); return $result; } } No newline at end of file
module/Formation/config/module.config.php +75 −0 Original line number Diff line number Diff line Loading @@ -49,7 +49,9 @@ return [ [ 'controller' => IndexController::class, 'action' => [ 'apropos', 'index', 'contact', ], 'roles' => [], ], Loading Loading @@ -118,6 +120,27 @@ return [ 'action' => 'index', ], ], 'may_terminate' => true, ], 'apropos' => [ 'type' => Literal::class, 'options' => [ 'route' => '/mes-formations-apropos', 'defaults' => [ 'controller' => IndexController::class, 'action' => 'apropos', ], ], ], 'contact' => [ 'type' => Literal::class, 'options' => [ 'route' => '/mes-formations-contact', 'defaults' => [ 'controller' => IndexController::class, 'action' => 'contact', ], ], ], ], ], Loading @@ -130,6 +153,58 @@ return [ 'label' => _("Accueil"), 'route' => 'home', 'pages' => [ 'apropos' => [ 'label' => _("À propos"), 'title' => _("À propos de cette application"), 'route' => 'mes-formations/apropos', 'class' => 'apropos', 'visible' => false, 'footer' => true, // propriété maison pour inclure cette page dans le menu de pied de page 'sitemap' => true, // propriété maison pour inclure cette page dans le plan 'order' => 1001, ], 'contact' => [ 'label' => _("Contact"), 'title' => _("Contact concernant l'application"), 'route' => 'contact', 'class' => 'contact', 'visible' => false, 'footer' => true, // propriété maison pour inclure cette page dans le menu de pied de page 'sitemap' => true, // propriété maison pour inclure cette page dans le plan 'resource' => 'controller/UnicaenApp\Controller\Application:contact', 'order' => 1002, ], // 'plan' => [ // 'label' => _("Plan de navigation"), // 'title' => _("Plan de navigation au sein de l'application"), // 'route' => 'plan', // 'class' => 'plan', // 'visible' => false, // 'footer' => true, // propriété maison pour inclure cette page dans le menu de pied de page // 'sitemap' => true, // propriété maison pour inclure cette page dans le plan // 'resource' => 'controller/UnicaenApp\Controller\Application:plan', // 'order' => 1003, // ], 'mentions-legales' => [ 'label' => _("Mentions légales"), 'title' => _("Mentions légales"), 'uri' => 'http://www.unicaen.fr/acces-direct/mentions-legales/', 'class' => 'ml', 'visible' => false, 'footer' => true, // propriété maison pour inclure cette page dans le menu de pied de page 'sitemap' => true, // propriété maison pour inclure cette page dans le plan 'order' => 1004, ], 'informatique-et-libertes' => [ 'label' => _("Vie privée"), 'title' => _("Vie privée"), 'uri' => 'http://www.unicaen.fr/acces-direct/vie-privee/', 'class' => 'il', 'visible' => false, 'footer' => true, // propriété maison pour inclure cette page dans le menu de pied de page 'sitemap' => true, // propriété maison pour inclure cette page dans le plan 'order' => 1005, ], ], ], ], Loading
module/Formation/src/Formation/Controller/AgentController.php +1 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ class AgentController extends AbstractActionController { $user = $this->getUserService()->getConnectedUser(); $role = $this->getUserService()->getConnectedRole(); $agents = []; //$this->getAgentService()->getAgentsByResponsabilite($user, $role); $agents = $this->getAgentService()->getAgentsByResponsabilite($user, $role); return new ViewModel([ 'user' => $user, 'role' => $role, Loading
module/Formation/src/Formation/Controller/IndexController.php +10 −0 Original line number Diff line number Diff line Loading @@ -34,4 +34,14 @@ class IndexController extends AbstractActionController { 'role' => $this->getUserService()->getConnectedRole(), ]); } public function aproposAction() : ViewModel { return new ViewModel([]); } public function contactAction() : ViewModel { return new ViewModel([]); } } No newline at end of file
module/Formation/view/formation/agent/mes-agents.phtml +19 −0 Original line number Diff line number Diff line <?php use Application\Entity\Db\Agent; /** * @see \Formation\Controller\AgentController::mesAgentsAction() * @var Agent[] $agents */ $a = true; ?> <ul> <?php foreach ($agents as $agent) : ?> <li> <?php echo $agent->getDenomination(); ?> </li> <?php endforeach; ?> </ul>