Commit 5d8b4da4 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Ajout de la gestion des familles metiers

parent 187c6a8d
Loading
Loading
Loading
Loading
+53 −3
Changes for module/Application/config/merged/ressource-rh.config.php: 53 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -5,6 +5,9 @@ namespace Application;
use Application\Controller\Metier\MetierController;
use Application\Controller\RessourceRh\RessourceRhController;
use Application\Controller\RessourceRh\RessourceRhControllerFactory;
use Application\Form\RessourceRh\MetierFamilleForm;
use Application\Form\RessourceRh\MetierFamilleFormFactory;
use Application\Form\RessourceRh\MetierFamilleHydrator;
use Application\Form\RessourceRh\MetierForm;
use Application\Form\RessourceRh\MetierFormFactory;
use Application\Form\RessourceRh\MetierHydrator;
@@ -17,6 +20,7 @@ use Application\Form\RessourceRh\CorpsHydrator;
use Application\Form\RessourceRh\CorrespondanceForm;
use Application\Form\RessourceRh\CorrespondanceFormFactory;
use Application\Form\RessourceRh\CorrespondanceHydrator;
use Application\Form\RessourceRh\MetierHydratorFactory;
use Application\Provider\Privilege\RessourceRhPrivileges;
use Application\Service\RessourceRh\RessourceRhService;
use Application\Service\RessourceRh\RessourceRhServiceFactory;
@@ -44,6 +48,7 @@ return [
                        'creer-correspondance',
                        'creer-corps',
                        'creer-metier',
                        'creer-famille',
                    ],
                    'privileges' => [
                        RessourceRhPrivileges::AJOUTER,
@@ -56,6 +61,7 @@ return [
                        'modifier-correspondance',
                        'modifier-corps',
                        'modifier-metier',
                        'modifier-famille',
                    ],
                    'privileges' => [
                        RessourceRhPrivileges::MODIFIER,
@@ -68,6 +74,7 @@ return [
                        'effacer-correspondance',
                        'effacer-metier',
                        'effacer-agent-status',
                        'effacer-famille',
                    ],
                    'privileges' => [
                        RessourceRhPrivileges::EFFACER,
@@ -250,6 +257,45 @@ return [
                            ],
                        ],
                    ],
                    'famille' => [
                        'type' => Literal::class,
                        'options' => [
                            'route'    => '/famille',
                        ],
                        'may_terminate' => false,
                        'child_routes' => [
                            'creer' => [
                                'type'  => Literal::class,
                                'options' => [
                                    'route'    => '/creer',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'creer-famille',
                                    ],
                                ],
                            ],
                            'modifier' => [
                                'type'  => Segment::class,
                                'options' => [
                                    'route'    => '/modifier/:id',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'modifier-famille',
                                    ],
                                ],
                            ],
                            'effacer' => [
                                'type'  => Segment::class,
                                'options' => [
                                    'route'    => '/effacer/:id',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'effacer-famille',
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
            ],
        ],
@@ -273,15 +319,19 @@ return [
            CorpsForm::class => CorpsFormFactory::class,
            CorrespondanceForm::class => CorrespondanceFormFactory::class,
            MetierForm::class => MetierFormFactory::class,
            MetierFamilleForm::class => MetierFamilleFormFactory::class,
        ],
    ],
    'hydrators' => [
        'invokable' => [
        'invokables' => [
            AgentStatusHydrator::class => AgentStatusHydrator::class,
            CorpsHydrator::class => CorpsHydrator::class,
            CorrespondanceHydrator::class => CorrespondanceHydrator::class,
            MetierHydrator::class => MetierHydrator::class,
        ]
            MetierFamilleHydrator::class => MetierFamilleHydrator::class,
        ],
        'factories' => [
            MetierHydrator::class => MetierHydratorFactory::class,
        ],
    ]

];
 No newline at end of file
+69 −0
Changes for module/Application/src/Application/Controller/RessourceRh/RessourceRhController.php: 69 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@ use Application\Entity\Db\AgentStatus;
use Application\Entity\Db\Corps;
use Application\Entity\Db\Correspondance;
use Application\Entity\Db\Metier;
use Application\Entity\Db\MetierFamille;
use Application\Form\RessourceRh\MetierFamilleForm;
use Application\Form\RessourceRh\MetierForm;
use Application\Form\RessourceRh\AgentStatusForm;
use Application\Form\RessourceRh\CorpsForm;
@@ -24,11 +26,13 @@ class RessourceRhController extends AbstractActionController {
        $correspondances = $this->getRessourceRhService()->getCorrespondances('libelle');
        $metiers = $this->getRessourceRhService()->getMetiers('libelle');
        $corps = $this->getRessourceRhService()->getCorpsListe('libelle');
        $familles = $this->getRessourceRhService()->getMetiersFamilles('libelle');

        return new ViewModel([
            'status' => $status,
            'correspondances' => $correspondances,
            'metiers' => $metiers,
            'familles' => $familles,
            'corps' => $corps,
        ]);
    }
@@ -292,4 +296,69 @@ class RessourceRhController extends AbstractActionController {

        $this->redirect()->toRoute('ressource-rh', [], [], true);
    }

    /** FAMILLE METIER ************************************************************************************************/

    public function creerFamilleAction()
    {
        $famille = new MetierFamille();

        /** @var CorpsForm $form */
        $form = $this->getServiceLocator()->get('FormElementManager')->get(MetierFamilleForm::class);
        $form->setAttribute('action', $this->url()->fromRoute('ressource-rh/famille/creer', [], [], true));
        $form->bind($famille);

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

        return new ViewModel([
            'title' => 'Ajouter une nouvelle famille de métiers',
            'form' => $form,
        ]);
    }

    public function modifierFamilleAction()
    {
        $familleId = $this->params()->fromRoute('id');
        $famille = $this->getRessourceRhService()->getMetierFamille($familleId);

        /** @var MetierForm $form */
        $form = $this->getServiceLocator()->get('FormElementManager')->get(MetierFamilleForm::class);
        $form->setAttribute('action', $this->url()->fromRoute('ressource-rh/famille/modifier', [], [], true));
        $form->bind($famille);

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

        return new ViewModel([
            'title' => 'Modifier une famille de métiers',
            'form' => $form,
        ]);
    }

    public function effacerFamilleAction()
    {
        $familleId = $this->params()->fromRoute('id');
        $famille = $this->getRessourceRhService()->getMetierFamille($familleId);

        if ($famille !== null) {
            $this->getRessourceRhService()->deleteMetierFamille($famille);
        }

        $this->redirect()->toRoute('ressource-rh', [], [], true);
    }
}
 No newline at end of file
+3 −1
Changes for module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Metier.dcm.xml: 3 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -7,6 +7,8 @@
        </id>

        <field name="libelle"           type="string"   length="128"      column="libelle"                nullable="false"  />

        <many-to-one target-entity="Application\Entity\Db\MetierFamille" field="famille">
            <join-column name="famille" referenced-column-name="id" />
        </many-to-one>
    </entity>
</doctrine-mapping>
+15 −0
Changes for module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.MetierFamille.dcm.xml: 15 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
    <entity name="Application\Entity\Db\MetierFamille" table="metier_famille">

        <id name="id" type="integer" column="id">
            <generator strategy="IDENTITY"/>
        </id>

        <field name="libelle"           type="string"   length="128"      column="libelle"                nullable="false"  />
        <field name="couleur"           type="string"   length="64"       column="couleur"                nullable="true"  />

        <one-to-many target-entity="Application\Entity\Db\Metier" field="metiers" mapped-by="famille"/>

    </entity>
</doctrine-mapping>
+20 −0
Changes for module/Application/src/Application/Entity/Db/Metier.php: 20 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -8,6 +8,8 @@ class Metier {
    private $id;
    /** @var string */
    private $libelle;
    /** @var MetierFamille */
    private $famille;

    /**
     * @return int
@@ -32,4 +34,22 @@ class Metier {
    {
        $this->libelle = $libelle;
    }

    /**
     * @return MetierFamille
     */
    public function getFamille()
    {
        return $this->famille;
    }

    /**
     * @param MetierFamille $famille
     * @return Metier
     */
    public function setFamille($famille)
    {
        $this->famille = $famille;
        return $this;
    }
}
 No newline at end of file
Loading