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

Mission et Fiche Metier

parent d33fce66
Loading
Loading
Loading
Loading
+6 −34
Original line number Diff line number Diff line
@@ -39,12 +39,8 @@ $nbCompetence = count($competencesListe);
$applicationsListe  = $mission->getApplicationListe();
usort($applicationsListe, function (ApplicationElement $a, ApplicationElement $b) { return $a->getApplication()->getLibelle() > $b->getApplication()->getLibelle();});
$nbApplication = count($applicationsListe);
//$formationsListe    = $mission->getFormationListe();
//usort($formationsListe, function (FormationElement $a, FormationElement $b) { return $a->getFormation()->getLibelle() > $b->getFormation()->getLibelle();});
//$nbFormation   = count($formationsListe);
$nbFormation   = 0;

$nbObject      = $nbCompetence + $nbFormation + $nbApplication;
$nbObject      = $nbCompetence +  $nbApplication;
?>

<div>
@@ -76,32 +72,7 @@ $nbObject = $nbCompetence + $nbFormation + $nbApplication;
    <?php endif; ?>

    <div class="row">
    <?php if ($canModifier AND $mode === 'modifier-activite') : ?>
        <a <?php /** @see ActiviteController::modifierLibelleAction() */?>
                href="<?php echo $this->url("activite/modifier-libelle", ["activite" => $mission->getId()], [], true); ?>"
                class="btn btn-primary ajax-modal"
                data-event="modification"
        >
            <span class="icon icon-editer"></span>
            Modifier le libellé
        </a>
        <a  <?php /** @see ActiviteController::ajouterDescriptionAction() */?>
                href="<?php echo $this->url('activite/ajouter-description', ['activite' => $mission->getId()], [], true); ?>"
                class="btn btn-primary ajax-modal"
                data-event="modification"
        >
            <span class="icon icon-editer"></span>
            Ajouter une description
        </a>
        <a  <?php /** @see ActiviteController::ajouterDescriptionsAction() */?>
                href="<?php echo $this->url('activite/ajouter-descriptions', ['activite' => $mission->getId()], [], true); ?>"
                class="btn btn-primary ajax-modal"
                data-event="modification"
        >
            <span class="icon icon-editer"></span>
            Ajouter plusieurs descriptions
        </a>
    <?php endif; ?>

    <?php if ($mode == 'edition-fiche-metier') : ?>
        <div class="pull-right">
            <?php /** @see \FicheMetier\Controller\MissionPrincipaleController::modifierAction() */ ?>
@@ -113,21 +84,21 @@ $nbObject = $nbCompetence + $nbFormation + $nbApplication;
            </a>

            <?php /** @see FicheMetierController::supprimerMissionAction() */ ?>
            <a href="<?php echo $this->url('fiche-metier/supprimer-mission', ['id' => $type->getId()], [], true); ?>"
            <a href="<?php echo $this->url('fiche-metier/supprimer-mission', ['fiche-metier' => $fichemetier->getId(), 'mission-principale' => $mission->getId()], [], true); ?>"
               class="btn btn-primary">
                <span class="icon icon-retirer"></span>
                Supprimer
            </a>

            <?php /** @see FicheMetierController::deplacerMissionAction() */ ?>
            <a href="<?php echo $this->url('fiche-metier/deplacer-mission', ['id' => $type->getId(), 'direction' => 'up'], [], true); ?>"
            <a href="<?php echo $this->url('fiche-metier/deplacer-mission', ['fiche-metier' => $fichemetier->getId(), 'mission-principale' => $mission->getId(), 'direction' => 'up'], [], true); ?>"
               class="btn btn-primary">
                <span class="icon icon-monter"></span>
                Remonter
            </a>

            <?php /** @see FicheMetierController::deplacerMissionAction() */ ?>
            <a href="<?php echo $this->url('fiche-metier/deplacer-mission', ['id' => $type->getId(), 'direction' => 'down'], [], true); ?>"
            <a href="<?php echo $this->url('fiche-metier/deplacer-mission', ['fiche-metier' => $fichemetier->getId(), 'mission-principale' => $mission->getId(), 'direction' => 'down'], [], true); ?>"
               class="btn btn-primary">
                <span class="icon icon-descendre"></span>
                Descendre
@@ -137,6 +108,7 @@ $nbObject = $nbCompetence + $nbFormation + $nbApplication;
    </div>

    <!-- description -------------------------------------------------------------------------------------------------->

    <?php
        $activites = $mission->getActivites();
        usort($activites, function (MissionActivite $a, MissionActivite $b) { return $a->getOrdre() > $b->getOrdre();});
+34 −2
Original line number Diff line number Diff line
@@ -106,6 +106,16 @@ return [
                        FicheMetierPrivileges::FICHEMETIER_MODIFIER,
                    ],
                ],
                [
                    'controller' => FicheMetierController::class,
                    'action' => [
                        'gerer-applications',
                        'gerer-competences',
                    ],
                    'privileges' => [
                        FicheMetierPrivileges::FICHEMETIER_MODIFIER,
                    ],
                ],
            ],
        ],
    ],
@@ -301,7 +311,7 @@ return [
                    'deplacer-mission' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/deplacer-mission/:id/:direction',
                            'route'    => '/deplacer-mission/:fiche-metier/:mission-principale/:direction',
                            'defaults' => [
                                /** @see FicheMetierController::deplacerMissionAction() */
                                'controller' => FicheMetierController::class,
@@ -312,7 +322,7 @@ return [
                    'supprimer-mission' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/supprimer-mission/:id',
                            'route'    => '/supprimer-mission/:fiche-metier/:mission-principale',
                            'defaults' => [
                                /** @see FicheMetierController::supprimerMissionAction() */
                                'controller' => FicheMetierController::class,
@@ -320,6 +330,28 @@ return [
                            ],
                        ],
                    ],
                    'gerer-applications' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/gerer-application/:fiche-metier',
                            'defaults' => [
                                /** @see FicheMetierController::gererApplicationsAction() */
                                'controller' => FicheMetierController::class,
                                'action'     => 'gerer-applications',
                            ],
                        ],
                    ],
                    'gerer-competences' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/gerer-competences/:fiche-metier',
                            'defaults' => [
                                /** @see FicheMetierController::gererCompetencesAction() */
                                'controller' => FicheMetierController::class,
                                'action'     => 'gerer-competences',
                            ],
                        ],
                    ],
                ],
            ],
        ],
+113 −72
Original line number Diff line number Diff line
@@ -4,7 +4,10 @@ namespace FicheMetier\Controller;

use Application\Form\ModifierLibelle\ModifierLibelleFormAwareTrait;
use Application\Provider\Etat\FicheMetierEtats;
use Element\Form\SelectionApplication\SelectionApplicationFormAwareTrait;
use Element\Form\SelectionCompetence\SelectionCompetenceFormAwareTrait;
use FicheMetier\Entity\Db\FicheMetier;
use FicheMetier\Entity\Db\Mission;
use FicheMetier\Form\FicheMetierImportation\FicheMetierImportationFormAwareTrait;
use FicheMetier\Form\Raison\RaisonFormAwareTrait;
use FicheMetier\Service\FicheMetier\FicheMetierServiceAwareTrait;
@@ -22,7 +25,6 @@ use UnicaenEtat\Service\Etat\EtatServiceAwareTrait;
/** @method FlashMessenger flashMessenger() */

class FicheMetierController extends AbstractActionController {
//    use ActiviteServiceAwareTrait;
    use DomaineServiceAwareTrait;
    use EtatServiceAwareTrait;
    use FicheMetierServiceAwareTrait;
@@ -32,6 +34,8 @@ class FicheMetierController extends AbstractActionController {
    use FicheMetierImportationFormAwareTrait;
    use ModifierLibelleFormAwareTrait;
    use RaisonFormAwareTrait;
    use SelectionApplicationFormAwareTrait;
    use SelectionCompetenceFormAwareTrait;
    use SelectionEtatFormAwareTrait;
    use SelectionnerMetierFormAwareTrait;

@@ -61,9 +65,9 @@ class FicheMetierController extends AbstractActionController {
    public function afficherAction() : ViewModel
    {
        $fichemetier = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'fiche-metier');
        $missions = $fichemetier->getMissions() ; // todo $this->getActiviteService()->getActivitesByFicheMetierType($fichemetier);
        $applications = []; //$this->getFicheMetierService()->getApplicationsDictionnaires($fichemetier, true);
        $competences = []; //$this->getFicheMetierService()->getCompetencesDictionnaires($fichemetier, true);
        $missions = $fichemetier->getMissions() ;
        $applications = $this->getFicheMetierService()->getApplicationsDictionnaires($fichemetier, true);
        $competences =  $this->getFicheMetierService()->getCompetencesDictionnaires($fichemetier, true);

        return new ViewModel([
            'fiche' => $fichemetier,
@@ -109,7 +113,7 @@ class FicheMetierController extends AbstractActionController {
    public function modifierAction() : ViewModel
    {
        $fichemetier = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'fiche-metier');
        $missions = []; //todo $this->getActiviteService()->getActivitesByFicheMetierType($fichemetier);
        $missions = $fichemetier->getMissions();
        $applications = $this->getFicheMetierService()->getApplicationsDictionnaires($fichemetier, true);
        $competences = $this->getFicheMetierService()->getCompetencesDictionnaires($fichemetier, true);

@@ -341,74 +345,111 @@ class FicheMetierController extends AbstractActionController {

    /** GESTION DES MISSIONS ******************************************************************************************/

//    public function ajouterMissionAction(): ViewModel
//    {
//        $fichemetier = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'fiche-metier');
//
//        $mission = new Activite();
//        $form = $this->getModifierLibelleForm();
//        $form->setAttribute('action', $this->url()->fromRoute('fiche-metier/ajouter-mission', ['fiche-metier' => $fichemetier->getId()], [], true));
//        $form->bind($mission);
//
//        $request = $this->getRequest();
//        if ($request->isPost()) {
//            $data = $request->getPost();
//            if (isset($data['libelle']) AND trim($data['libelle'])) {
//                $this->getActiviteService()->create($mission);
//                $this->getActiviteService()->updateLibelle($mission, $data);
//                $this->getActiviteService()->createFicheMetierActivite($fichemetier, $mission);
//            }
//        }
//
//        $vm = new ViewModel();
//        $vm->setTemplate('default/default-form');
//        $vm->setVariables([
//            'title' => 'Ajouter une mission',
//            'form' => $form,
//        ]);
//        return $vm;
//    }
//
//    public function deplacerMissionAction(): Response
//    {
//        $direction = $this->params()->fromRoute('direction');
//        $coupleId = $this->params()->fromRoute('id');
//        $couple = $this->getActiviteService()->getFicheMetierActivite($coupleId);
//
//        if ($direction === 'up') $this->getActiviteService()->moveUp($couple);
//        if ($direction === 'down') $this->getActiviteService()->moveDown($couple);
//
//        $this->getActiviteService()->updateFicheMetierActivite($couple);
//
//        return $this->redirect()->toRoute('fiche-metier/modifier', ['fiche-metier' => $couple->getFiche()->getId()], [], true);
//    }
//
//    public function supprimerMissionAction(): Response
//    {
//        $coupleId = $this->params()->fromRoute('id');
//        $couple = $this->getActiviteService()->getFicheMetierActivite($coupleId);
//
//        $this->getActiviteService()->removeFicheMetierActivite($couple);
//
//        return $this->redirect()->toRoute('fiche-metier/modifier', ['fiche-metier' => $couple->getFiche()->getId()], [], true);
//    }
    public function ajouterMissionAction(): ViewModel
    {
        $fichemetier = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'fiche-metier');

        $mission = new Mission();
        $form = $this->getModifierLibelleForm();
        $form->setAttribute('action', $this->url()->fromRoute('fiche-metier/ajouter-mission', ['fiche-metier' => $fichemetier->getId()], [], true));
        $form->bind($mission);

        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getMissionPrincipaleService()->create($mission);
                $this->getFicheMetierService()->addMission($fichemetier, $mission);
                $this->getFicheMetierService()->compressMission($fichemetier);
                exit();
            }
        }

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

    public function supprimerMissionAction(): Response
    {
        $fichemetier = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'fiche-metier');
        $mission = $this->getMissionPrincipaleService()->getRequestedMissionPrincipale($this);

        $this->getFicheMetierService()->removeMission($fichemetier, $mission);
        $this->getFicheMetierService()->compressMission($fichemetier);

        return $this->redirect()->toRoute('fiche-metier/modifier', ['fiche-metier' => $fichemetier->getId()], [], true);
    }

    public function deplacerMissionAction(): Response
    {
        $fichemetier = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'fiche-metier');
        $mission = $this->getMissionPrincipaleService()->getRequestedMissionPrincipale($this);
        $direction = $this->params()->fromRoute('direction');

        $this->getFicheMetierService()->compressMission($fichemetier);
        $this->getFicheMetierService()->moveMission($fichemetier, $mission, $direction);

        return $this->redirect()->toRoute('fiche-metier/modifier', ['fiche-metier' => $fichemetier->getId()], [], true);
    }

    /** GESTION DES APPLICATIONS ET DES COMPETENTES *******************************************************************/

    public function gererApplicationsAction() : ViewModel
    {
        $fichemetier = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'fiche-metier');
        $form = $this->getSelectionApplicationForm();
        $form->setAttribute('action', $this->url()->fromRoute('fiche-metier/gerer-applications', ['fiche-metier' => $fichemetier->getId()], [], true));
        $form->bind($fichemetier);

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

        $vm = new ViewModel([
            'title' => "Gestion des applications associées à la fiche métier",
            'form' => $form,
        ]);
        $vm->setTemplate('default/default-form');
        return $vm;
    }

    public function gererCompetencesAction() : ViewModel
    {
        $fichemetier = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'fiche-metier');
        $form = $this->getSelectionCompetenceForm();
        $form->setAttribute('action', $this->url()->fromRoute('fiche-metier/gerer-competences', ['fiche-metier' => $fichemetier->getId()], [], true));
        $form->bind($fichemetier);

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

        $vm = new ViewModel([
            'title' => "Gestion des compétences associées à la fiche métier",
            'form' => $form,
        ]);
        $vm->setTemplate('default/default-form');
        return $vm;
    }

//    public function ajouterActiviteExistanteAction(): ViewModel
//    {
//        $fiche = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'id', true);
//
//        $request = $this->getRequest();
//        if ($request->isPost()) {
//            $data = $request->getPost();
//            $activite = $this->getActiviteService()->getActivite($data['activite']["id"]);
//            $this->getActiviteService()->createFicheMetierActivite($fiche, $activite);
//        }
//
//        return new ViewModel([
//            'title' => 'Ajouter une activité existante',
//            'url' => $this->url()->fromRoute('fiche-metier-type/ajouter-activite-existante', ['id' => $fiche->getId()], [], true),
//        ]);
//    }

    /** LEFT OVER *****************************************************************************************************/

+8 −0
Original line number Diff line number Diff line
@@ -3,6 +3,8 @@
namespace FicheMetier\Controller;

use Application\Form\ModifierLibelle\ModifierLibelleForm;
use Element\Form\SelectionApplication\SelectionApplicationForm;
use Element\Form\SelectionCompetence\SelectionCompetenceForm;
use FicheMetier\Form\FicheMetierImportation\FicheMetierImportationForm;
use FicheMetier\Form\Raison\RaisonForm;
use FicheMetier\Service\FicheMetier\FicheMetierService;
@@ -43,12 +45,16 @@ class FicheMetierControllerFactory {
         * @var FicheMetierImportationForm $importationForm
         * @var ModifierLibelleForm $modifierLibelleForm
         * @var RaisonForm $raisonForm
         * @var SelectionApplicationForm $selectionnerApplicationForm
         * @var SelectionCompetenceForm $selectionnerCompetenceForm
         * @var SelectionEtatForm $selectionnerEtatForm
         * @var SelectionnerMetierForm $selectionnerMetierForm
         */
        $importationForm = $container->get('FormElementManager')->get(FicheMetierImportationForm::class);
        $modifierLibelleForm = $container->get('FormElementManager')->get(ModifierLibelleForm::class);
        $selectionnerEtatForm = $container->get('FormElementManager')->get(SelectionEtatForm::class);
        $selectionnerApplicationForm = $container->get('FormElementManager')->get(SelectionApplicationForm::class);
        $selectionnerCompetenceForm = $container->get('FormElementManager')->get(SelectionCompetenceForm::class);
        $selectionnerMetierForm = $container->get('FormElementManager')->get(SelectionnerMetierForm::class);
        $raisonForm = $container->get('FormElementManager')->get(RaisonForm::class);

@@ -61,6 +67,8 @@ class FicheMetierControllerFactory {
        $controller->setFicheMetierImportationForm($importationForm);
        $controller->setModifierLibelleForm($modifierLibelleForm);
        $controller->setRaisonForm($raisonForm);
        $controller->setSelectionApplicationForm($selectionnerApplicationForm);
        $controller->setSelectionCompetenceForm($selectionnerCompetenceForm);
        $controller->setSelectionEtatForm($selectionnerEtatForm);
        $controller->setSelectionnerMetierForm($selectionnerMetierForm);
        return $controller;
+4 −1
Original line number Diff line number Diff line
@@ -75,7 +75,6 @@ class FicheMetier implements HistoriqueAwareInterface, HasEtatInterface, HasMeti
        return $missions;
    }


    /** FONCTION POUR MACRO *******************************************************************************************/

    /**
@@ -100,6 +99,10 @@ class FicheMetier implements HistoriqueAwareInterface, HasEtatInterface, HasMeti
        return $metier->getLibelle();
    }

    /**
     * Utiliser dans la macro FICHE_METIER#MISSIONS_PRINCIPALES
     * @noinspection PhpUnused
     */
    public function getMissionsAsList() : string
    {
        $texte = "";
Loading