Loading module/Application/src/Application/Controller/FicheMetierController.php +0 −85 Original line number Diff line number Diff line Loading @@ -5,7 +5,6 @@ namespace Application\Controller; use Application\Entity\Db\Activite; use Application\Form\Activite\ActiviteForm; use Application\Form\Activite\ActiviteFormAwareTrait; use Application\Form\FicheMetierImportation\FicheMetierImportationFormAwareTrait; use Application\Form\SelectionFicheMetier\SelectionFicheMetierFormAwareTrait; use Application\Provider\Etat\FicheMetierEtats; use Application\Service\Activite\ActiviteServiceAwareTrait; Loading @@ -15,15 +14,12 @@ use Application\Service\Configuration\ConfigurationServiceAwareTrait; use Application\Service\FicheMetier\FicheMetierServiceAwareTrait; use Application\Service\ParcoursDeFormation\ParcoursDeFormationServiceAwareTrait; use Doctrine\ORM\ORMException; use Element\Entity\Db\Application; use Element\Entity\Db\ApplicationElement; use Element\Entity\Db\Competence; use Element\Entity\Db\CompetenceElement; use Element\Form\SelectionApplication\SelectionApplicationFormAwareTrait; use Element\Form\SelectionCompetence\SelectionCompetenceFormAwareTrait; use Element\Service\HasApplicationCollection\HasApplicationCollectionServiceAwareTrait; use Element\Service\HasCompetenceCollection\HasCompetenceCollectionServiceAwareTrait; use FicheMetier\Entity\Db\FicheMetier; use Formation\Form\SelectionFormation\SelectionFormationFormAwareTrait; use Laminas\Http\Request; use Laminas\Http\Response; Loading Loading @@ -59,7 +55,6 @@ class FicheMetierController extends AbstractActionController /** Traits associés aux formulaires */ use ActiviteFormAwareTrait; use FicheMetierImportationFormAwareTrait; use SelectionApplicationFormAwareTrait; use SelectionCompetenceFormAwareTrait; use SelectionEtatFormAwareTrait; Loading Loading @@ -297,86 +292,6 @@ class FicheMetierController extends AbstractActionController return $this->redirect()->toRoute('fiche-metier-type/editer', ['id' => $fiche->getId()], [], true); } /** IMPORTATION ***************************************************************************************************/ private function genererInfosFromCSV(string $fichier_path): array { $csvInfos = $this->getFicheMetierService()->readFromCSV($fichier_path); $ajouts = $this->getConfigurationService()->getConfigurationsFicheMetier(); foreach ($ajouts as $ajout) { if ($ajout->getEntityType() === Application::class) { $application = $ajout->getEntity(); $csvInfos['applications'][$application->getId()] = $application; } if ($ajout->getEntityType() === Competence::class) { $competence = $ajout->getEntity(); $csvInfos['competencesListe'][$competence->getId()] = $competence; $csvInfos['competences'][$competence->getType()->getLibelle()][$competence->getId()] = $competence; } } // tri foreach (['Connaissances', 'Opérationnelles', 'Comportementales'] as $type) { usort($csvInfos['competences'][$type], function (Competence $a, Competence $b) { return $a->getLibelle() > $b->getLibelle(); }); } usort($csvInfos['applications'], function (Application $a, Application $b) { return $a->getLibelle() > $b->getLibelle(); }); return $csvInfos; } public function importerDepuisCsvAction() { $form = $this->getFicheMetierImportationForm(); $form->setAttribute('action', $this->url()->fromRoute('fiche-metier-type/importer-depuis-csv', ['mode' => 'preview', 'path' => null], [], true)); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $file = $request->getFiles(); $fichier_path = $file['fichier']['tmp_name']; $mode = $data['mode']; $csvInfos = $this->genererInfosFromCSV($fichier_path); if ($mode !== null) { if ($mode === 'import') { if ($csvInfos['metier'] !== null and empty($csvInfos['competences']['Manquantes'])) { $fiche = $this->getFicheMetierService()->importFromCsvArray($csvInfos); /** @see \Application\Controller\FicheMetierController::afficherAction() */ return $this->redirect()->toRoute('fiche-metier-type/afficher', ['id' => $fiche->getId()], [], true); } } return new ViewModel([ 'fichier_path' => $fichier_path, 'form' => $form, 'mode' => $mode, 'code' => $csvInfos['code'], 'metier' => $csvInfos['metier'], 'mission' => $csvInfos['mission'], 'activites' => $csvInfos['activites'], 'applications' => $csvInfos['applications'], 'competences' => $csvInfos['competences'], ]); } } $vm = new ViewModel([ 'title' => "Importation d'une fiche métier", 'form' => $form, ]); return $vm; } /** Graphique *****************************************************************************************************/ public function graphiqueCompetencesAction(): ViewModel Loading module/Application/src/Application/Controller/FicheMetierControllerFactory.php +0 −4 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ namespace Application\Controller; use Application\Form\Activite\ActiviteForm; use Application\Form\FicheMetierImportation\FicheMetierImportationForm; use Application\Form\SelectionFicheMetier\SelectionFicheMetierForm; use Application\Service\Activite\ActiviteService; use Application\Service\ActiviteDescription\ActiviteDescriptionService; Loading Loading @@ -68,7 +67,6 @@ class FicheMetierControllerFactory $parcoursService = $container->get(ParcoursDeFormationService::class); /** * @var FicheMetierImportationForm $ficheMetierImportationForm * @var ActiviteForm $activiteForm * @var SelectionApplicationForm $selectionApplicationForm * @var SelectionCompetenceForm $selectionCompetenceForm Loading @@ -83,7 +81,6 @@ class FicheMetierControllerFactory $selectionFormationForm = $container->get('FormElementManager')->get(SelectionFormationForm::class); $selectionEtatForm = $container->get('FormElementManager')->get(SelectionEtatForm::class); $selectionFicheMetierForm = $container->get('FormElementManager')->get(SelectionFicheMetierForm::class); $ficheMetierImportationForm = $container->get('FormElementManager')->get(FicheMetierImportationForm::class); $selectionnerMetierForm = $container->get('FormElementManager')->get(SelectionnerMetierForm::class); /** @var FicheMetierController $controller */ Loading @@ -109,7 +106,6 @@ class FicheMetierControllerFactory $controller->setSelectionFormationForm($selectionFormationForm); $controller->setSelectionEtatForm($selectionEtatForm); $controller->setSelectionFicheMetierForm($selectionFicheMetierForm); $controller->setFicheMetierImportationForm($ficheMetierImportationForm); $controller->setSelectionnerMetierForm($selectionnerMetierForm); return $controller; Loading module/Application/src/Application/Service/FicheMetier/FicheMetierService.php +31 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ use Application\Entity\Db\Activite; use Application\Entity\Db\ActiviteDescription; use Application\Provider\Template\PdfTemplate; use Application\Service\Configuration\ConfigurationServiceAwareTrait; use Element\Entity\Db\Application; use FicheMetier\Entity\Db\FicheMetier; use Application\Entity\Db\FicheMetierActivite; use Application\Provider\Etat\FicheMetierEtats; Loading Loading @@ -591,4 +592,34 @@ class FicheMetierService { } } public function genererInfosFromCSV(string $fichier_path): array { $csvInfos = $this->readFromCSV($fichier_path); $ajouts = $this->getConfigurationService()->getConfigurationsFicheMetier(); foreach ($ajouts as $ajout) { if ($ajout->getEntityType() === Application::class) { $application = $ajout->getEntity(); $csvInfos['applications'][$application->getId()] = $application; } if ($ajout->getEntityType() === Competence::class) { $competence = $ajout->getEntity(); $csvInfos['competencesListe'][$competence->getId()] = $competence; $csvInfos['competences'][$competence->getType()->getLibelle()][$competence->getId()] = $competence; } } // tri foreach (['Connaissances', 'Opérationnelles', 'Comportementales'] as $type) { usort($csvInfos['competences'][$type], function (Competence $a, Competence $b) { return $a->getLibelle() > $b->getLibelle(); }); } usort($csvInfos['applications'], function (Application $a, Application $b) { return $a->getLibelle() > $b->getLibelle(); }); return $csvInfos; } } No newline at end of file module/Application/view/application/fiche-metier/index.phtml +2 −2 Original line number Diff line number Diff line Loading @@ -34,8 +34,8 @@ $this->headTitle('Index des fiches métiers'); <span class="icon icon-ajouter"></span> Ajouter une fiche métier </a> <?php /** @see \Application\Controller\FicheMetierController::importerDepuisCsvAction() */ ?> <a href="<?php echo $this->url('fiche-metier-type/importer-depuis-csv', [], [], true); ?>" <?php /** @see FicheMetierController::importerAction() */ ?> <a href="<?php echo $this->url('fiche-metier/importer', [], [], true); ?>" class="btn btn-primary action"> <span class="icon icon-ajouter"></span> Importer depuis CSV Loading module/FicheMetier/config/merged/fiche-metier.config.php +11 −0 Original line number Diff line number Diff line Loading @@ -115,6 +115,17 @@ return [ ], ], ], 'importer' => [ 'type' => Literal::class, 'options' => [ 'route' => '/importer', 'defaults' => [ /** @see FicheMetierController::importerAction() */ 'controller' => FicheMetierController::class, 'action' => 'importer', ], ], ], 'dupliquer' => [ 'type' => Segment::class, 'options' => [ Loading Loading
module/Application/src/Application/Controller/FicheMetierController.php +0 −85 Original line number Diff line number Diff line Loading @@ -5,7 +5,6 @@ namespace Application\Controller; use Application\Entity\Db\Activite; use Application\Form\Activite\ActiviteForm; use Application\Form\Activite\ActiviteFormAwareTrait; use Application\Form\FicheMetierImportation\FicheMetierImportationFormAwareTrait; use Application\Form\SelectionFicheMetier\SelectionFicheMetierFormAwareTrait; use Application\Provider\Etat\FicheMetierEtats; use Application\Service\Activite\ActiviteServiceAwareTrait; Loading @@ -15,15 +14,12 @@ use Application\Service\Configuration\ConfigurationServiceAwareTrait; use Application\Service\FicheMetier\FicheMetierServiceAwareTrait; use Application\Service\ParcoursDeFormation\ParcoursDeFormationServiceAwareTrait; use Doctrine\ORM\ORMException; use Element\Entity\Db\Application; use Element\Entity\Db\ApplicationElement; use Element\Entity\Db\Competence; use Element\Entity\Db\CompetenceElement; use Element\Form\SelectionApplication\SelectionApplicationFormAwareTrait; use Element\Form\SelectionCompetence\SelectionCompetenceFormAwareTrait; use Element\Service\HasApplicationCollection\HasApplicationCollectionServiceAwareTrait; use Element\Service\HasCompetenceCollection\HasCompetenceCollectionServiceAwareTrait; use FicheMetier\Entity\Db\FicheMetier; use Formation\Form\SelectionFormation\SelectionFormationFormAwareTrait; use Laminas\Http\Request; use Laminas\Http\Response; Loading Loading @@ -59,7 +55,6 @@ class FicheMetierController extends AbstractActionController /** Traits associés aux formulaires */ use ActiviteFormAwareTrait; use FicheMetierImportationFormAwareTrait; use SelectionApplicationFormAwareTrait; use SelectionCompetenceFormAwareTrait; use SelectionEtatFormAwareTrait; Loading Loading @@ -297,86 +292,6 @@ class FicheMetierController extends AbstractActionController return $this->redirect()->toRoute('fiche-metier-type/editer', ['id' => $fiche->getId()], [], true); } /** IMPORTATION ***************************************************************************************************/ private function genererInfosFromCSV(string $fichier_path): array { $csvInfos = $this->getFicheMetierService()->readFromCSV($fichier_path); $ajouts = $this->getConfigurationService()->getConfigurationsFicheMetier(); foreach ($ajouts as $ajout) { if ($ajout->getEntityType() === Application::class) { $application = $ajout->getEntity(); $csvInfos['applications'][$application->getId()] = $application; } if ($ajout->getEntityType() === Competence::class) { $competence = $ajout->getEntity(); $csvInfos['competencesListe'][$competence->getId()] = $competence; $csvInfos['competences'][$competence->getType()->getLibelle()][$competence->getId()] = $competence; } } // tri foreach (['Connaissances', 'Opérationnelles', 'Comportementales'] as $type) { usort($csvInfos['competences'][$type], function (Competence $a, Competence $b) { return $a->getLibelle() > $b->getLibelle(); }); } usort($csvInfos['applications'], function (Application $a, Application $b) { return $a->getLibelle() > $b->getLibelle(); }); return $csvInfos; } public function importerDepuisCsvAction() { $form = $this->getFicheMetierImportationForm(); $form->setAttribute('action', $this->url()->fromRoute('fiche-metier-type/importer-depuis-csv', ['mode' => 'preview', 'path' => null], [], true)); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $file = $request->getFiles(); $fichier_path = $file['fichier']['tmp_name']; $mode = $data['mode']; $csvInfos = $this->genererInfosFromCSV($fichier_path); if ($mode !== null) { if ($mode === 'import') { if ($csvInfos['metier'] !== null and empty($csvInfos['competences']['Manquantes'])) { $fiche = $this->getFicheMetierService()->importFromCsvArray($csvInfos); /** @see \Application\Controller\FicheMetierController::afficherAction() */ return $this->redirect()->toRoute('fiche-metier-type/afficher', ['id' => $fiche->getId()], [], true); } } return new ViewModel([ 'fichier_path' => $fichier_path, 'form' => $form, 'mode' => $mode, 'code' => $csvInfos['code'], 'metier' => $csvInfos['metier'], 'mission' => $csvInfos['mission'], 'activites' => $csvInfos['activites'], 'applications' => $csvInfos['applications'], 'competences' => $csvInfos['competences'], ]); } } $vm = new ViewModel([ 'title' => "Importation d'une fiche métier", 'form' => $form, ]); return $vm; } /** Graphique *****************************************************************************************************/ public function graphiqueCompetencesAction(): ViewModel Loading
module/Application/src/Application/Controller/FicheMetierControllerFactory.php +0 −4 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ namespace Application\Controller; use Application\Form\Activite\ActiviteForm; use Application\Form\FicheMetierImportation\FicheMetierImportationForm; use Application\Form\SelectionFicheMetier\SelectionFicheMetierForm; use Application\Service\Activite\ActiviteService; use Application\Service\ActiviteDescription\ActiviteDescriptionService; Loading Loading @@ -68,7 +67,6 @@ class FicheMetierControllerFactory $parcoursService = $container->get(ParcoursDeFormationService::class); /** * @var FicheMetierImportationForm $ficheMetierImportationForm * @var ActiviteForm $activiteForm * @var SelectionApplicationForm $selectionApplicationForm * @var SelectionCompetenceForm $selectionCompetenceForm Loading @@ -83,7 +81,6 @@ class FicheMetierControllerFactory $selectionFormationForm = $container->get('FormElementManager')->get(SelectionFormationForm::class); $selectionEtatForm = $container->get('FormElementManager')->get(SelectionEtatForm::class); $selectionFicheMetierForm = $container->get('FormElementManager')->get(SelectionFicheMetierForm::class); $ficheMetierImportationForm = $container->get('FormElementManager')->get(FicheMetierImportationForm::class); $selectionnerMetierForm = $container->get('FormElementManager')->get(SelectionnerMetierForm::class); /** @var FicheMetierController $controller */ Loading @@ -109,7 +106,6 @@ class FicheMetierControllerFactory $controller->setSelectionFormationForm($selectionFormationForm); $controller->setSelectionEtatForm($selectionEtatForm); $controller->setSelectionFicheMetierForm($selectionFicheMetierForm); $controller->setFicheMetierImportationForm($ficheMetierImportationForm); $controller->setSelectionnerMetierForm($selectionnerMetierForm); return $controller; Loading
module/Application/src/Application/Service/FicheMetier/FicheMetierService.php +31 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ use Application\Entity\Db\Activite; use Application\Entity\Db\ActiviteDescription; use Application\Provider\Template\PdfTemplate; use Application\Service\Configuration\ConfigurationServiceAwareTrait; use Element\Entity\Db\Application; use FicheMetier\Entity\Db\FicheMetier; use Application\Entity\Db\FicheMetierActivite; use Application\Provider\Etat\FicheMetierEtats; Loading Loading @@ -591,4 +592,34 @@ class FicheMetierService { } } public function genererInfosFromCSV(string $fichier_path): array { $csvInfos = $this->readFromCSV($fichier_path); $ajouts = $this->getConfigurationService()->getConfigurationsFicheMetier(); foreach ($ajouts as $ajout) { if ($ajout->getEntityType() === Application::class) { $application = $ajout->getEntity(); $csvInfos['applications'][$application->getId()] = $application; } if ($ajout->getEntityType() === Competence::class) { $competence = $ajout->getEntity(); $csvInfos['competencesListe'][$competence->getId()] = $competence; $csvInfos['competences'][$competence->getType()->getLibelle()][$competence->getId()] = $competence; } } // tri foreach (['Connaissances', 'Opérationnelles', 'Comportementales'] as $type) { usort($csvInfos['competences'][$type], function (Competence $a, Competence $b) { return $a->getLibelle() > $b->getLibelle(); }); } usort($csvInfos['applications'], function (Application $a, Application $b) { return $a->getLibelle() > $b->getLibelle(); }); return $csvInfos; } } No newline at end of file
module/Application/view/application/fiche-metier/index.phtml +2 −2 Original line number Diff line number Diff line Loading @@ -34,8 +34,8 @@ $this->headTitle('Index des fiches métiers'); <span class="icon icon-ajouter"></span> Ajouter une fiche métier </a> <?php /** @see \Application\Controller\FicheMetierController::importerDepuisCsvAction() */ ?> <a href="<?php echo $this->url('fiche-metier-type/importer-depuis-csv', [], [], true); ?>" <?php /** @see FicheMetierController::importerAction() */ ?> <a href="<?php echo $this->url('fiche-metier/importer', [], [], true); ?>" class="btn btn-primary action"> <span class="icon icon-ajouter"></span> Importer depuis CSV Loading
module/FicheMetier/config/merged/fiche-metier.config.php +11 −0 Original line number Diff line number Diff line Loading @@ -115,6 +115,17 @@ return [ ], ], ], 'importer' => [ 'type' => Literal::class, 'options' => [ 'route' => '/importer', 'defaults' => [ /** @see FicheMetierController::importerAction() */ 'controller' => FicheMetierController::class, 'action' => 'importer', ], ], ], 'dupliquer' => [ 'type' => Segment::class, 'options' => [ Loading