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

Theme et Type de mission spécifique CRUD

parent a1887f4b
Loading
Loading
Loading
Loading
+179 −1
Changes for module/Application/config/merged/ressource-rh.config.php: 179 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -21,6 +21,14 @@ use Application\Form\RessourceRh\MetierForm;
use Application\Form\RessourceRh\MetierFormFactory;
use Application\Form\RessourceRh\MetierHydrator;
use Application\Form\RessourceRh\MetierHydratorFactory;
use Application\Form\RessourceRh\MissionSpecifiqueThemeForm;
use Application\Form\RessourceRh\MissionSpecifiqueThemeFormFactory;
use Application\Form\RessourceRh\MissionSpecifiqueThemeHydrator;
use Application\Form\RessourceRh\MissionSpecifiqueThemeHydratorFactory;
use Application\Form\RessourceRh\MissionSpecifiqueTypeForm;
use Application\Form\RessourceRh\MissionSpecifiqueTypeFormFactory;
use Application\Form\RessourceRh\MissionSpecifiqueTypeHydrator;
use Application\Form\RessourceRh\MissionSpecifiqueTypeHydratorFactory;
use Application\Provider\Privilege\RessourceRhPrivileges;
use Application\Service\Domaine\DomaineService;
use Application\Service\Domaine\DomaineServiceFactory;
@@ -52,6 +60,9 @@ return [
                        'get-grades-json',
                        'cartographie',
                        'export-cartographie',

                        'afficher-mission-specifique-type',
                        'afficher-mission-specifique-theme',
                    ],
                    'privileges' => [
                        RessourceRhPrivileges::AFFICHER,
@@ -64,7 +75,10 @@ return [
                        'creer-famille',
                        'ajouter-domaine',
                        'ajouter-fonction',

                        'ajouter-mission-specifique',
                        'ajouter-mission-specifique-type',
                        'ajouter-mission-specifique-theme',
                    ],
                    'privileges' => [
                        RessourceRhPrivileges::AJOUTER,
@@ -81,6 +95,12 @@ return [
                        'modifier-mission-specifique',
                        'historiser-mission-specifique',
                        'restaurer-mission-specifique',
                        'modifier-mission-specifique-type',
                        'historiser-mission-specifique-type',
                        'restaurer-mission-specifique-type',
                        'modifier-mission-specifique-theme',
                        'historiser-mission-specifique-theme',
                        'restaurer-mission-specifique-theme',
                    ],
                    'privileges' => [
                        RessourceRhPrivileges::MODIFIER,
@@ -94,6 +114,8 @@ return [
                        'supprimer-domaine',
                        'supprimer-fonction',
                        'supprimer-mission-specifique',
                        'detruire-mission-specifique-type',
                        'detruire-mission-specifique-theme',
                    ],
                    'privileges' => [
                        RessourceRhPrivileges::EFFACER,
@@ -411,6 +433,156 @@ return [
                            ],
                        ],
                    ],
                    'mission-specifique-type' => [
                        'type' => Literal::class,
                        'options' => [
                            'route'    => '/mission-specifique-type',
                        ],
                        'may_terminate' => false,
                        'child_routes' => [
                            'ajouter' => [
                                'type' => Literal::class,
                                'options' => [
                                    'route'    => '/ajouter',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'ajouter-mission-specifique-type',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'afficher' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/afficher/:mission-specifique-type',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'afficher-mission-specifique-type',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'modifier' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/modifier/:mission-specifique-type',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'modifier-mission-specifique-type',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'historiser' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/historiser/:mission-specifique-type',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'historiser-mission-specifique-type',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'restaurer' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/restaurer/:mission-specifique-type',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'restaurer-mission-specifique-type',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'detruire' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/detruire/:mission-specifique-type',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'detruire-mission-specifique-type',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                        ],
                    ],
                    'mission-specifique-theme' => [
                        'type' => Literal::class,
                        'options' => [
                            'route'    => '/mission-specifique-theme',
                        ],
                        'may_terminate' => false,
                        'child_routes' => [
                            'ajouter' => [
                                'type' => Literal::class,
                                'options' => [
                                    'route'    => '/ajouter',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'ajouter-mission-specifique-theme',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'afficher' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/afficher/:mission-specifique-theme',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'afficher-mission-specifique-theme',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'modifier' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/modifier/:mission-specifique-theme',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'modifier-mission-specifique-theme',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'historiser' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/historiser/:mission-specifique-theme',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'historiser-mission-specifique-theme',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'restaurer' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/restaurer/:mission-specifique-theme',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'restaurer-mission-specifique-theme',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                            'detruire' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route'    => '/detruire/:mission-specifique-theme',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'detruire-mission-specifique-theme',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                        ],
                    ],
                ],
            ],
        ],
@@ -436,7 +608,10 @@ return [
            FamilleProfessionnelleForm::class => FamilleProfessionnelleFormFactory::class,
//            FonctionForm::class => FonctionFormFactory::class,
            DomaineForm::class => DomaineFormFactory::class,

            MissionSpecifiqueForm::class => MissionSpecifiqueFormFactory::class,
            MissionSpecifiqueTypeForm::class => MissionSpecifiqueTypeFormFactory::class,
            MissionSpecifiqueThemeForm::class => MissionSpecifiqueThemeFormFactory::class,
        ],
    ],
    'hydrators' => [
@@ -445,9 +620,12 @@ return [
        ],
        'factories' => [
            MetierHydrator::class => MetierHydratorFactory::class,
            MissionSpecifiqueHydrator::class => MissionSpecifiqueHydratorFactory::class,
            DomaineHydrator::class => DomaineHydratorFactory::class,
            FonctionHydrator::class => FonctionHydratorFactory::class,

            MissionSpecifiqueHydrator::class => MissionSpecifiqueHydratorFactory::class,
            MissionSpecifiqueTypeHydrator::class => MissionSpecifiqueTypeHydratorFactory::class,
            MissionSpecifiqueThemeHydrator::class => MissionSpecifiqueThemeHydratorFactory::class,
        ],
    ]

+183 −0
Changes for module/Application/src/Application/Controller/RessourceRhController.php: 183 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -6,6 +6,10 @@ use Application\Entity\Db\Domaine;
use Application\Entity\Db\Metier;
use Application\Entity\Db\FamilleProfessionnelle;
use Application\Entity\Db\MissionSpecifique;
use Application\Entity\Db\MissionSpecifiqueTheme;
use Application\Entity\Db\MissionSpecifiqueType;
use Application\Form\RessourceRh\MissionSpecifiqueThemeFormAwareTrait;
use Application\Form\RessourceRh\MissionSpecifiqueTypeFormAwareTrait;
use Application\Form\MissionSpecifique\MissionSpecifiqueFormAwareTrait;
use Application\Form\RessourceRh\DomaineForm;
use Application\Form\RessourceRh\DomaineFormAwareTrait;
@@ -40,6 +44,8 @@ class RessourceRhController extends AbstractActionController {
    use FonctionFormAwareTrait;
    use MetierFormAwareTrait;
    use MissionSpecifiqueFormAwareTrait;
    use MissionSpecifiqueTypeFormAwareTrait;
    use MissionSpecifiqueThemeFormAwareTrait;


    public function indexAction()
@@ -338,9 +344,13 @@ class RessourceRhController extends AbstractActionController {
    public function indexMissionSpecifiqueAction()
    {
        $missions = $this->getRessourceRhService()->getMissionsSpecifiques();
        $types = $this->getRessourceRhService()->getMissionsSpecifiquesTypes(true);
        $themes = $this->getRessourceRhService()->getMissionsSpecifiquesThemes(true);

        return new ViewModel([
            'missions' => $missions,
            'types' => $types,
            'themes' => $themes,
        ]);
    }

@@ -417,6 +427,179 @@ class RessourceRhController extends AbstractActionController {
        return $this->redirect()->toRoute('ressource-rh/index-mission-specifique', [], [], true);
    }

    /** MISSION SPECIFIQUE TYPE ***************************************************************************************/

    public function ajouterMissionSpecifiqueTypeAction()
    {
        $type = new MissionSpecifiqueType();
        $form = $this->getMissionSpecifiqueTypeForm();
        $form->setAttribute('action', $this->url()->fromRoute('ressource-rh/mission-specifique-type/ajouter', [], [], true));
        $form->bind($type);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getRessourceRhService()->createMissionSpecifiqueType($type);
                //return $this->redirect()->toRoute('ressource-rh/index-mission-specifique', [], [], true);
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('application/default/default-form');
        $vm->setVariables([
            'title' => "Ajout d'un nouveau type de mission",
            'form' => $form,
        ]);
        return $vm;
    }

    public function afficherMissionSpecifiqueTypeAction() {
        $type = $this->getRessourceRhService()->getRequestedMissionSpecifiqueType($this);

        return new ViewModel([
            'title' => "Affichage d'un type de missions spécifiques",
            'type' => $type,
        ]);
    }

    public function modifierMissionSpecifiqueTypeAction()
    {
        $type = $this->getRessourceRhService()->getRequestedMissionSpecifiqueType($this);
        $form = $this->getMissionSpecifiqueTypeForm();
        $form->setAttribute('action', $this->url()->fromRoute('ressource-rh/mission-specifique-type/modifier', ['mission-specifique-type' => $type->getId()], [], true));
        $form->bind($type);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getRessourceRhService()->updateMissionSpecifiqueType($type);
                //return $this->redirect()->toRoute('ressource-rh/index-mission-specifique', [], [], true);
            }
        }

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

    public function historiserMissionSpecifiqueTypeAction()
    {
        $type = $this->getRessourceRhService()->getRequestedMissionSpecifiqueType($this);
        $this->getRessourceRhService()->historizeMissionSpecifiqueType($type);
        return $this->redirect()->toRoute('ressource-rh/index-mission-specifique', [], [], true);
    }

    public function restaurerMissionSpecifiqueTypeAction()
    {
        $type = $this->getRessourceRhService()->getRequestedMissionSpecifiqueType($this);
        $this->getRessourceRhService()->restoreMissionSpecifiqueType($type);
        return $this->redirect()->toRoute('ressource-rh/index-mission-specifique', [], [], true);
    }

    public function detruireMissionSpecifiqueTypeAction()
    {
        $type = $this->getRessourceRhService()->getRequestedMissionSpecifiqueType($this);
        $this->getRessourceRhService()->deleteMissionSpecifiqueType($type);
        return $this->redirect()->toRoute('ressource-rh/index-mission-specifique', [], [], true);
    }

    /** MISSION SPECIFIQUE THEME **************************************************************************************/

    public function ajouterMissionSpecifiqueThemeAction()
    {
        $theme = new MissionSpecifiqueTheme();
        $form = $this->getMissionSpecifiqueThemeForm();
        $form->setAttribute('action', $this->url()->fromRoute('ressource-rh/mission-specifique-theme/ajouter', [], [], true));
        $form->bind($theme);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getRessourceRhService()->createMissionSpecifiqueTheme($theme);
                //return $this->redirect()->toRoute('ressource-rh/index-mission-specifique', [], [], true);
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('application/default/default-form');
        $vm->setVariables([
            'title' => "Ajout d'un nouveau thème de mission",
            'form' => $form,
        ]);
        return $vm;
    }

    public function afficherMissionSpecifiqueThemeAction() {
        $theme = $this->getRessourceRhService()->getRequestedMissionSpecifiqueTheme($this);

        return new ViewModel([
            'title' => "Affichage d'un thème de missions spécifiques",
            'theme' => $theme,
        ]);
    }

    public function modifierMissionSpecifiqueThemeAction()
    {
        $theme = $this->getRessourceRhService()->getRequestedMissionSpecifiqueTheme($this);
        $form = $this->getMissionSpecifiqueThemeForm();
        $form->setAttribute('action', $this->url()->fromRoute('ressource-rh/mission-specifique-theme/modifier', ['mission-specifique-theme' => $theme->getId()], [], true));
        $form->bind($theme);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getRessourceRhService()->updateMissionSpecifiqueTheme($theme);
                //return $this->redirect()->toRoute('ressource-rh/index-mission-specifique', [], [], true);
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('application/default/default-form');
        $vm->setVariables([
            'title' => "Modifier un thème de mission",
            'form' => $form,
        ]);
        return $vm;
    }

    public function historiserMissionSpecifiqueThemeAction()
    {
        $theme = $this->getRessourceRhService()->getRequestedMissionSpecifiqueTheme($this);
        $this->getRessourceRhService()->historizeMissionSpecifiqueTheme($theme);
        return $this->redirect()->toRoute('ressource-rh/index-mission-specifique', [], [], true);
    }

    public function restaurerMissionSpecifiqueThemeAction()
    {
        $theme = $this->getRessourceRhService()->getRequestedMissionSpecifiqueTheme($this);
        $this->getRessourceRhService()->restoreMissionSpecifiqueTheme($theme);
        return $this->redirect()->toRoute('ressource-rh/index-mission-specifique', [], [], true);
    }

    public function detruireMissionSpecifiqueThemeAction()
    {
        $theme = $this->getRessourceRhService()->getRequestedMissionSpecifiqueTheme($this);
        $this->getRessourceRhService()->deleteMissionSpecifiqueTheme($theme);
        return $this->redirect()->toRoute('ressource-rh/index-mission-specifique', [], [], true);
    }

    /** CARTOGRAPHIE ***************************************************************************************************/

    public function cartographieAction() {
        $metiers = $this->getMetierService()->getMetiers();
+7 −0
Changes for module/Application/src/Application/Controller/RessourceRhControllerFactory.php: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -7,6 +7,8 @@ use Application\Form\RessourceRh\DomaineForm;
use Application\Form\RessourceRh\FonctionForm;
use Application\Form\RessourceRh\FamilleProfessionnelleForm;
use Application\Form\RessourceRh\MetierForm;
use Application\Form\RessourceRh\MissionSpecifiqueThemeForm;
use Application\Form\RessourceRh\MissionSpecifiqueTypeForm;
use Application\Service\Domaine\DomaineService;
use Application\Service\FamilleProfessionnelle\FamilleProfessionnelleService;
use Application\Service\Fonction\FonctionService;
@@ -38,8 +40,11 @@ class RessourceRhControllerFactory {
         * @var FonctionForm $fonctionForm
         * @var MetierForm $metierForm
         * @var MissionSpecifiqueForm $missionSpecifiqueForm
         * @var MissionSpecifiqueTypeForm $missionSpecifiqueTypeForm
         */
        $missionSpecifiqueForm      = $container->get('FormElementManager')->get(MissionSpecifiqueForm::class);
        $missionSpecifiqueTypeForm  = $container->get('FormElementManager')->get(MissionSpecifiqueTypeForm::class);
        $missionSpecifiqueThemeForm = $container->get('FormElementManager')->get(MissionSpecifiqueThemeForm::class);

        $familleForm                = $container->get('FormElementManager')->get(FamilleProfessionnelleForm::class);
        $fonctionForm               = $container->get('FormElementManager')->get(FonctionForm::class);
@@ -57,6 +62,8 @@ class RessourceRhControllerFactory {
        $controller->setMetierService($metierService);

        $controller->setMissionSpecifiqueForm($missionSpecifiqueForm);
        $controller->setMissionSpecifiqueTypeForm($missionSpecifiqueTypeForm);
        $controller->setMissionSpecifiqueThemeForm($missionSpecifiqueThemeForm);
        $controller->setFamilleProfessionnelleForm($familleForm);
        $controller->setFonctionForm($fonctionForm);
        $controller->setDomaineForm($domaineForm);
+6 −1
Changes for module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.MissionSpecifique.dcm.xml: 6 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -10,11 +10,16 @@

        <one-to-many target-entity="Application\Entity\Db\AgentMissionSpecifique" mapped-by="mission" field="affectations"/>

        <many-to-one target-entity="Application\Entity\Db\MissionSpecifiqueTheme"  field="theme">
            <join-column name="theme_id" referenced-column-name="id"/>
        </many-to-one>
        <many-to-one target-entity="Application\Entity\Db\MissionSpecifiqueType"  field="type">
            <join-column name="type_id" referenced-column-name="id"/>
        </many-to-one>

        <field name="histoCreation"     type="datetime"                 column="histo_creation"     nullable="false"/>
        <field name="histoModification" type="datetime"                 column="histo_modification" nullable="false"/>
        <field name="histoDestruction"  type="datetime"                 column="histo_destruction"  nullable="true"/>

        <many-to-one target-entity="Utilisateur\Entity\Db\User"  field="histoCreateur">
            <join-column name="histo_createur_id" referenced-column-name="id"/>
        </many-to-one>
+27 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading