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

Ajout du domaine aux ressources RH

parent 6b872866
Loading
Loading
Loading
Loading
+47 −0
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\DomaineForm;
use Application\Form\RessourceRh\DomaineFormFactory;
use Application\Form\RessourceRh\DomaineHydrator;
use Application\Form\RessourceRh\MetierFamilleForm;
use Application\Form\RessourceRh\MetierFamilleFormFactory;
use Application\Form\RessourceRh\MetierFamilleHydrator;
@@ -49,6 +52,7 @@ return [
                        'creer-corps',
                        'creer-metier',
                        'creer-famille',
                        'ajouter-domaine',
                    ],
                    'privileges' => [
                        RessourceRhPrivileges::AJOUTER,
@@ -62,6 +66,7 @@ return [
                        'modifier-corps',
                        'modifier-metier',
                        'modifier-famille',
                        'modifier-domaine',
                    ],
                    'privileges' => [
                        RessourceRhPrivileges::MODIFIER,
@@ -75,6 +80,7 @@ return [
                        'effacer-metier',
                        'effacer-agent-status',
                        'effacer-famille',
                        'supprimer-domaine',
                    ],
                    'privileges' => [
                        RessourceRhPrivileges::EFFACER,
@@ -296,6 +302,45 @@ return [
                            ],
                        ],
                    ],
                    'domaine' => [
                        'type' => Literal::class,
                        'options' => [
                            'route'    => '/domaine',
                        ],
                        'may_terminate' => false,
                        'child_routes' => [
                            'ajouter' => [
                                'type'  => Literal::class,
                                'options' => [
                                    'route'    => '/ajouter',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'ajouter-domaine',
                                    ],
                                ],
                            ],
                            'modifier' => [
                                'type'  => Segment::class,
                                'options' => [
                                    'route'    => '/modifier/:domaine',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'modifier-domaine',
                                    ],
                                ],
                            ],
                            'supprimer' => [
                                'type'  => Segment::class,
                                'options' => [
                                    'route'    => '/supprimer/:domaine',
                                    'defaults' => [
                                        'controller' => RessourceRhController::class,
                                        'action'     => 'supprimer-domaine',
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
            ],
        ],
@@ -320,6 +365,7 @@ return [
            CorrespondanceForm::class => CorrespondanceFormFactory::class,
            MetierForm::class => MetierFormFactory::class,
            MetierFamilleForm::class => MetierFamilleFormFactory::class,
            DomaineForm::class => DomaineFormFactory::class,
        ],
    ],
    'hydrators' => [
@@ -328,6 +374,7 @@ return [
            CorpsHydrator::class => CorpsHydrator::class,
            CorrespondanceHydrator::class => CorrespondanceHydrator::class,
            MetierFamilleHydrator::class => MetierFamilleHydrator::class,
            DomaineHydrator::class => DomaineHydrator::class,
        ],
        'factories' => [
            MetierHydrator::class => MetierHydratorFactory::class,
+79 −0
Original line number Diff line number Diff line
@@ -5,8 +5,10 @@ namespace Application\Controller\RessourceRh;
use Application\Entity\Db\AgentStatus;
use Application\Entity\Db\Corps;
use Application\Entity\Db\Correspondance;
use Application\Entity\Db\Domaine;
use Application\Entity\Db\Metier;
use Application\Entity\Db\MetierFamille;
use Application\Form\RessourceRh\DomaineForm;
use Application\Form\RessourceRh\MetierFamilleForm;
use Application\Form\RessourceRh\MetierForm;
use Application\Form\RessourceRh\AgentStatusForm;
@@ -27,6 +29,7 @@ class RessourceRhController extends AbstractActionController {
        $metiers = $this->getRessourceRhService()->getMetiers('libelle');
        $corps = $this->getRessourceRhService()->getCorpsListe('libelle');
        $familles = $this->getRessourceRhService()->getMetiersFamilles('libelle');
        $domaines = $this->getRessourceRhService()->getDomaines('libelle');

        return new ViewModel([
            'status' => $status,
@@ -34,6 +37,7 @@ class RessourceRhController extends AbstractActionController {
            'metiers' => $metiers,
            'familles' => $familles,
            'corps' => $corps,
            'domaines' => $domaines,
        ]);
    }

@@ -391,4 +395,79 @@ class RessourceRhController extends AbstractActionController {

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

    /** DOMAINE *******************************************************************************************************/

    public function ajouterDomaineAction()
    {
        /** @var Domaine $domaine */
        $domaine = new Domaine();

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

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

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

    public function modifierDomaineAction()
    {
        /** @var Domaine $domaine */
        $domaineId = $this->params()->fromRoute('domaine');
        $domaine = $this->getRessourceRhService()->getDomaine($domaineId);

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

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

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

    public function supprimerDomaineAction()
    {
        /** @var Domaine $domaine */
        $domaineId = $this->params()->fromRoute('domaine');
        $domaine = $this->getRessourceRhService()->getDomaine($domaineId);

        if ($domaine !== null) {
            $this->getRessourceRhService()->deleteDomaine($domaine);
        }

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

}
 No newline at end of file
+40 −0
Original line number Diff line number Diff line
<?php

namespace Application\Form\RessourceRh;

use Zend\Form\Element\Button;
use Zend\Form\Element\Text;
use Zend\Form\Form;

class DomaineForm extends Form {

    public function init()
    {
        // libelle
        $this->add([
            'type' => Text::class,
            'name' => 'libelle',
            'options' => [
                'label' => "Libelle :",
            ],
            'attributes' => [
                'id' => 'libelle',
            ],
        ]);
        // button
        $this->add([
            'type' => Button::class,
            'name' => 'creer',
            'options' => [
                'label' => '<i class="fas fa-save"></i> Enregistrer le domaine',
                'label_options' => [
                    'disable_html_escape' => true,
                ],
            ],
            'attributes' => [
                'type' => 'submit',
                'class' => 'btn btn-primary',
            ],
        ]);
    }
}
 No newline at end of file
+20 −0
Original line number Diff line number Diff line
<?php

namespace Application\Form\RessourceRh;

use Zend\Form\FormElementManager;

class DomaineFormFactory {

    public function __invoke(FormElementManager $manager)
    {
        /** @var DomaineHydrator $hydrator */
        $hydrator = $manager->getServiceLocator()->get('HydratorManager')->get(DomaineHydrator::class);

        $form = new DomaineForm();
        $form->init();
        $form->setHydrator($hydrator);

        return $form;
    }
}
 No newline at end of file
+33 −0
Original line number Diff line number Diff line
<?php

namespace Application\Form\RessourceRh;

use Application\Entity\Db\Domaine;
use Zend\Stdlib\Hydrator\HydratorInterface;

class DomaineHydrator implements HydratorInterface {

    /**
     * @param Domaine $object
     * @return array
     */
    public function extract($object)
    {
        $data = [
            'libelle' => $object->getLibelle(),
        ];
        return $data;
    }

    /**
     * @param array $data
     * @param Domaine $object
     * @return Domaine
     */
    public function hydrate(array $data, $object)
    {
        $object->setLibelle($data['libelle']);
        return $object;
    }

}
 No newline at end of file
Loading