Commit 2d71b199 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Ajout des missions complémentaires

parent 5d8b4da4
Loading
Loading
Loading
Loading
+53 −1
Changes for module/Application/config/merged/fiche-metier.config.php: 53 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -10,6 +10,10 @@ use Application\Form\Agent\AgentForm;
use Application\Form\Agent\AgentFormFactory;
use Application\Form\Agent\AgentHydrator;
use Application\Form\Agent\AgentHydratorFactory;
use Application\Form\Agent\MissionComplementaireForm;
use Application\Form\Agent\MissionComplementaireFormFactory;
use Application\Form\Agent\MissionComplementaireHydrator;
use Application\Form\Agent\MissionComplementaireHydratorFactory;
use Application\Form\FicheMetier\FicheMetierCreationForm;
use Application\Form\FicheMetier\FicheMetierCreationFormFactory;
use Application\Form\FicheMetier\FicheMetierCreationHydrator;
@@ -50,6 +54,10 @@ return [
                        'afficher',
                        'afficher-agent',
                        'saisie-manuelle-agent',
                        'lister-agents',
                        'ajouter-mission-complementaire',
                        'editer-mission-complementaire',
                        'supprimer-mission-complementaire',
                    ],
                    'privileges' => [
                        FicheMetierPrivileges::AFFICHER,
@@ -166,7 +174,16 @@ return [
                            ],
                        ],
                    ],

                    'agent' => [
                        'type'  => Literal::class,
                        'options' => [
                            'route'    => '/agent',
                            'defaults' => [
                                'controller' => FicheMetierController::class,
                                'action'     => 'lister-agents',
                            ],
                        ],
                    ],
                    'afficher-agent' => [
                        'type'  => Segment::class,
                        'options' => [
@@ -189,6 +206,39 @@ return [
                        ],
                        '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' => [
@@ -308,6 +358,7 @@ return [
            MissionsPrincipalesForm::class => MissionsPrincipalesFormFactory::class,

            AgentForm::class => AgentFormFactory::class,
            MissionComplementaireForm::class => MissionComplementaireFormFactory::class,
        ],
    ],
    'hydrators' => [
@@ -318,6 +369,7 @@ return [
            FicheMetierCreationHydrator::class => FicheMetierCreationHydratorFactory::class,
            LibelleHydrator::class => LibelleHydratorFactory::class,
            AgentHydrator::class => AgentHydratorFactory::class,
            MissionComplementaireHydrator::class => MissionComplementaireHydratorFactory::class,
        ]
    ]

+7 −0
Changes for module/Application/config/merged/menu.config.php: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -72,6 +72,13 @@ return [
                        'route' => 'activite',
                        'roles' => [], //PrivilegeController::getResourceId(__NAMESPACE__ . '\Controller\Administration', 'index'),
                        'pages' => [
                            [
                                'label' => 'Les agents',
                                'route' => 'fiche-metier/agent',
                                'privileges' => FicheMetierPrivileges::AFFICHER,
                                'dropdown-header' => true,
                                'icon' => 'fas fa-angle-right'
                            ],
                            [
                                'label' => 'Les fiches métiers',
                                'route' => 'fiche-metier',
+79 −0
Changes for module/Application/src/Application/Controller/FicheMetier/FicheMetierController.php: 79 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -4,7 +4,9 @@ namespace Application\Controller\FicheMetier;

use Application\Entity\Db\Agent;
use Application\Entity\Db\FicheMetier;
use Application\Entity\Db\MissionComplementaire;
use Application\Form\Agent\AgentForm;
use Application\Form\Agent\MissionComplementaireForm;
use Application\Form\FicheMetier\FicheMetierCreationForm;
use Application\Service\Agent\AgentServiceAwareTrait;
use Application\Service\FicheMetier\FicheMetierServiceAwareTrait;
@@ -132,4 +134,81 @@ class FicheMetierController extends AbstractActionController
            '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);
            }
        }

        return new ViewModel([
            'title' => 'Ajouter une mission complementaire',
            'form' => $form,
        ]);


    }

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

        /** @var MissionComplementaireForm $form */
        $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);
            }
        }

        return new ViewModel([
            'title' => 'Éditer une mission complementaire',
            'form' => $form,
        ]);
    }

    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);
    }
}
 No newline at end of file
+34 −0
Changes for module/Application/src/Application/Entity/Db/Agent.php: 34 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
namespace Application\Entity\Db;

use DateTime;
use Doctrine\Common\Collections\ArrayCollection;

class Agent {

@@ -30,8 +31,15 @@ class Agent {
    /** @var Corps */
    private $corps;

    /** @var ArrayCollection */
    private $missionsComplementaires;


    public function __construct()
    {
        $this->missionsComplementaires = new ArrayCollection();
    }

    /**
     * @return int
     */
@@ -202,6 +210,32 @@ class Agent {
        return $this;
    }

    /**
     * @return ArrayCollection
     */
    public function getMissionsComplementaires()
    {
        return $this->missionsComplementaires;
    }

    /**
     * @param MissionComplementaire $mission
     * @return Agent
     */
    public function addMissionsComplementaires($mission)
    {
        $this->missionsComplementaires->add($mission);
        return $this;
    }

    /**
     * @param MissionComplementaire $mission
     * @return Agent
     */
    public function removeMissionsComplementaires($mission)
    {
        $this->missionsComplementaires->removeElement($mission);
        return $this;
    }

}
 No newline at end of file
+2 −0
Changes for module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Agent.dcm.xml: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -22,5 +22,7 @@
        <many-to-one target-entity="Application\Entity\Db\Corps" field="corps">
            <join-column name="corps" referenced-column-name="id" />
        </many-to-one>

        <one-to-many target-entity="Application\Entity\Db\MissionComplementaire" field="missionsComplementaires" mapped-by="agent" />
    </entity>
</doctrine-mapping>
Loading