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

Debut d'intergration des niveau dans les applications

parent eb23543d
Loading
Loading
Loading
Loading
+37 −1
Changes for module/Application/config/merged/application.config.php: 37 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -21,9 +21,9 @@ use Application\Form\SelectionApplication\SelectionApplicationFormFactory;
use Application\Form\SelectionApplication\SelectionApplicationHydrator;
use Application\Provider\Privilege\ApplicationPrivileges;
use Application\Service\Application\ApplicationGroupeService;
use Application\Service\Application\ApplicationGroupeServiceFactory;
use Application\Service\Application\ApplicationService;
use Application\Service\Application\ApplicationServiceFactory;
use Application\Service\Application\ApplicationGroupeServiceFactory;
use Application\Service\ApplicationElement\ApplicationElementService;
use Application\Service\ApplicationElement\ApplicationElementServiceFactory;
use Application\Service\HasApplicationCollection\HasApplicationCollectionService;
@@ -51,6 +51,7 @@ return [
                    'action' => [
                        'afficher',
                        'afficher-groupe',
                        'afficher-application-element',
                    ],
                    'privileges' => [
                        ApplicationPrivileges::APPLICATION_AFFICHER,
@@ -64,6 +65,7 @@ return [
                        'modifier-groupe',
                        'historiser-groupe',
                        'restaurer-groupe',
                        'changer-niveau',
                    ],
                    'privileges' => [
                        ApplicationPrivileges::APPLICATION_EDITER,
@@ -74,6 +76,7 @@ return [
                    'action' => [
                        'creer',
                        'ajouter-groupe',
                        'ajouter-application-element',
                    ],
                    'privileges' => [
                        ApplicationPrivileges::APPLICATION_AJOUTER,
@@ -125,6 +128,17 @@ return [
                ],
                'may_terminate' => true,
                'child_routes' => [
                    'changer-niveau' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/changer-niveau/:application-element',
                            'defaults' => [
                                'controller' => ApplicationController::class,
                                'action'     => 'changer-niveau',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                    'groupe' => [
                        'type' => Literal::class,
                        'may_terminate' => false,
@@ -207,6 +221,28 @@ return [
                            ],
                        ],
                    ],
                    'afficher-application-element' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/afficher-application-element/:application-element',
                            'defaults' => [
                                'controller' => ApplicationController::class,
                                'action'     => 'afficher-application-element',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                    'ajouter-application-element' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/ajouter-application-element/:type/:id',
                            'defaults' => [
                                'controller' => ApplicationController::class,
                                'action'     => 'ajouter-application-element',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                    'changer-status' => [
                        'type' => Segment::class,
                        'options' => [
+96 −0
Changes for module/Application/src/Application/Controller/ApplicationController.php: 96 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -2,13 +2,22 @@

namespace Application\Controller;

use Application\Entity\Db\Agent;
use Application\Entity\Db\Application;
use Application\Entity\Db\ApplicationElement;
use Application\Entity\Db\ApplicationGroupe;
use Application\Entity\Db\FicheMetier;
use Application\Form\Application\ApplicationForm;
use Application\Form\Application\ApplicationFormAwareTrait;
use Application\Form\ApplicationElement\ApplicationElementFormAwareTrait;
use Application\Form\ApplicationGroupe\ApplicationGroupeFormAwareTrait;
use Application\Form\ModifierNiveau\ModifierNiveauFormAwareTrait;
use Application\Form\SelectionCompetenceMaitrise\SelectionCompetenceMaitriseFormAwareTrait;
use Application\Service\Agent\AgentServiceAwareTrait;
use Application\Service\Application\ApplicationServiceAwareTrait;
use Application\Service\Application\ApplicationGroupeServiceAwareTrait;
use Application\Service\ApplicationElement\ApplicationElementServiceAwareTrait;
use Application\Service\FicheMetier\FicheMetierServiceAwareTrait;
use Zend\Http\Request;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
@@ -16,8 +25,13 @@ use Zend\View\Model\ViewModel;
class ApplicationController  extends AbstractActionController {
    use ApplicationServiceAwareTrait;
    use ApplicationGroupeServiceAwareTrait;
    use ApplicationElementServiceAwareTrait;
    use AgentServiceAwareTrait;
    use FicheMetierServiceAwareTrait;
    use ApplicationFormAwareTrait;
    use ApplicationElementFormAwareTrait;
    use ApplicationGroupeFormAwareTrait;
    use SelectionCompetenceMaitriseFormAwareTrait;

    /** APPLICATION ***************************************************************************************************/

@@ -254,4 +268,86 @@ class ApplicationController extends AbstractActionController {
        }
        return $vm;
    }

    /** GESTION DES COMPETENCES ELEMENTS ==> Faire CONTROLLER ? *******************************************************/

    public function afficherApplicationElementAction()
    {
        $element = $this->getApplicationElementService()->getRequestedApplicationElement($this);
        return new ViewModel([
            'title' => "Affichage de l'application [".$element->getApplication()->getLibelle()."]",
            'applicationElement' => $element,
        ]);
    }

    public function ajouterApplicationElementAction()
    {
        $type = $this->params()->fromRoute('type');
        $hasApplicationElement = null;
        switch($type) {
            case Agent::class : $hasApplicationElement = $this->getAgentService()->getRequestedAgent($this, 'id');
                break;
            case FicheMetier::class : $hasApplicationElement = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'id');
                break;
        }

        if ($hasApplicationElement !== null) {
            $element = new ApplicationElement();

            $form = $this->getApplicationElementForm();
            $form->setAttribute('action', $this->url()->fromRoute('application/ajouter-application-element', ['type' => $type, 'id' => $hasApplicationElement->getId()], [], true));
            $form->bind($element);

            $request = $this->getRequest();
            if ($request->isPost()) {
                $data = $request->getPost();
                $form->setData($data);
                if ($form->isValid()) {
                    $this->getApplicationElementService()->create($element);
                    $hasApplicationElement->addApplicationElement($element);
                    switch($type) {
                        case Agent::class :
                            $this->getAgentService()->update($hasApplicationElement);
                            break;
                        case FicheMetier::class :
                            $this->getFicheMetierService()->update($hasApplicationElement);
                            break;
                    }
                }
            }

            $vm = new ViewModel([
                'title' => "Ajout d'une application",
                'form' => $form,
            ]);
            $vm->setTemplate('application/default/default-form');
            return $vm;
        }
        exit();
    }

    /** Niveau de maitrise d'un  */
    public function changerNiveauAction() {
        $element = $this->getApplicationElementService()->getRequestedApplicationElement($this);

        $form = $this->getSelectionCompetenceMaitriseForm();
        $form->setAttribute('action', $this->url()->fromRoute('application/changer-niveau', ['application-element' => $element->getId()], [], true));
        $form->bind($element);

        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getApplicationElementService()->update($element);
            }
        }

        $vm = new ViewModel([
            'title' => "Changer le niveau de maîtrise",
            'form' => $form,
        ]);
        $vm->setTemplate('application/default/default-form');
        return $vm;
    }
}
 No newline at end of file
+20 −0
Changes for module/Application/src/Application/Controller/ApplicationControllerFactory.php: 20 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -3,9 +3,14 @@
namespace Application\Controller;

use Application\Form\Application\ApplicationForm;
use Application\Form\ApplicationElement\ApplicationElementForm;
use Application\Form\ApplicationGroupe\ApplicationGroupeForm;
use Application\Form\SelectionCompetenceMaitrise\SelectionCompetenceMaitriseForm;
use Application\Service\Agent\AgentService;
use Application\Service\Application\ApplicationGroupeService;
use Application\Service\Application\ApplicationService;
use Application\Service\ApplicationElement\ApplicationElementService;
use Application\Service\FicheMetier\FicheMetierService;
use Interop\Container\ContainerInterface;

class ApplicationControllerFactory {
@@ -15,23 +20,38 @@ class ApplicationControllerFactory {
        /**
         * @var ApplicationService $applicationService
         * @var ApplicationGroupeService $applicationGroupeService
         * @var ApplicationElementService $applicationElementService
         * @var AgentService $agentService
         * @var FicheMetierService $ficheMetierService
         */
        $applicationService = $container->get(ApplicationService::class);
        $applicationGroupeService = $container->get(ApplicationGroupeService::class);
        $applicationElementService = $container->get(ApplicationElementService::class);
        $agentService = $container->get(AgentService::class);
        $ficheMetierService = $container->get(FicheMetierService::class);

        /**
         * @var ApplicationForm $applicationForm
         * @var ApplicationGroupeForm $applicationGroupeForm
         * @var SelectionCompetenceMaitriseForm $selectionMaitriseForm
         * @var ApplicationElementForm $applicationElementForm
         */
        $applicationForm = $container->get('FormElementManager')->get(ApplicationForm::class);
        $applicationGroupeForm = $container->get('FormElementManager')->get(ApplicationGroupeForm::class);
        $selectionMaitriseForm = $container->get('FormElementManager')->get(SelectionCompetenceMaitriseForm::class);
        $applicationElementForm = $container->get('FormElementManager')->get(ApplicationElementForm::class);

        /** @var ApplicationController $controller */
        $controller = new ApplicationController();
        $controller->setApplicationService($applicationService);
        $controller->setApplicationGroupeService($applicationGroupeService);
        $controller->setApplicationElementService($applicationElementService);
        $controller->setAgentService($agentService);
        $controller->setFicheMetierService($ficheMetierService);
        $controller->setApplicationForm($applicationForm);
        $controller->setApplicationGroupeForm($applicationGroupeForm);
        $controller->setSelectionCompetenceMaitriseForm($selectionMaitriseForm);
        $controller->setApplicationElementForm($applicationElementForm);
        return $controller;
    }
}
 No newline at end of file
+1 −1
Changes for module/Application/src/Application/Controller/CompetenceController.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -535,7 +535,7 @@ class CompetenceController extends AbstractActionController
            $vm->setTemplate('application/default/default-form');
            return $vm;
        }

        exit();
    }

    public function supprimerCompetenceElementAction()
+1 −1
Changes for module/Application/src/Application/Controller/FicheMetierController.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -145,7 +145,7 @@ class FicheMetierController extends AbstractActionController
        $fiche = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'id', false);
        if ($fiche === null) $fiche = $this->getFicheMetierService()->getLastFicheMetier();
        $parcours = $this->getParcoursDeFormationService()->generateParcoursArrayFromFicheMetier($fiche);
        $applications = $this->getFicheMetierService()->getApplicationsDictionnaires($fiche);
        $applications = $this->getFicheMetierService()->getApplicationsDictionnaires($fiche, true);
        $competences = $this->getFicheMetierService()->getCompetencesDictionnaires($fiche, true);

        return new ViewModel([
Loading