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

Ajout des metiers (figée plus en saisie libre)

parent bbec39ef
Loading
Loading
Loading
Loading
+2 −1
Changes for module/Application/config/merged/fiche-metier.config.php: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ use Application\Form\FicheMetierType\ActiviteExistanteFormFactory;
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;
@@ -276,10 +277,10 @@ return [
    'hydrators' => [
        'invokables' => [
            MissionsPrincipalesHydrator::class => MissionsPrincipalesHydrator::class,
            LibelleHydrator::class => LibelleHydrator::class,
        ],
        'factories' => [
            FicheMetierCreationHydrator::class => FicheMetierCreationHydratorFactory::class,
            LibelleHydrator::class => LibelleHydratorFactory::class,
        ]
    ]

+8 −0
Changes for module/Application/config/merged/menu.config.php: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ use Application\Provider\Privilege\ActivitePrivileges;
use Application\Provider\Privilege\AffectationPrivileges;
use Application\Provider\Privilege\ApplicationPrivileges;
use Application\Provider\Privilege\FicheMetierPrivileges;
use Application\Provider\Privilege\MetierPrivileges;

return [
    'navigation' => [
@@ -54,6 +55,13 @@ return [
                                'dropdown-header' => true,
                                'icon' => 'fas fa-angle-right'
                            ],
                            [
                                'label' => 'Les métiers',
                                'route' => 'metier',
                                'privileges' => MetierPrivileges::AFFICHER,
                                'dropdown-header' => true,
                                'icon' => 'fas fa-angle-right'
                            ],
                        ],
                    ],
                ],
+143 −0
Changes for module/Application/config/merged/metier.config.php: 143 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application;

use Application\Controller\Metier\MetierController;
use Application\Controller\Metier\MetierControllerFactory;
use Application\Form\Metier\MetierForm;
use Application\Form\Metier\MetierFormFactory;
use Application\Form\Metier\MetierHydrator;
use Application\Provider\Privilege\MetierPrivileges;
use Application\Service\Metier\MetierService;
use Application\Service\Metier\MetierServiceFactory;
use UnicaenAuth\Guard\PrivilegeController;
use Zend\Mvc\Router\Http\Literal;
use Zend\Mvc\Router\Http\Segment;

return [
    'bjyauthorize' => [
        'guards' => [
            PrivilegeController::class => [
                [
                    'controller' => MetierController::class,
                    'action' => [
                        'index',
                        'afficher',
                    ],
                    'privileges' => [
                        MetierPrivileges::AFFICHER,
                    ],
                ],
                [
                    'controller' => MetierController::class,
                    'action' => [
                        'editer',
                    ],
                    'privileges' => [
                        MetierPrivileges::EDITER,
                    ],
                ],
                [
                    'controller' => MetierController::class,
                    'action' => [
                        'creer',
                    ],
                    'privileges' => [
                        MetierPrivileges::AJOUTER,
                    ],
                ],
                [
                    'controller' => MetierController::class,
                    'action' => [
                        'effacer',
                    ],
                    'privileges' => [
                        MetierPrivileges::EFFACER,
                    ],
                ],
            ],
        ],
    ],

    'router'          => [
        'routes' => [
            'metier' => [
                'type'  => Literal::class,
                'options' => [
                    'route'    => '/metier',
                    'defaults' => [
                        'controller' => MetierController::class,
                        'action'     => 'index',
                    ],
                ],
                'may_terminate' => true,
                'child_routes' => [
                    'afficher' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/afficher/:id',
                            'defaults' => [
                                'controller' => MetierController::class,
                                'action'     => 'afficher',
                            ],
                        ],
                    ],
                    'editer' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/editer/:id',
                            'defaults' => [
                                'controller' => MetierController::class,
                                'action'     => 'editer',
                            ],
                        ],
                    ],
                    'effacer' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/effacer/:id',
                            'defaults' => [
                                'controller' => MetierController::class,
                                'action'     => 'effacer',
                            ],
                        ],
                    ],
                    'creer' => [
                        'type'  => Literal::class,
                        'options' => [
                            'route'    => '/creer',
                            'defaults' => [
                                'controller' => MetierController::class,
                                'action'     => 'creer',
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],

    'service_manager' => [
        'invokables' => [
        ],
        'factories' => [
            MetierService::class => MetierServiceFactory::class,
        ],
    ],
    'controllers'     => [
        'factories' => [
            MetierController::class => MetierControllerFactory::class,
        ],
    ],
    'form_elements' => [
        'factories' => [
            MetierForm::class => MetierFormFactory::class,
        ],
    ],
    'hydrators' => [
        'invokable' => [
            MetierHydrator::class => MetierHydrator::class,
        ]
    ]

];
 No newline at end of file
+87 −0
Changes for module/Application/src/Application/Controller/Metier/MetierController.php: 87 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Controller\Metier;

use Application\Entity\Db\Metier;
use Application\Form\Metier\MetierForm;
use Application\Service\Metier\MetierServiceAwareTrait;
use Zend\Http\Request;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class MetierController extends AbstractActionController {
    use MetierServiceAwareTrait;

    public function indexAction()
    {
        /** @var Metier[] $metiers */
        $metiers = $this->getMetierService()->getMetiers('libelle');

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

    public function creerAction()
    {
        /** @var Metier $metier */
        $metier = new Metier();

        /** @var MetierForm $form */
        $form = $this->getServiceLocator()->get('FormElementManager')->get(MetierForm::class);
        $form->setAttribute('action', $this->url()->fromRoute('metier/creer', [], [], true));
        $form->bind($metier);
        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);

            if ($form->isValid()) {
                $this->getMetierService()->create($metier);
                //$this->redirect()->toRoute('application');
            }
        }

        return new ViewModel([
            'title' => 'Ajouter un métier',
            'form' => $form,
        ]);
    }
    public function editerAction()
    {
        /** @var Metier $metier */
        $metierId = $this->params()->fromRoute('id');
        $metier = $this->getMetierService()->getMetier($metierId);

        /** @var MetierForm $form */
        $form = $this->getServiceLocator()->get('FormElementManager')->get(MetierForm::class);
        $form->setAttribute('action', $this->url()->fromRoute('metier/editer', ['id' => $metier->getId()], [], true));
        $form->bind($metier);
        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);

            if ($form->isValid()) {
                $this->getMetierService()->update($metier);
                //$this->redirect()->toRoute('application');
            }
        }

        return new ViewModel([
            'title' => 'Éditer un métier',
            'form' => $form,
        ]);
    }
    public function effacerAction()
    {
        /** @var Metier $metier */
        $metierId = $this->params()->fromRoute('id');
        $metier = $this->getMetierService()->getMetier($metierId);

        $this->getMetierService()->delete($metier);
        $this->redirect()->toRoute('metier');
    }
}
 No newline at end of file
+22 −0
Changes for module/Application/src/Application/Controller/Metier/MetierControllerFactory.php: 22 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Controller\Metier;

use Application\Service\Metier\MetierService;
use Zend\Mvc\Controller\ControllerManager;

class MetierControllerFactory {

    public function __invoke(ControllerManager $controllerManager)
    {
        /**
         * @var MetierService $metierService
         */
        $metierService = $controllerManager->getServiceLocator()->get(MetierService::class);

        /** @var MetierController $controller */
        $controller = new MetierController();
        $controller->setMetierService($metierService);
        return $controller;
    }
}
 No newline at end of file
Loading