Loading module/Application/config/merged/fiche-metier.config.php +18 −0 Changes for module/Application/config/merged/fiche-metier.config.php: 18 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -8,6 +8,10 @@ use Application\Form\FicheMetier\LibelleForm; use Application\Form\FicheMetier\LibelleFormFactory; use Application\Form\FicheMetier\LibelleHydrator; use Application\Form\FicheMetier\LibelleHydratorFactory; use Application\Form\FicheMetierImportation\FicheMetierImportationForm; use Application\Form\FicheMetierImportation\FicheMetierImportationFormFactory; use Application\Form\FicheMetierImportation\FichierMetierImportationHydrator; use Application\Form\FicheMetierImportation\FichierMetierImportationHydratorFactory; use Application\Form\SelectionFicheMetier\SelectionFicheMetierForm; use Application\Form\SelectionFicheMetier\SelectionFicheMetierFormFactory; use Application\Provider\Privilege\FicheMetierPrivileges; Loading Loading @@ -54,6 +58,7 @@ return [ 'action' => [ 'ajouter', 'dupliquer', 'importer-depuis-csv', // 'ajouter-terminer', ], 'privileges' => [ Loading Loading @@ -234,6 +239,17 @@ return [ ], 'may_terminate' => true, ], 'importer-depuis-csv' => [ 'type' => Segment::class, 'options' => [ 'route' => '/importer-depuis-csv[/:importation]', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'importer-depuis-csv', ], ], 'may_terminate' => true, ], 'afficher-applications' => [ 'type' => Segment::class, 'options' => [ Loading Loading @@ -508,11 +524,13 @@ return [ 'factories' => [ LibelleForm::class => LibelleFormFactory::class, SelectionFicheMetierForm::class => SelectionFicheMetierFormFactory::class, FicheMetierImportationForm::class => FicheMetierImportationFormFactory::class, ], ], 'hydrators' => [ 'factories' => [ LibelleHydrator::class => LibelleHydratorFactory::class, FichierMetierImportationHydrator::class => FichierMetierImportationHydratorFactory::class, ], ], 'view_helpers' => [ Loading module/Application/src/Application/Controller/FicheMetierController.php +112 −15 Changes for module/Application/src/Application/Controller/FicheMetierController.php: 112 added lines, 15 removed lines. Original line number Diff line number Diff line Loading @@ -3,28 +3,38 @@ namespace Application\Controller; use Application\Entity\Db\Activite; use Application\Provider\Etat\FicheMetierEtats; use Application\Provider\Template\PdfTemplate; use Element\Entity\Db\ApplicationElement; use Element\Entity\Db\CompetenceElement; use Application\Entity\Db\ActiviteDescription; use Application\Entity\Db\FicheMetier; use Application\Entity\Db\ParcoursDeFormation; use Application\Form\Activite\ActiviteForm; use Application\Form\Activite\ActiviteFormAwareTrait; use Application\Form\FicheMetier\LibelleForm; use Application\Form\FicheMetier\LibelleFormAwareTrait; use Element\Form\SelectionApplication\SelectionApplicationFormAwareTrait; use Element\Form\SelectionCompetence\SelectionCompetenceFormAwareTrait; use Application\Form\FicheMetierImportation\FicheMetierImportationFormAwareTrait; use Application\Form\SelectionFicheMetier\SelectionFicheMetierFormAwareTrait; use Application\Provider\Etat\FicheMetierEtats; use Application\Provider\Template\PdfTemplate; use Application\Service\Activite\ActiviteServiceAwareTrait; use Application\Service\ActiviteDescription\ActiviteDescriptionServiceAwareTrait; use Application\Service\Agent\AgentServiceAwareTrait; use Application\Service\Configuration\ConfigurationServiceAwareTrait; use Application\Service\FicheMetier\FicheMetierServiceAwareTrait; use Element\Service\HasApplicationCollection\HasApplicationCollectionServiceAwareTrait; use Element\Service\HasCompetenceCollection\HasCompetenceCollectionServiceAwareTrait; 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 Formation\Form\SelectionFormation\SelectionFormationFormAwareTrait; use Laminas\Http\Request; use Laminas\Http\Response; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger; use Laminas\View\Model\ViewModel; use Metier\Service\Domaine\DomaineServiceAwareTrait; use Metier\Service\Metier\MetierServiceAwareTrait; use Mpdf\MpdfException; Loading @@ -34,18 +44,14 @@ use UnicaenEtat\Service\Etat\EtatServiceAwareTrait; use UnicaenEtat\Service\EtatType\EtatTypeServiceAwareTrait; use UnicaenPdf\Exporter\PdfExporter; use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait; use Laminas\Http\Request; use Laminas\Http\Response; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger; use Laminas\View\Model\ViewModel; /** @method FlashMessenger flashMessenger() */ class FicheMetierController extends AbstractActionController { /** Traits associé aux services */ /** Traits associés aux services */ use ActiviteServiceAwareTrait; use ActiviteDescriptionServiceAwareTrait; use AgentServiceAwareTrait; use ConfigurationServiceAwareTrait; use DomaineServiceAwareTrait; Loading @@ -58,9 +64,10 @@ class FicheMetierController extends AbstractActionController use ParcoursDeFormationServiceAwareTrait; use RenduServiceAwareTrait; /** Traits associé aux formulaires */ /** Traits associés aux formulaires */ use ActiviteFormAwareTrait; use LibelleFormAwareTrait; use FicheMetierImportationFormAwareTrait; use SelectionApplicationFormAwareTrait; use SelectionCompetenceFormAwareTrait; use SelectionEtatFormAwareTrait; Loading @@ -68,6 +75,8 @@ class FicheMetierController extends AbstractActionController use SelectionFormationFormAwareTrait; const REFERENS_SEP = "|"; /** CRUD **********************************************************************************************************/ public function indexAction() : ViewModel Loading Loading @@ -492,6 +501,94 @@ class FicheMetierController extends AbstractActionController return $vm; } /** 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 === 'preview') { 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'], ]); } 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); } else { 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 +16 −0 Changes for module/Application/src/Application/Controller/FicheMetierControllerFactory.php: 16 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ namespace Application\Controller; use Application\Form\Activite\ActiviteForm; use Application\Form\FicheMetier\LibelleForm; use Application\Form\FicheMetierImportation\FicheMetierImportationForm; use Application\Service\ActiviteDescription\ActiviteDescriptionService; use Element\Form\SelectionApplication\SelectionApplicationForm; use Element\Form\SelectionCompetence\SelectionCompetenceForm; use Application\Form\SelectionFicheMetier\SelectionFicheMetierForm; Loading @@ -18,6 +20,8 @@ use Formation\Form\SelectionFormation\SelectionFormationForm; use Interop\Container\ContainerInterface; use Metier\Service\Domaine\DomaineService; use Metier\Service\Metier\MetierService; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; use UnicaenEtat\Form\SelectionEtat\SelectionEtatForm; use UnicaenEtat\Service\Etat\EtatService; use UnicaenEtat\Service\EtatType\EtatTypeService; Loading @@ -26,10 +30,17 @@ use UnicaenRenderer\Service\Rendu\RenduService; class FicheMetierControllerFactory { /** * @param ContainerInterface $container * @return FicheMetierController * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function __invoke(ContainerInterface $container): FicheMetierController { /** * @var ActiviteService $activiteService * @var ActiviteDescriptionService $activiteDescriptionService * @var AgentService $agentService ; * @var RenduService $renduService ; * @var DomaineService $domaineService Loading @@ -43,6 +54,7 @@ class FicheMetierControllerFactory * @var ParcoursDeFormationService $parcoursService */ $activiteService = $container->get(ActiviteService::class); $activiteDescriptionService = $container->get(ActiviteDescriptionService::class); $agentService = $container->get(AgentService::class); $renduService = $container->get(RenduService::class); $domaineService = $container->get(DomaineService::class); Loading @@ -57,6 +69,7 @@ class FicheMetierControllerFactory /** * @var LibelleForm $libelleForm * @var FicheMetierImportationForm $ficheMetierImportationForm * @var ActiviteForm $activiteForm * @var SelectionApplicationForm $selectionApplicationForm * @var SelectionCompetenceForm $selectionCompetenceForm Loading @@ -71,11 +84,13 @@ 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); /** @var FicheMetierController $controller */ $controller = new FicheMetierController(); $controller->setActiviteService($activiteService); $controller->setActiviteDescriptionService($activiteDescriptionService); $controller->setAgentService($agentService); $controller->setRenduService($renduService); $controller->setDomaineService($domaineService); Loading @@ -95,6 +110,7 @@ class FicheMetierControllerFactory $controller->setSelectionFormationForm($selectionFormationForm); $controller->setSelectionEtatForm($selectionEtatForm); $controller->setSelectionFicheMetierForm($selectionFicheMetierForm); $controller->setFicheMetierImportationForm($ficheMetierImportationForm); return $controller; } Loading module/Application/src/Application/Form/FicheMetierImportation/FicheMetierImportationForm.php 0 → 100644 +60 −0 Changes for module/Application/src/Application/Form/FicheMetierImportation/FicheMetierImportationForm.php: 60 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Application\Form\FicheMetierImportation; use Laminas\Form\Element\Button; use Laminas\Form\Element\File; use Laminas\Form\Element\Select; use Laminas\Form\Form; use Laminas\InputFilter\Factory; class FicheMetierImportationForm extends Form { public function init() { //file CSV $this->add([ 'type' => File::class, 'name' => 'fichier', 'options' => [ 'label' => 'Fiche métier au format CSV <span class="icon icon-star" title="Champ obligatoire"></span> :', 'label_options' => [ 'disable_html_escape' => true, ], ], ]); //mode $this->add([ 'type' => Select::class, 'name' => 'mode', 'options' => [ 'label' => 'Mode <span class="icon icon-star" title="Champ obligatoire"></span> :', 'label_options' => [ 'disable_html_escape' => true, ], 'value_options' => [ 'preview' => "Prévisualisation", 'import' => "Importation", ] ], 'attributes' => [ 'id' => 'mode', ], ]); //Submit $this->add([ 'type' => Button::class, 'name' => 'creer', 'options' => [ 'label' => 'Traiter le ficher', 'label_options' => [ 'disable_html_escape' => true, ], ], 'attributes' => [ 'type' => 'submit', 'class' => 'btn btn-primary', ], ]); $this->setInputFilter((new Factory())->createInputFilter([ 'fichier' => [ 'required' => true, ], 'mode' => ['required' => true, ], ])); } } No newline at end of file module/Application/src/Application/Form/FicheMetierImportation/FicheMetierImportationFormAwareTrait.php 0 → 100644 +26 −0 Changes for module/Application/src/Application/Form/FicheMetierImportation/FicheMetierImportationFormAwareTrait.php: 26 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Application\Form\FicheMetierImportation; trait FicheMetierImportationFormAwareTrait { private FicheMetierImportationForm $ficheMetierImportationForm; /** * @return FicheMetierImportationForm */ public function getFicheMetierImportationForm(): FicheMetierImportationForm { return $this->ficheMetierImportationForm; } /** * @param FicheMetierImportationForm $ficheMetierImportationForm */ public function setFicheMetierImportationForm(FicheMetierImportationForm $ficheMetierImportationForm): void { $this->ficheMetierImportationForm = $ficheMetierImportationForm; } } No newline at end of file Loading
module/Application/config/merged/fiche-metier.config.php +18 −0 Changes for module/Application/config/merged/fiche-metier.config.php: 18 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -8,6 +8,10 @@ use Application\Form\FicheMetier\LibelleForm; use Application\Form\FicheMetier\LibelleFormFactory; use Application\Form\FicheMetier\LibelleHydrator; use Application\Form\FicheMetier\LibelleHydratorFactory; use Application\Form\FicheMetierImportation\FicheMetierImportationForm; use Application\Form\FicheMetierImportation\FicheMetierImportationFormFactory; use Application\Form\FicheMetierImportation\FichierMetierImportationHydrator; use Application\Form\FicheMetierImportation\FichierMetierImportationHydratorFactory; use Application\Form\SelectionFicheMetier\SelectionFicheMetierForm; use Application\Form\SelectionFicheMetier\SelectionFicheMetierFormFactory; use Application\Provider\Privilege\FicheMetierPrivileges; Loading Loading @@ -54,6 +58,7 @@ return [ 'action' => [ 'ajouter', 'dupliquer', 'importer-depuis-csv', // 'ajouter-terminer', ], 'privileges' => [ Loading Loading @@ -234,6 +239,17 @@ return [ ], 'may_terminate' => true, ], 'importer-depuis-csv' => [ 'type' => Segment::class, 'options' => [ 'route' => '/importer-depuis-csv[/:importation]', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'importer-depuis-csv', ], ], 'may_terminate' => true, ], 'afficher-applications' => [ 'type' => Segment::class, 'options' => [ Loading Loading @@ -508,11 +524,13 @@ return [ 'factories' => [ LibelleForm::class => LibelleFormFactory::class, SelectionFicheMetierForm::class => SelectionFicheMetierFormFactory::class, FicheMetierImportationForm::class => FicheMetierImportationFormFactory::class, ], ], 'hydrators' => [ 'factories' => [ LibelleHydrator::class => LibelleHydratorFactory::class, FichierMetierImportationHydrator::class => FichierMetierImportationHydratorFactory::class, ], ], 'view_helpers' => [ Loading
module/Application/src/Application/Controller/FicheMetierController.php +112 −15 Changes for module/Application/src/Application/Controller/FicheMetierController.php: 112 added lines, 15 removed lines. Original line number Diff line number Diff line Loading @@ -3,28 +3,38 @@ namespace Application\Controller; use Application\Entity\Db\Activite; use Application\Provider\Etat\FicheMetierEtats; use Application\Provider\Template\PdfTemplate; use Element\Entity\Db\ApplicationElement; use Element\Entity\Db\CompetenceElement; use Application\Entity\Db\ActiviteDescription; use Application\Entity\Db\FicheMetier; use Application\Entity\Db\ParcoursDeFormation; use Application\Form\Activite\ActiviteForm; use Application\Form\Activite\ActiviteFormAwareTrait; use Application\Form\FicheMetier\LibelleForm; use Application\Form\FicheMetier\LibelleFormAwareTrait; use Element\Form\SelectionApplication\SelectionApplicationFormAwareTrait; use Element\Form\SelectionCompetence\SelectionCompetenceFormAwareTrait; use Application\Form\FicheMetierImportation\FicheMetierImportationFormAwareTrait; use Application\Form\SelectionFicheMetier\SelectionFicheMetierFormAwareTrait; use Application\Provider\Etat\FicheMetierEtats; use Application\Provider\Template\PdfTemplate; use Application\Service\Activite\ActiviteServiceAwareTrait; use Application\Service\ActiviteDescription\ActiviteDescriptionServiceAwareTrait; use Application\Service\Agent\AgentServiceAwareTrait; use Application\Service\Configuration\ConfigurationServiceAwareTrait; use Application\Service\FicheMetier\FicheMetierServiceAwareTrait; use Element\Service\HasApplicationCollection\HasApplicationCollectionServiceAwareTrait; use Element\Service\HasCompetenceCollection\HasCompetenceCollectionServiceAwareTrait; 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 Formation\Form\SelectionFormation\SelectionFormationFormAwareTrait; use Laminas\Http\Request; use Laminas\Http\Response; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger; use Laminas\View\Model\ViewModel; use Metier\Service\Domaine\DomaineServiceAwareTrait; use Metier\Service\Metier\MetierServiceAwareTrait; use Mpdf\MpdfException; Loading @@ -34,18 +44,14 @@ use UnicaenEtat\Service\Etat\EtatServiceAwareTrait; use UnicaenEtat\Service\EtatType\EtatTypeServiceAwareTrait; use UnicaenPdf\Exporter\PdfExporter; use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait; use Laminas\Http\Request; use Laminas\Http\Response; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger; use Laminas\View\Model\ViewModel; /** @method FlashMessenger flashMessenger() */ class FicheMetierController extends AbstractActionController { /** Traits associé aux services */ /** Traits associés aux services */ use ActiviteServiceAwareTrait; use ActiviteDescriptionServiceAwareTrait; use AgentServiceAwareTrait; use ConfigurationServiceAwareTrait; use DomaineServiceAwareTrait; Loading @@ -58,9 +64,10 @@ class FicheMetierController extends AbstractActionController use ParcoursDeFormationServiceAwareTrait; use RenduServiceAwareTrait; /** Traits associé aux formulaires */ /** Traits associés aux formulaires */ use ActiviteFormAwareTrait; use LibelleFormAwareTrait; use FicheMetierImportationFormAwareTrait; use SelectionApplicationFormAwareTrait; use SelectionCompetenceFormAwareTrait; use SelectionEtatFormAwareTrait; Loading @@ -68,6 +75,8 @@ class FicheMetierController extends AbstractActionController use SelectionFormationFormAwareTrait; const REFERENS_SEP = "|"; /** CRUD **********************************************************************************************************/ public function indexAction() : ViewModel Loading Loading @@ -492,6 +501,94 @@ class FicheMetierController extends AbstractActionController return $vm; } /** 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 === 'preview') { 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'], ]); } 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); } else { 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 +16 −0 Changes for module/Application/src/Application/Controller/FicheMetierControllerFactory.php: 16 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ namespace Application\Controller; use Application\Form\Activite\ActiviteForm; use Application\Form\FicheMetier\LibelleForm; use Application\Form\FicheMetierImportation\FicheMetierImportationForm; use Application\Service\ActiviteDescription\ActiviteDescriptionService; use Element\Form\SelectionApplication\SelectionApplicationForm; use Element\Form\SelectionCompetence\SelectionCompetenceForm; use Application\Form\SelectionFicheMetier\SelectionFicheMetierForm; Loading @@ -18,6 +20,8 @@ use Formation\Form\SelectionFormation\SelectionFormationForm; use Interop\Container\ContainerInterface; use Metier\Service\Domaine\DomaineService; use Metier\Service\Metier\MetierService; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; use UnicaenEtat\Form\SelectionEtat\SelectionEtatForm; use UnicaenEtat\Service\Etat\EtatService; use UnicaenEtat\Service\EtatType\EtatTypeService; Loading @@ -26,10 +30,17 @@ use UnicaenRenderer\Service\Rendu\RenduService; class FicheMetierControllerFactory { /** * @param ContainerInterface $container * @return FicheMetierController * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function __invoke(ContainerInterface $container): FicheMetierController { /** * @var ActiviteService $activiteService * @var ActiviteDescriptionService $activiteDescriptionService * @var AgentService $agentService ; * @var RenduService $renduService ; * @var DomaineService $domaineService Loading @@ -43,6 +54,7 @@ class FicheMetierControllerFactory * @var ParcoursDeFormationService $parcoursService */ $activiteService = $container->get(ActiviteService::class); $activiteDescriptionService = $container->get(ActiviteDescriptionService::class); $agentService = $container->get(AgentService::class); $renduService = $container->get(RenduService::class); $domaineService = $container->get(DomaineService::class); Loading @@ -57,6 +69,7 @@ class FicheMetierControllerFactory /** * @var LibelleForm $libelleForm * @var FicheMetierImportationForm $ficheMetierImportationForm * @var ActiviteForm $activiteForm * @var SelectionApplicationForm $selectionApplicationForm * @var SelectionCompetenceForm $selectionCompetenceForm Loading @@ -71,11 +84,13 @@ 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); /** @var FicheMetierController $controller */ $controller = new FicheMetierController(); $controller->setActiviteService($activiteService); $controller->setActiviteDescriptionService($activiteDescriptionService); $controller->setAgentService($agentService); $controller->setRenduService($renduService); $controller->setDomaineService($domaineService); Loading @@ -95,6 +110,7 @@ class FicheMetierControllerFactory $controller->setSelectionFormationForm($selectionFormationForm); $controller->setSelectionEtatForm($selectionEtatForm); $controller->setSelectionFicheMetierForm($selectionFicheMetierForm); $controller->setFicheMetierImportationForm($ficheMetierImportationForm); return $controller; } Loading
module/Application/src/Application/Form/FicheMetierImportation/FicheMetierImportationForm.php 0 → 100644 +60 −0 Changes for module/Application/src/Application/Form/FicheMetierImportation/FicheMetierImportationForm.php: 60 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Application\Form\FicheMetierImportation; use Laminas\Form\Element\Button; use Laminas\Form\Element\File; use Laminas\Form\Element\Select; use Laminas\Form\Form; use Laminas\InputFilter\Factory; class FicheMetierImportationForm extends Form { public function init() { //file CSV $this->add([ 'type' => File::class, 'name' => 'fichier', 'options' => [ 'label' => 'Fiche métier au format CSV <span class="icon icon-star" title="Champ obligatoire"></span> :', 'label_options' => [ 'disable_html_escape' => true, ], ], ]); //mode $this->add([ 'type' => Select::class, 'name' => 'mode', 'options' => [ 'label' => 'Mode <span class="icon icon-star" title="Champ obligatoire"></span> :', 'label_options' => [ 'disable_html_escape' => true, ], 'value_options' => [ 'preview' => "Prévisualisation", 'import' => "Importation", ] ], 'attributes' => [ 'id' => 'mode', ], ]); //Submit $this->add([ 'type' => Button::class, 'name' => 'creer', 'options' => [ 'label' => 'Traiter le ficher', 'label_options' => [ 'disable_html_escape' => true, ], ], 'attributes' => [ 'type' => 'submit', 'class' => 'btn btn-primary', ], ]); $this->setInputFilter((new Factory())->createInputFilter([ 'fichier' => [ 'required' => true, ], 'mode' => ['required' => true, ], ])); } } No newline at end of file
module/Application/src/Application/Form/FicheMetierImportation/FicheMetierImportationFormAwareTrait.php 0 → 100644 +26 −0 Changes for module/Application/src/Application/Form/FicheMetierImportation/FicheMetierImportationFormAwareTrait.php: 26 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Application\Form\FicheMetierImportation; trait FicheMetierImportationFormAwareTrait { private FicheMetierImportationForm $ficheMetierImportationForm; /** * @return FicheMetierImportationForm */ public function getFicheMetierImportationForm(): FicheMetierImportationForm { return $this->ficheMetierImportationForm; } /** * @param FicheMetierImportationForm $ficheMetierImportationForm */ public function setFicheMetierImportationForm(FicheMetierImportationForm $ficheMetierImportationForm): void { $this->ficheMetierImportationForm = $ficheMetierImportationForm; } } No newline at end of file