Commit 1bfb002c authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Ajustement des privilèges et affichages

parent 4939c1c2
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ use Application\Form\Agent\AgentHydratorFactory;
use Application\Provider\Privilege\AgentPrivileges;
use Application\Service\Agent\AgentService;
use Application\Service\Agent\AgentServiceFactory;
use Application\View\Helper\AgentViewHelper;
use UnicaenAuth\Guard\PrivilegeController;
use Zend\Mvc\Router\Http\Literal;
use Zend\Mvc\Router\Http\Segment;
@@ -32,7 +33,7 @@ return [
                [
                    'controller' => AgentController::class,
                    'action' => [
                        'creer',
                        'ajouter',
                    ],
                    'privileges' => [
                        AgentPrivileges::AJOUTER,
@@ -89,7 +90,7 @@ return [
                            'route'    => '/modifier/:id',
                            'defaults' => [
                                'controller' => AgentController::class,
                                'action'     => 'editer',
                                'action'     => 'modifier',
                            ],
                        ],
                    ],
@@ -136,9 +137,15 @@ return [
        ],
    ],
    'hydrators' => [
        'invokable' => [
        'factories' => [
            AgentHydrator::class => AgentHydratorFactory::class,
        ]
    ]
    ],
    'view_helpers' => [
        'invokables' => [
            'agent' => AgentViewHelper::class,
        ],
    ],


];
 No newline at end of file
+0 −86
Original line number Diff line number Diff line
@@ -6,10 +6,6 @@ use Application\Controller\FicheMetier\FicheMetierController;
use Application\Controller\FicheMetier\FicheMetierControllerFactory;
use Application\Controller\FicheMetier\FicheMetierTypeController;
use Application\Controller\FicheMetier\FicheMetierTypeControllerFactory;
use Application\Form\Agent\MissionComplementaireForm;
use Application\Form\Agent\MissionComplementaireFormFactory;
use Application\Form\Agent\MissionComplementaireHydrator;
use Application\Form\Agent\MissionComplementaireHydratorFactory;
use Application\Form\FicheMetier\AssocierAgentForm;
use Application\Form\FicheMetier\AssocierAgentFormFactory;
use Application\Form\FicheMetier\AssocierAgentHydrator;
@@ -34,13 +30,9 @@ use Application\Form\FicheMetierType\LibelleForm;
use Application\Form\FicheMetierType\LibelleFormFactory;
use Application\Form\FicheMetierType\LibelleHydrator;
use Application\Form\FicheMetierType\LibelleHydratorFactory;
use Application\Form\FicheMetierType\MissionsPrincipalesForm;
use Application\Form\FicheMetierType\MissionsPrincipalesFormFactory;
use Application\Form\FicheMetierType\MissionsPrincipalesHydrator;
use Application\Provider\Privilege\FicheMetierPrivileges;
use Application\Service\FicheMetier\FicheMetierService;
use Application\Service\FicheMetier\FicheMetierServiceFactory;
use Application\View\Helper\PosteViewHelper;
use Application\View\Helper\SpecificitePosteViewHelper;
use UnicaenAuth\Guard\PrivilegeController;
use Zend\Mvc\Router\Http\Literal;
@@ -62,12 +54,6 @@ return [
                    'controller' => FicheMetierController::class,
                    'action' => [
                        'afficher',
                        'afficher-agent',
                        'saisie-manuelle-agent',
                        'lister-agents',
                        'ajouter-mission-complementaire',
                        'editer-mission-complementaire',
                        'supprimer-mission-complementaire',
                        'editer-specificite-poste',
                        'associer-metier-type',
                        'associer-agent',
@@ -232,71 +218,6 @@ return [
                            ],
                        ],
                    ],
                    'agent' => [
                        'type'  => Literal::class,
                        'options' => [
                            'route'    => '/agent',
                            'defaults' => [
                                'controller' => FicheMetierController::class,
                                'action'     => 'lister-agents',
                            ],
                        ],
                    ],
                    'afficher-agent' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/afficher-agent/:id',
                            'defaults' => [
                                'controller' => FicheMetierController::class,
                                'action'     => 'afficher-agent',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                    'saisie-manuelle-agent' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/saisie-manuelle-agent/:id',
                            'defaults' => [
                                'controller' => FicheMetierController::class,
                                'action'     => 'saisie-manuelle-agent',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                    'ajouter-mission-complementaire' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/ajouter-mission-complementaire/:agent',
                            'defaults' => [
                                'controller' => FicheMetierController::class,
                                'action'     => 'ajouter-mission-complementaire',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                    'editer-mission-complementaire' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/editer-mission-complementaire/:id',
                            'defaults' => [
                                'controller' => FicheMetierController::class,
                                'action'     => 'editer-mission-complementaire',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                    'supprimer-mission-complementaire' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/supprimer-mission-complementaire/:id',
                            'defaults' => [
                                'controller' => FicheMetierController::class,
                                'action'     => 'supprimer-mission-complementaire',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                ],
            ],
            'fiche-metier-type' => [
@@ -412,9 +333,7 @@ return [
            ActiviteExistanteForm::class => ActiviteExistanteFormFactory::class,
            FicheMetierCreationForm::class => FicheMetierCreationFormFactory::class,
            LibelleForm::class => LibelleFormFactory::class,
            MissionsPrincipalesForm::class => MissionsPrincipalesFormFactory::class,

            MissionComplementaireForm::class => MissionComplementaireFormFactory::class,
            SpecificitePosteForm::class => SpecificitePosteFormFactory::class,
            AssocierMetierTypeForm::class => AssocierMetierTypeFormFactory::class,
            AssocierAgentForm::class => AssocierAgentFormFactory::class,
@@ -422,13 +341,9 @@ return [
        ],
    ],
    'hydrators' => [
        'invokables' => [
            MissionsPrincipalesHydrator::class => MissionsPrincipalesHydrator::class,
        ],
        'factories' => [
            FicheMetierCreationHydrator::class => FicheMetierCreationHydratorFactory::class,
            LibelleHydrator::class => LibelleHydratorFactory::class,
            MissionComplementaireHydrator::class => MissionComplementaireHydratorFactory::class,
            AssocierMetierTypeHydrator::class => AssocierMetierTypeHydratorFactory::class,
            AssocierAgentHydrator::class => AssocierAgentHydratorFactory::class,
            AssocierPosteHydrator::class => AssocierPosteHydratorFactory::class,
@@ -437,7 +352,6 @@ return [
    'view_helpers' => [
        'invokables' => [
            'specificitePoste' => SpecificitePosteViewHelper::class,
            'poste' => PosteViewHelper::class,
        ],
    ],

+7 −1
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ use Application\Form\Poste\PosteHydratorFactory;
use Application\Provider\Privilege\PostePrivileges;
use Application\Service\Poste\PosteService;
use Application\Service\Poste\PosteServiceFactory;
use Application\View\Helper\PosteViewHelper;
use UnicaenAuth\Guard\PrivilegeController;
use Zend\Mvc\Router\Http\Literal;
use Zend\Mvc\Router\Http\Segment;
@@ -139,6 +140,11 @@ return [
        'factories' => [
            PosteHydrator::class => PosteHydratorFactory::class,
        ]
    ]
    ],
    'view_helpers' => [
        'invokables' => [
            'poste' => PosteViewHelper::class,
        ],
    ],

];
 No newline at end of file
+74 −0
Original line number Diff line number Diff line
@@ -2,7 +2,10 @@

namespace Application\Controller\Agent;

use Application\Entity\Db\Agent;
use Application\Form\Agent\AgentForm;
use Application\Service\Agent\AgentServiceAwareTrait;
use Zend\Http\Request;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

@@ -24,7 +27,78 @@ class AgentController extends AbstractActionController
        $agent = $this->getAgentService()->getAgent($agentId);

        return new ViewModel([
            'title' => 'Afficher l\'agent',
            'agent' => $agent,
        ]);
    }

    public function ajouterAction() {

        /** @var Agent $agent */
        $agent = new Agent();

        /** @var AgentForm $form */
        $form = $this->getServiceLocator()->get('FormElementManager')->get(AgentForm::class);
        $form->setAttribute('action', $this->url()->fromRoute('agent/ajouter', [], [], true));
        $form->bind($agent);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getAgentService()->create($agent);
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('application/default/default-form');
        $vm->setVariables([
            'title' => 'Ajouter un agent',
            'form' => $form,
        ]);
        return $vm;
    }

    public function modifierAction() {

        /** @var Agent $agent */
        $agentId = $this->params()->fromRoute('id');
        $agent = $this->getAgentService()->getAgent($agentId);

        /** @var AgentForm $form */
        $form = $this->getServiceLocator()->get('FormElementManager')->get(AgentForm::class);
        $form->setAttribute('action', $this->url()->fromRoute('agent/modifier', ['id' => $agent->getId()], [], true));
        $form->bind($agent);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getAgentService()->update($agent);
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('application/default/default-form');
        $vm->setVariables([
            'title' => 'Modifier un agent',
            'form' => $form,
        ]);
        return $vm;
    }

    public function supprimerAction() {

        /** @var Agent $agent */
        $agentId = $this->params()->fromRoute('id');
        $agent = $this->getAgentService()->getAgent($agentId);

        $this->getAgentService()->delete($agent);

        $this->redirect()->toRoute('agent', [], [], true);
    }
}
 No newline at end of file
+0 −125
Original line number Diff line number Diff line
@@ -2,12 +2,10 @@

namespace Application\Controller\FicheMetier;

use Application\Entity\Db\Agent;
use Application\Entity\Db\FicheMetier;
use Application\Entity\Db\MissionComplementaire;
use Application\Entity\Db\SpecificitePoste;
use Application\Form\Agent\AgentForm;
use Application\Form\Agent\MissionComplementaireForm;
use Application\Form\FicheMetier\AssocierAgentForm;
use Application\Form\FicheMetier\AssocierMetierTypeForm;
use Application\Form\FicheMetier\AssocierPosteForm;
@@ -108,129 +106,6 @@ class FicheMetierController extends AbstractActionController
        ]);
    }

    /** ACTION ASSOCIÉES À L'AGENT ************************************************************************************/

    public function afficherAgentAction() {

        $ficheId = $this->params()->fromRoute('id');
        $fiche = $this->getFicheMetierService()->getFicheMetier($ficheId);
        $agent = $fiche->getAgent();

        return new ViewModel([
           'agent' => $agent,
        ]);
    }

    public function saisieManuelleAgentAction() {

        $ficheId = $this->params()->fromRoute('id');
        $fiche = $this->getFicheMetierService()->getFicheMetier($ficheId);

        $agent = $fiche->getAgent();
        /** @var AgentForm $form */
        $form = $this->getServiceLocator()->get('FormElementManager')->get(AgentForm::class);
        $form->bind($agent);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getAgentService()->create($agent);
                $this->getFicheMetierService()->update($fiche);
                $this->redirect()->toRoute('fiche-metier/afficher-agent', ['id' => $ficheId], [], true);
            }
        }

        return new ViewModel([
            'form' => $form,
        ]);
    }

    public function listerAgentsAction()
    {
        $agents = $this->getAgentService()->getAgents();

        return new ViewModel([
            'agents' => $agents,
        ]);
    }

    public function ajouterMissionComplementaireAction()
    {
        $agentId = $this->params()->fromRoute('agent');
        $agent = $this->getAgentService()->getAgent($agentId);

        $mission = new MissionComplementaire();

        /** @var MissionComplementaireForm $form */
        $form = $form = $this->getServiceLocator()->get('FormElementManager')->get(MissionComplementaireForm::class);
        $form->setAttribute('action', $this->url()->fromRoute('fiche-metier/ajouter-mission-complementaire', [], [], true));
        $form->bind($mission);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $mission->setAgent($agent);
                $this->getAgentService()->createMissionComplementaire($mission);
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('application/default/default-form');
        $vm->setVariables([
            'title' => 'Ajouter une mission complementaire',
            'form' => $form,
        ]);
        return $vm;


    }

    public function editerMissionComplementaireAction()
    {
        $missionId = $this->params()->fromRoute('id');
        $mission = $this->getAgentService()->getMissionComplementaire($missionId);
        $agent = $mission->getAgent();

        /** @var MissionComplementaireForm $form */
        $form = $this->getServiceLocator()->get('FormElementManager')->get(MissionComplementaireForm::class);
        $form->setAttribute('action', $this->url()->fromRoute('fiche-metier/editer-mission-complementaire', ['id' => $mission->getId()], [], true));
        $form->bind($mission);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $mission->setAgent($agent);
                $this->getAgentService()->updateMissionComplementaire($mission);
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('application/default/default-form');
        $vm->setVariables([
            'title' => 'Éditer une mission complementaire',
            'form' => $form,
        ]);
        return $vm;
    }

    public function supprimerMissionComplementaireAction()
    {
        $missionId = $this->params()->fromRoute('id');
        $mission = $this->getAgentService()->getMissionComplementaire($missionId);

        $this->getAgentService()->deleteMissionComplementaire($mission);
        $this->redirect()->toRoute('fiche-metier/afficher-agent', ['id' => $mission->getAgent()->getId()], [], true);
    }

    /** FICHE METIER TYPE *********************************************************************************************/

    public function associerMetierTypeAction()
Loading