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

Amélioration saisi des parcours de formations

parent 0b63d8c1
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -4,6 +4,10 @@ namespace Application;

use Application\Controller\FormationController;
use Application\Controller\FormationControllerFactory;
use Application\Form\AjouterFormation\AjouterFormationForm;
use Application\Form\AjouterFormation\AjouterFormationFormFactory;
use Application\Form\AjouterFormation\AjouterFormationHydrator;
use Application\Form\AjouterFormation\AjouterFormationHydratorFactory;
use Application\Form\Formation\FormationForm;
use Application\Form\Formation\FormationFormFactory;
use Application\Form\Formation\FormationHydrator;
@@ -358,6 +362,7 @@ return [
    ],
    'form_elements' => [
        'factories' => [
            AjouterFormationForm::class => AjouterFormationFormFactory::class,
            FormationForm::class => FormationFormFactory::class,
            FormationGroupeForm::class => FormationGroupeFormFactory::class,
            SelectionFormationForm::class => SelectionFormationFormFactory::class,
@@ -369,6 +374,7 @@ return [
//            FormationGroupeHydrator::class => FormationGroupeHydrator::class,
        ],
        'factories' => [
            AjouterFormationHydrator::class => AjouterFormationHydratorFactory::class,
            FormationHydrator::class => FormationHydratorFactory::class,
            FormationGroupeHydrator::class => FormationGroupeHydratorFactory::class,
        ],
+64 −1
Original line number Diff line number Diff line
@@ -4,6 +4,10 @@ namespace Application;

use Application\Controller\ParcoursDeFormationController;
use Application\Controller\ParcoursDeFormationControllerFactory;
use Application\Form\ModifierRattachement\ModifierRattachementForm;
use Application\Form\ModifierRattachement\ModifierRattachementFormFactory;
use Application\Form\ModifierRattachement\ModifierRattachementHydrator;
use Application\Form\ModifierRattachement\ModifierRattachementHydratorFactory;
use Application\Form\ParcoursDeFormation\ParcoursDeFormationForm;
use Application\Form\ParcoursDeFormation\ParcoursDeFormationFormFactory;
use Application\Form\ParcoursDeFormation\ParcoursDeFormationHydrator;
@@ -30,6 +34,12 @@ return [
                        'historiser',
                        'restaurer',
                        'detruire',

                        'modifier-libelle',
                        'modifier-rattachement',
                        'ajouter-formation',
                        'retirer-formation',

                    ],
                    'privileges' => [
                        FormationPrivileges::FORMATION_INDEX,
@@ -50,6 +60,13 @@ return [
                                'route'    => 'parcours-de-formation',
                                'resource' => FormationPrivileges::getResourceId(FormationPrivileges::FORMATION_AFFICHER),
                                'order'    => 1150,
                                'pages' => [
                                    'modifier-parcours-de-foamtion' => [
                                        'label'    => 'Parcours de formation',
                                        'route'    => 'parcours-de-formation/modifier',
                                        'resource' => FormationPrivileges::getResourceId(FormationPrivileges::FORMATION_AFFICHER),
                                    ]
                                ],
                            ],
                        ],
                    ],
@@ -85,7 +102,7 @@ return [
                    'ajouter' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/ajouter/:type',
                            'route'    => '/ajouter[/:type]',
                            'defaults' => [
                                'controller' => ParcoursDeFormationController::class,
                                'action'     => 'ajouter',
@@ -104,6 +121,50 @@ return [
                        ],
                        'may_terminate' => true,
                    ],
                    'modifier-libelle' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/modifier-libelle/:parcours-de-formation',
                            'defaults' => [
                                'controller' => ParcoursDeFormationController::class,
                                'action'     => 'modifier-libelle',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                    'modifier-rattachement' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/modifier-rattachement/:parcours-de-formation',
                            'defaults' => [
                                'controller' => ParcoursDeFormationController::class,
                                'action'     => 'modifier-rattachement',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                    'ajouter-formation' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/ajouter-formation/:parcours-de-formation',
                            'defaults' => [
                                'controller' => ParcoursDeFormationController::class,
                                'action'     => 'ajouter-formation',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                    'retirer-formation' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/retirer-formation/:parcours-de-formation/:formation',
                            'defaults' => [
                                'controller' => ParcoursDeFormationController::class,
                                'action'     => 'retirer-formation',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                    'historiser' => [
                        'type'  => Segment::class,
                        'options' => [
@@ -154,11 +215,13 @@ return [
    ],
    'form_elements' => [
        'factories' => [
            ModifierRattachementForm::class => ModifierRattachementFormFactory::class,
            ParcoursDeFormationForm::class => ParcoursDeFormationFormFactory::class,
        ],
    ],
    'hydrators' => [
        'factories' => [
            ModifierRattachementHydrator::class => ModifierRattachementHydratorFactory::class,
            ParcoursDeFormationHydrator::class => ParcoursDeFormationHydratorFactory::class,
        ],
    ],
+131 −16
Original line number Diff line number Diff line
@@ -3,7 +3,11 @@
namespace Application\Controller;

use Application\Entity\Db\ParcoursDeFormation;
use Application\Form\AjouterFormation\AjouterFormationFormAwareTrait;
use Application\Form\ModifierLibelle\ModifierLibelleFormAwareTrait;
use Application\Form\ModifierRattachement\ModifierRattachementFormAwareTrait;
use Application\Form\ParcoursDeFormation\ParcoursDeFormationFormAwareTrait;
use Application\Service\Formation\FormationServiceAwareTrait;
use Application\Service\ParcoursDeFormation\ParcoursDeFormationServiceAwareTrait;
use Zend\Http\Request;
use Zend\Mvc\Controller\AbstractActionController;
@@ -11,17 +15,23 @@ use Zend\View\Model\ViewModel;

class ParcoursDeFormationController extends AbstractActionController
{
    use FormationServiceAwareTrait;
    use ParcoursDeFormationServiceAwareTrait;
    use AjouterFormationFormAwareTrait;
    use ParcoursDeFormationFormAwareTrait;
    use ModifierLibelleFormAwareTrait;
    use ModifierRattachementFormAwareTrait;

    public function indexAction()
    {
        $parcoursCategorie = $this->getParcoursDeFormationService()->getParcoursDeFormationsByType(ParcoursDeFormation::TYPE_CATEGORIE);
        $parcoursMetier = $this->getParcoursDeFormationService()->getParcoursDeFormationsByType(ParcoursDeFormation::TYPE_METIER);
        $parcoursVide = $this->getParcoursDeFormationService()->getParcoursDeFormationsByType(null);

        return new ViewModel([
            'parcoursCategorie' => $parcoursCategorie,
            'parcoursMetier' => $parcoursMetier,
            'parcoursVide' => $parcoursVide,
        ]);
    }

@@ -39,39 +49,104 @@ class ParcoursDeFormationController extends AbstractActionController

    public function ajouterAction()
    {
        $type = $this->params()->fromRoute('type');
//        $type = $this->params()->fromRoute('type');
//        $parcours = new ParcoursDeFormation();
//        $parcours->setType($type);
//
//        $form = $this->getParcoursDeFormationForm();
//        $form->setAttribute('action', $this->url()->fromRoute('parcours-de-formation/ajouter', ['type' => $type], [], true));
//        $form->bind($parcours);
//
//        /** @var Request $request */
//        $request = $this->getRequest();
//        if ($request->isPost()) {
//            $data = $request->getPost();
//            $form->setData($data);
//            if ($form->isValid()) {
//                $this->getParcoursDeFormationService()->create($parcours);
//            }
//        }
//
//        $vm = new ViewModel();
//        $vm->setTemplate('application/parcours-de-formation/parcours-form');
//        $vm->setVariables([
//            'title' => "Ajout d'un parcours de formation",
//            'form' => $form,
//        ]);
//        return $vm;

        $parcours = new ParcoursDeFormation();
        $parcours->setType($type);
        $this->getParcoursDeFormationService()->create($parcours);

        return $this->redirect()->toRoute('parcours-de-formation/modifier', ['parcours-de-formation' => $parcours->getId()], [], true);
    }

    public function modifierAction()
    {
        $parcours = $this->getParcoursDeFormationService()->getRequestedParcoursDeFormation($this);
        $reference = $this->getParcoursDeFormationService()->getReference($parcours);



        $form = $this->getParcoursDeFormationForm();
        $form->setAttribute('action', $this->url()->fromRoute('parcours-de-formation/ajouter', ['type' => $type], [], true));
//        $form = $this->getParcoursDeFormationForm();
//        $form->setAttribute('action', $this->url()->fromRoute('parcours-de-formation/modifier', ['parcours-de-formation' => $parcours->getId()], [], true));
//        $form->bind($parcours);
//
//        /** @var Request $request */
//        $request = $this->getRequest();
//        if ($request->isPost()) {
//            $data = $request->getPost();
//            $form->setData($data);
//            if ($form->isValid()) {
//                $this->getParcoursDeFormationService()->update($parcours);
//            }
//        }
//
//        $vm = new ViewModel();
//        $vm->setTemplate('application/parcours-de-formation/parcours-form');
//        $vm->setVariables([
//            'title' => "Modification d'un parcours de formation",
//            'form' => $form,
//        ]);
//        return $vm;

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

    public function modifierLibelleAction()
    {
        $parcours = $this->getParcoursDeFormationService()->getRequestedParcoursDeFormation($this);

        $form = $this->getModifierLibelleForm();
        $form->setAttribute('action', $this->url()->fromRoute('parcours-de-formation/modifier-libelle', ["parcours-de-formation" => $parcours->getId()], [], true));
        $form->bind($parcours);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getParcoursDeFormationService()->create($parcours);
            }
            $parcours->setLibelle($data['libelle']);
            $this->parcoursDeFormationService->update($parcours);
        }

        $vm = new ViewModel();
        $vm->setTemplate('application/parcours-de-formation/parcours-form');
        $vm->setTemplate('application/default/default-form');
        $vm->setVariables([
            'title' => "Ajout d'un parcours de formation",
            'title' => "Modifier le libellé du parcours de formation",
            'form' => $form,
        ]);
        return $vm;
    }

    public function modifierAction()
    public function modifierRattachementAction()
    {
        $parcours = $this->getParcoursDeFormationService()->getRequestedParcoursDeFormation($this);

        $form = $this->getParcoursDeFormationForm();
        $form->setAttribute('action', $this->url()->fromRoute('parcours-de-formation/modifier', ['parcours-de-formation' => $parcours->getId()], [], true));
        $form = $this->getModifierRattachementForm();
        $form->setAttribute('action', $this->url()->fromRoute('parcours-de-formation/modifier-rattachement', ["parcours-de-formation" => $parcours->getId()], [], true));
        $form->bind($parcours);

        /** @var Request $request */
@@ -80,19 +155,59 @@ class ParcoursDeFormationController extends AbstractActionController
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getParcoursDeFormationService()->update($parcours);
                $this->parcoursDeFormationService->update($parcours);
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('application/parcours-de-formation/parcours-form');
        $vm->setTemplate('application/default/default-form');
        $vm->setVariables([
            'title' => "Modification d'un parcours de formation",
            'title' => "Modifier le rattachement du parcours de formation",
            'form' => $form,
        ]);
        return $vm;
    }

    public function ajouterFormationAction()
    {
        $parcours = $this->getParcoursDeFormationService()->getRequestedParcoursDeFormation($this);

        $form = $this->getAjouterFormationForm();
        $form->setAttribute('action', $this->url()->fromRoute('parcours-de-formation/ajouter-formation', ['parcours-de-formation' => $parcours->getId()], [], true));
        $form->bind($parcours);

        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            if (isset($data['formation'])) {
                foreach ($data['formation'] as $id) {
                    $formation = $this->getFormationService()->getFormation($id);
                    $parcours->addFormation($formation);
                }
                $this->parcoursDeFormationService->update($parcours);
            }
        }

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

    public function retirerFormationAction()
    {
        $parcours = $this->getParcoursDeFormationService()->getRequestedParcoursDeFormation($this);
        $formation = $this->getFormationService()->getRequestedFormation($this);

        $parcours->removeFormation($formation);
        $this->getParcoursDeFormationService()->update($parcours);

        return $this->redirect()->toRoute('parcours-de-formation/modifier', ['parcours-de-formation' => $parcours->getId()], [], true);
    }

    private function getFragment(ParcoursDeFormation $parcours)
    {
        $type = $parcours->getType();
+16 −0
Original line number Diff line number Diff line
@@ -2,7 +2,11 @@

namespace Application\Controller;

use Application\Form\AjouterFormation\AjouterFormationForm;
use Application\Form\ModifierLibelle\ModifierLibelleForm;
use Application\Form\ModifierRattachement\ModifierRattachementForm;
use Application\Form\ParcoursDeFormation\ParcoursDeFormationForm;
use Application\Service\Formation\FormationService;
use Application\Service\ParcoursDeFormation\ParcoursDeFormationService;
use Interop\Container\ContainerInterface;

@@ -15,19 +19,31 @@ class ParcoursDeFormationControllerFactory {
    public function __invoke(ContainerInterface $container)
    {
        /**
         * @var FormationService $formationService
         * @var ParcoursDeFormationService $parcoursService
         */
        $formationService = $container->get(FormationService::class);
        $parcoursService = $container->get(ParcoursDeFormationService::class);

        /**
         * @var AjouterFormationForm $ajouterFormationForm
         * @var ParcoursDeFormationForm $parcoursForm
         * @var ModifierLibelleForm $modifierLibelleForm
         * @var ModifierRattachementForm $modifierRattachementForm
         */
        $ajouterFormationForm = $container->get('FormElementManager')->get(AjouterFormationForm::class);
        $parcoursForm = $container->get('FormElementManager')->get(ParcoursDeFormationForm::class);
        $modifierLibelleForm = $container->get('FormElementManager')->get(ModifierLibelleForm::class);
        $modifierRattachementForm = $container->get('FormElementManager')->get(ModifierRattachementForm::class);

        /** @var ParcoursDeFormationController $controller */
        $controller = new ParcoursDeFormationController();
        $controller->setFormationService($formationService);
        $controller->setParcoursDeFormationService($parcoursService);
        $controller->setAjouterFormationForm($ajouterFormationForm);
        $controller->setParcoursDeFormationForm($parcoursForm);
        $controller->setModifierLibelleForm($modifierLibelleForm);
        $controller->setModifierRattachementForm($modifierRattachementForm);
        return $controller;
    }
}
 No newline at end of file
+58 −0
Original line number Diff line number Diff line
<?php

namespace Application\Form\AjouterFormation;

use Application\Service\Formation\FormationServiceAwareTrait;
use Zend\Form\Element\Button;
use Zend\Form\Element\Select;
use Zend\Form\Form;
use Zend\InputFilter\Factory;

class AjouterFormationForm extends Form
{
    use FormationServiceAwareTrait;

    public function init()
    {
        /** SELECT :: FORMATION */
        $this->add([
            'name' => 'formation',
            'type' => Select::class,
            'options' => [
                'label' => 'Formations : ',
                'label_attributes' => [
                    'class' => 'control-label',
                ],
                'empty_option' => "Sélectionner une ou plusieurs formations ... ",
                'value_options' => $this->getFormationService()->getFormationsGroupesAsGroupOptions(),
            ],
            'attributes' => [
                'id'                => 'formation',
                'class'             => 'bootstrap-selectpicker show-tick',
                'data-live-search'  => 'true',
                'multiple'          => 'multiple',
            ]
        ]);

        /** BUTTON :: SUBMIT */
        $this->add([
            'type' => Button::class,
            'name' => 'creer',
            'options' => [
                'label' => '<i class="fas fa-save"></i> Ajouter',
                'label_options' => [
                    'disable_html_escape' => true,
                ],
            ],
            'attributes' => [
                'type' => 'submit',
                'class' => 'btn btn-primary',
            ],
        ]);

        $this->setInputFilter((new Factory())->createInputFilter([
            'formation'         => [ 'required' => false,  ],
        ]));
    }

}
 No newline at end of file
Loading