Commit 27a9122b authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Debut de la recup pour le sup et l'aut

parent 4f8b5435
Loading
Loading
Loading
Loading
+43 −0
Original line number Diff line number Diff line
@@ -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;

@@ -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
+75 −0
Original line number Diff line number Diff line
@@ -49,7 +49,9 @@ return [
                [
                    'controller' => IndexController::class,
                    'action' => [
                        'apropos',
                        'index',
                        'contact',
                    ],
                    'roles' => [],
                ],
@@ -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',
                            ],
                        ],
                    ],
                ],
            ],
@@ -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,
                    ],
                ],
            ],
        ],
+1 −1
Original line number Diff line number Diff line
@@ -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,
+10 −0
Original line number Diff line number Diff line
@@ -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
+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