Loading module/Application/config/merged/fiche-metier.config.php +0 −138 Original line number Diff line number Diff line Loading @@ -36,11 +36,8 @@ return [ [ 'controller' => FicheMetierController::class, 'action' => [ 'afficher', 'afficher-applications', 'afficher-competences', 'exporter', 'exporter-toutes', 'graphique-applications', 'graphique-competences', Loading @@ -53,7 +50,6 @@ return [ 'controller' => FicheMetierController::class, 'action' => [ 'ajouter', 'dupliquer', 'importer-depuis-csv', // 'ajouter-terminer', ], Loading @@ -64,15 +60,12 @@ return [ [ 'controller' => FicheMetierController::class, 'action' => [ 'editer', 'retirer-activite', 'deplacer-activite', 'ajouter-nouvelle-activite', 'ajouter-activite-existante', 'changer-expertise', 'changer-etat', 'modifier-application', 'modifier-formation', Loading @@ -83,26 +76,6 @@ return [ FicheMetierPrivileges::FICHEMETIER_MODIFIER, ], ], [ 'controller' => FicheMetierController::class, 'action' => [ 'detruire', ], 'privileges' => [ FicheMetierPrivileges::FICHEMETIER_DETRUIRE, ], ], [ 'controller' => FicheMetierController::class, 'action' => [ 'ajouter-etat', 'modifier-etat', 'supprimer-etat', ], 'privileges' => [ FicheMetierPrivileges::FICHEMETIER_MODIFIER, ], ], ], ], ], Loading Loading @@ -156,52 +129,7 @@ return [ ], ], 'may_terminate' => true, 'child_routes' => [ 'etat' => [ 'type' => Literal::class, 'options' => [ 'route' => '/etat', 'defaults' => [ 'controller' => FicheMetierController::class, ], ], 'may_terminate' => false, 'child_routes' => [ 'ajouter' => [ 'type' => Literal::class, 'options' => [ 'route' => '/ajouter', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'ajouter-etat', ], ], 'may_terminate' => true, ], 'modifier' => [ 'type' => Segment::class, 'options' => [ 'route' => '/modifier/:etat', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'modifier-etat', ], ], 'may_terminate' => true, ], 'supprimer' => [ 'type' => Segment::class, 'options' => [ 'route' => '/supprimer/:etat', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'supprimer-etat', ], ], 'may_terminate' => true, ], ], ], 'ajouter' => [ 'type' => Literal::class, 'options' => [ Loading Loading @@ -290,17 +218,6 @@ return [ // ], // 'may_terminate' => true, // ], 'afficher' => [ 'type' => Segment::class, 'options' => [ 'route' => '/afficher/:id', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'afficher', ], ], 'may_terminate' => true, ], 'graphique-applications' => [ 'type' => Segment::class, 'options' => [ Loading @@ -323,50 +240,6 @@ return [ ], 'may_terminate' => true, ], 'exporter' => [ 'type' => Segment::class, 'options' => [ 'route' => '/exporter/:id', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'exporter', ], ], 'may_terminate' => true, ], 'exporter-toutes' => [ 'type' => Literal::class, 'options' => [ 'route' => '/exporter-toutes', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'exporter-toutes', ], ], 'may_terminate' => true, ], 'editer' => [ 'type' => Segment::class, 'options' => [ 'route' => '/editer[/:id]', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'editer', ], ], 'may_terminate' => true, ], 'detruire' => [ 'type' => Segment::class, 'options' => [ 'route' => '/detruire/:fiche-metier', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'detruire', ], ], 'may_terminate' => true, ], 'changer-expertise' => [ 'type' => Segment::class, 'options' => [ Loading @@ -378,17 +251,6 @@ return [ ], 'may_terminate' => true, ], 'changer-etat' => [ 'type' => Segment::class, 'options' => [ 'route' => '/changer-etat/:fiche-metier', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'changer-etat', ], ], 'may_terminate' => true, ], 'retirer-activite' => [ 'type' => Segment::class, 'options' => [ Loading module/Application/src/Application/Controller/FicheMetierController.php +49 −165 Original line number Diff line number Diff line Loading @@ -3,13 +3,11 @@ namespace Application\Controller; use Application\Entity\Db\Activite; use Application\Entity\Db\ParcoursDeFormation; 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\Provider\Template\PdfTemplate; use Application\Service\Activite\ActiviteServiceAwareTrait; use Application\Service\ActiviteDescription\ActiviteDescriptionServiceAwareTrait; use Application\Service\Agent\AgentServiceAwareTrait; Loading @@ -35,16 +33,13 @@ use Laminas\View\Model\ViewModel; use Metier\Form\SelectionnerMetier\SelectionnerMetierFormAwareTrait; use Metier\Service\Domaine\DomaineServiceAwareTrait; use Metier\Service\Metier\MetierServiceAwareTrait; use Mpdf\MpdfException; use UnicaenApp\Exception\RuntimeException; use UnicaenEtat\Form\SelectionEtat\SelectionEtatFormAwareTrait; use UnicaenEtat\Service\Etat\EtatServiceAwareTrait; use UnicaenEtat\Service\EtatType\EtatTypeServiceAwareTrait; use UnicaenPdf\Exporter\PdfExporter; use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait; /** @method FlashMessenger flashMessenger() */ class FicheMetierController extends AbstractActionController { /** Traits associés aux services */ Loading Loading @@ -99,23 +94,6 @@ class FicheMetierController extends AbstractActionController ]); } public function afficherAction() : ViewModel { $fiche = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'id', true); $missions = $this->getActiviteService()->getActivitesByFicheMetierType($fiche); $parcours = ($fiche->getMetier()->getCategorie())?$this->getParcoursDeFormationService()->generateParcoursArrayFromFicheMetier($fiche):null; $applications = $this->getFicheMetierService()->getApplicationsDictionnaires($fiche, true); $competences = $this->getFicheMetierService()->getCompetencesDictionnaires($fiche, true); return new ViewModel([ 'fiche' => $fiche, 'competences' => $competences, 'applications' => $applications, 'parcours' => $parcours, 'missions' => $missions, ]); } public function ajouterAction(): ViewModel { /** @var FicheMetier $fiche */ Loading Loading @@ -152,83 +130,6 @@ class FicheMetierController extends AbstractActionController return $vm; } public function dupliquerAction() : Response { $fiche = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'fiche-metier'); if ($fiche !== null) { $duplicata = $this->getFicheMetierService()->dupliquerFicheMetier($fiche); return $this->redirect()->toRoute('fiche-metier-type/editer', ['id' => $duplicata->getId()], [], true); } exit(); } public function editerAction() : ViewModel { $fiche = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'id', false); $missions = $this->getActiviteService()->getActivitesByFicheMetierType($fiche); $parcours = ($fiche->getMetier()->getCategorie())?$this->getParcoursDeFormationService()->generateParcoursArrayFromFicheMetier($fiche):null; $applications = $this->getFicheMetierService()->getApplicationsDictionnaires($fiche, true); $competences = $this->getFicheMetierService()->getCompetencesDictionnaires($fiche, true); return new ViewModel([ 'fiche' => $fiche, 'competences' => $competences, 'applications' => $applications, 'parcours' => $parcours, 'missions' => $missions, ]); } public function exporterAction() : string { $fichemetier = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'id', true); $vars = [ 'fichemetier' => $fichemetier, 'metier' => $fichemetier->getMetier(), 'parcours' => ($fichemetier->getMetier()->getCategorie())?$this->getParcoursDeFormationService()->getParcoursDeFormationByTypeAndReference(ParcoursDeFormation::TYPE_CATEGORIE, $fichemetier->getMetier()->getCategorie()->getId()):null, ]; $rendu = $this->getRenduService()->generateRenduByTemplateCode(PdfTemplate::FICHE_METIER, $vars); try { $exporter = new PdfExporter(); $exporter->getMpdf()->SetTitle($rendu->getSujet()); $exporter->setHeaderScript(''); $exporter->setFooterScript(''); $exporter->addBodyHtml($rendu->getCorps()); return $exporter->export($rendu->getSujet()); } catch (MpdfException $e) { throw new RuntimeException("Un problème est survenu lors de l'export en PDF",0,$e); } } public function detruireAction() : ViewModel { $fiche = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'fiche-metier'); /** @var Request $request */ $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); if ($data["reponse"] === "oui") { $this->getFicheMetierService()->delete($fiche); } exit(); } $vm = new ViewModel(); if ($fiche !== null) { $vm->setTemplate('application/default/confirmation'); $vm->setVariables([ 'title' => "Suppression de la fiche de poste de " . (($fiche and $fiche->getMetier()) ? $fiche->getMetier()->getLibelle() : "[Aucun métier]"), 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?", 'action' => $this->url()->fromRoute('fiche-metier-type/detruire', ["fiche-metier" => $fiche->getId()], [], true), ]); } return $vm; } /** ACTIVITE LIEE *************************************************************************************************/ public function ajouterNouvelleActiviteAction(): ViewModel Loading Loading @@ -429,34 +330,7 @@ class FicheMetierController extends AbstractActionController return $this->redirect()->toRoute('fiche-metier-type/editer', ['id' => $fiche->getId()], [], true); } /** GESTION DES ETATS DES FICHES METIERS **************************************************************************/ public function changerEtatAction() : ViewModel { $fiche = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'fiche-metier'); $form = $this->getSelectionEtatForm(); $form->setAttribute('action', $this->url()->fromRoute('fiche-metier-type/changer-etat', ['fiche-metier' => $fiche->getId()], [], true)); $form->bind($fiche); $form->reinit(FicheMetierEtats::TYPE); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getFicheMetierService()->update($fiche); } } $vm = new ViewModel(); $vm->setTemplate('application/default/default-form'); $vm->setVariables([ 'title' => "Changer l'état de la fiche métier", 'form' => $form, ]); return $vm; } /** IMPORTATION ***************************************************************************************************/ Loading @@ -479,9 +353,13 @@ class FicheMetierController extends AbstractActionController // tri foreach (['Connaissances', 'Opérationnelles', 'Comportementales'] as $type) { usort($csvInfos['competences'][$type], function (Competence $a, Competence $b) {return $a->getLibelle() > $b->getLibelle();}); 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();}); usort($csvInfos['applications'], function (Application $a, Application $b) { return $a->getLibelle() > $b->getLibelle(); }); return $csvInfos; } Loading Loading @@ -541,8 +419,11 @@ class FicheMetierController extends AbstractActionController $agent = $this->getAgentService()->getRequestedAgent($this); $dictionnaire = $this->getFicheMetierService()->getCompetencesDictionnaires($ficheMetier, true); $dictionnaire = array_filter($dictionnaire, function($item) { return ($item['entite'])->isClef();}); $labels = []; $values = []; $dictionnaire = array_filter($dictionnaire, function ($item) { return ($item['entite'])->isClef(); }); $labels = []; $values = []; $valuesFiche = []; foreach ($dictionnaire as $entry) { Loading @@ -565,7 +446,7 @@ class FicheMetierController extends AbstractActionController /** @var CompetenceElement $element */ $element = $entry['entite']; $id = $element->getCompetence()->getId(); $niveau = (isset($competences[$id]) AND $competences[$id]->getNiveauMaitrise())?$competences[$id]->getNiveauMaitrise()->getNiveau():"'-'"; $niveau = (isset($competences[$id]) and $competences[$id]->getNiveauMaitrise()) ? $competences[$id]->getNiveauMaitrise()->getNiveau() : "'-'"; $valuesAgent[] = $niveau; } $values[] = [ Loading @@ -592,8 +473,11 @@ class FicheMetierController extends AbstractActionController $agent = $this->getAgentService()->getRequestedAgent($this); $dictionnaire = $this->getFicheMetierService()->getApplicationsDictionnaires($ficheMetier, true); $dictionnaire = array_filter($dictionnaire, function($item) { return ($item['entite'])->isClef();}); $labels = []; $values = []; $dictionnaire = array_filter($dictionnaire, function ($item) { return ($item['entite'])->isClef(); }); $labels = []; $values = []; $valuesFiche = []; foreach ($dictionnaire as $entry) { Loading @@ -616,7 +500,7 @@ class FicheMetierController extends AbstractActionController /** @var ApplicationElement $element */ $element = $entry['entite']; $id = $element->getApplication()->getId(); $niveau = (isset($applications[$id]) AND $applications[$id]->getNiveauMaitrise())?$applications[$id]->getNiveauMaitrise()->getNiveau():"'-'"; $niveau = (isset($applications[$id]) and $applications[$id]->getNiveauMaitrise()) ? $applications[$id]->getNiveauMaitrise()->getNiveau() : "'-'"; $valuesAgent[] = $niveau; } $values[] = [ Loading module/Application/src/Application/Service/FicheMetier/FicheMetierService.php +25 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Application\Service\FicheMetier; use Application\Controller\FicheMetierController; use Application\Entity\Db\Activite; use Application\Entity\Db\ActiviteDescription; use Application\Provider\Template\PdfTemplate; use FicheMetier\Entity\Db\FicheMetier; use Application\Entity\Db\FicheMetierActivite; use Application\Provider\Etat\FicheMetierEtats; Loading @@ -29,9 +30,12 @@ use Laminas\Mvc\Controller\AbstractController; use Metier\Entity\Db\Domaine; use Metier\Service\Domaine\DomaineServiceAwareTrait; use Metier\Service\Metier\MetierServiceAwareTrait; use Mpdf\MpdfException; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenEtat\Service\Etat\EtatServiceAwareTrait; use UnicaenPdf\Exporter\PdfExporter; use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait; class FicheMetierService { use ApplicationServiceAwareTrait; Loading @@ -41,6 +45,7 @@ class FicheMetierService { use DomaineServiceAwareTrait; use EtatServiceAwareTrait; use EntityManagerAwareTrait; use RenduServiceAwareTrait; use ActiviteServiceAwareTrait; use ActiviteDescriptionServiceAwareTrait; Loading Loading @@ -557,4 +562,24 @@ class FicheMetierService { return $fiche; } public function exporter(?FicheMetier $fichemetier) { $vars = [ 'fichemetier' => $fichemetier, 'metier' => $fichemetier->getMetier(), ]; $rendu = $this->getRenduService()->generateRenduByTemplateCode(PdfTemplate::FICHE_METIER, $vars); try { $exporter = new PdfExporter(); $exporter->getMpdf()->SetTitle($rendu->getSujet()); $exporter->setHeaderScript(''); $exporter->setFooterScript(''); $exporter->addBodyHtml($rendu->getCorps()); return $exporter->export($rendu->getSujet()); } catch (MpdfException $e) { throw new RuntimeException("Un problème est survenu lors de l'export en PDF", 0, $e); } } } No newline at end of file module/Application/src/Application/Service/FicheMetier/FicheMetierServiceFactory.php +4 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ use Metier\Service\Metier\MetierService; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; use UnicaenEtat\Service\Etat\EtatService; use UnicaenRenderer\Service\Rendu\RenduService; class FicheMetierServiceFactory { Loading @@ -42,6 +43,7 @@ class FicheMetierServiceFactory { * @var HasApplicationCollectionService $hasApplicationCollectionService * @var HasCompetenceCollectionService $hasCompetenceCollectionService * @var MetierService $metierService * @var RenduService $renduService */ $entityManager = $container->get('doctrine.entitymanager.orm_default'); $applicationService = $container->get(ApplicationService::class); Loading @@ -50,6 +52,7 @@ class FicheMetierServiceFactory { $competenceElementService = $container->get(CompetenceElementService::class); $domaineService = $container->get(DomaineService::class); $etatService = $container->get(EtatService::class); $renduService = $container->get(RenduService::class); $activiteService = $container->get(ActiviteService::class); $activiteDescriptionService = $container->get(ActiviteDescriptionService::class); Loading @@ -67,6 +70,7 @@ class FicheMetierServiceFactory { $service->setCompetenceElementService($competenceElementService); $service->setDomaineService($domaineService); $service->setEtatService($etatService); $service->setRenduService($renduService); $service->setActiviteService($activiteService); $service->setActiviteDescriptionService($activiteDescriptionService); Loading module/Application/view/application/fiche-metier/index.phtml +0 −7 Original line number Diff line number Diff line Loading @@ -71,13 +71,6 @@ $this->headTitle('Index des fiches métiers'); }); }); $(function() { $("body").on("destruction", function (event) { event.div.modal('hide'); window.location.reload(); }); }); $(function() { $("body").on("modification", function (event) { event.div.modal('hide'); Loading Loading
module/Application/config/merged/fiche-metier.config.php +0 −138 Original line number Diff line number Diff line Loading @@ -36,11 +36,8 @@ return [ [ 'controller' => FicheMetierController::class, 'action' => [ 'afficher', 'afficher-applications', 'afficher-competences', 'exporter', 'exporter-toutes', 'graphique-applications', 'graphique-competences', Loading @@ -53,7 +50,6 @@ return [ 'controller' => FicheMetierController::class, 'action' => [ 'ajouter', 'dupliquer', 'importer-depuis-csv', // 'ajouter-terminer', ], Loading @@ -64,15 +60,12 @@ return [ [ 'controller' => FicheMetierController::class, 'action' => [ 'editer', 'retirer-activite', 'deplacer-activite', 'ajouter-nouvelle-activite', 'ajouter-activite-existante', 'changer-expertise', 'changer-etat', 'modifier-application', 'modifier-formation', Loading @@ -83,26 +76,6 @@ return [ FicheMetierPrivileges::FICHEMETIER_MODIFIER, ], ], [ 'controller' => FicheMetierController::class, 'action' => [ 'detruire', ], 'privileges' => [ FicheMetierPrivileges::FICHEMETIER_DETRUIRE, ], ], [ 'controller' => FicheMetierController::class, 'action' => [ 'ajouter-etat', 'modifier-etat', 'supprimer-etat', ], 'privileges' => [ FicheMetierPrivileges::FICHEMETIER_MODIFIER, ], ], ], ], ], Loading Loading @@ -156,52 +129,7 @@ return [ ], ], 'may_terminate' => true, 'child_routes' => [ 'etat' => [ 'type' => Literal::class, 'options' => [ 'route' => '/etat', 'defaults' => [ 'controller' => FicheMetierController::class, ], ], 'may_terminate' => false, 'child_routes' => [ 'ajouter' => [ 'type' => Literal::class, 'options' => [ 'route' => '/ajouter', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'ajouter-etat', ], ], 'may_terminate' => true, ], 'modifier' => [ 'type' => Segment::class, 'options' => [ 'route' => '/modifier/:etat', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'modifier-etat', ], ], 'may_terminate' => true, ], 'supprimer' => [ 'type' => Segment::class, 'options' => [ 'route' => '/supprimer/:etat', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'supprimer-etat', ], ], 'may_terminate' => true, ], ], ], 'ajouter' => [ 'type' => Literal::class, 'options' => [ Loading Loading @@ -290,17 +218,6 @@ return [ // ], // 'may_terminate' => true, // ], 'afficher' => [ 'type' => Segment::class, 'options' => [ 'route' => '/afficher/:id', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'afficher', ], ], 'may_terminate' => true, ], 'graphique-applications' => [ 'type' => Segment::class, 'options' => [ Loading @@ -323,50 +240,6 @@ return [ ], 'may_terminate' => true, ], 'exporter' => [ 'type' => Segment::class, 'options' => [ 'route' => '/exporter/:id', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'exporter', ], ], 'may_terminate' => true, ], 'exporter-toutes' => [ 'type' => Literal::class, 'options' => [ 'route' => '/exporter-toutes', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'exporter-toutes', ], ], 'may_terminate' => true, ], 'editer' => [ 'type' => Segment::class, 'options' => [ 'route' => '/editer[/:id]', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'editer', ], ], 'may_terminate' => true, ], 'detruire' => [ 'type' => Segment::class, 'options' => [ 'route' => '/detruire/:fiche-metier', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'detruire', ], ], 'may_terminate' => true, ], 'changer-expertise' => [ 'type' => Segment::class, 'options' => [ Loading @@ -378,17 +251,6 @@ return [ ], 'may_terminate' => true, ], 'changer-etat' => [ 'type' => Segment::class, 'options' => [ 'route' => '/changer-etat/:fiche-metier', 'defaults' => [ 'controller' => FicheMetierController::class, 'action' => 'changer-etat', ], ], 'may_terminate' => true, ], 'retirer-activite' => [ 'type' => Segment::class, 'options' => [ Loading
module/Application/src/Application/Controller/FicheMetierController.php +49 −165 Original line number Diff line number Diff line Loading @@ -3,13 +3,11 @@ namespace Application\Controller; use Application\Entity\Db\Activite; use Application\Entity\Db\ParcoursDeFormation; 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\Provider\Template\PdfTemplate; use Application\Service\Activite\ActiviteServiceAwareTrait; use Application\Service\ActiviteDescription\ActiviteDescriptionServiceAwareTrait; use Application\Service\Agent\AgentServiceAwareTrait; Loading @@ -35,16 +33,13 @@ use Laminas\View\Model\ViewModel; use Metier\Form\SelectionnerMetier\SelectionnerMetierFormAwareTrait; use Metier\Service\Domaine\DomaineServiceAwareTrait; use Metier\Service\Metier\MetierServiceAwareTrait; use Mpdf\MpdfException; use UnicaenApp\Exception\RuntimeException; use UnicaenEtat\Form\SelectionEtat\SelectionEtatFormAwareTrait; use UnicaenEtat\Service\Etat\EtatServiceAwareTrait; use UnicaenEtat\Service\EtatType\EtatTypeServiceAwareTrait; use UnicaenPdf\Exporter\PdfExporter; use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait; /** @method FlashMessenger flashMessenger() */ class FicheMetierController extends AbstractActionController { /** Traits associés aux services */ Loading Loading @@ -99,23 +94,6 @@ class FicheMetierController extends AbstractActionController ]); } public function afficherAction() : ViewModel { $fiche = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'id', true); $missions = $this->getActiviteService()->getActivitesByFicheMetierType($fiche); $parcours = ($fiche->getMetier()->getCategorie())?$this->getParcoursDeFormationService()->generateParcoursArrayFromFicheMetier($fiche):null; $applications = $this->getFicheMetierService()->getApplicationsDictionnaires($fiche, true); $competences = $this->getFicheMetierService()->getCompetencesDictionnaires($fiche, true); return new ViewModel([ 'fiche' => $fiche, 'competences' => $competences, 'applications' => $applications, 'parcours' => $parcours, 'missions' => $missions, ]); } public function ajouterAction(): ViewModel { /** @var FicheMetier $fiche */ Loading Loading @@ -152,83 +130,6 @@ class FicheMetierController extends AbstractActionController return $vm; } public function dupliquerAction() : Response { $fiche = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'fiche-metier'); if ($fiche !== null) { $duplicata = $this->getFicheMetierService()->dupliquerFicheMetier($fiche); return $this->redirect()->toRoute('fiche-metier-type/editer', ['id' => $duplicata->getId()], [], true); } exit(); } public function editerAction() : ViewModel { $fiche = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'id', false); $missions = $this->getActiviteService()->getActivitesByFicheMetierType($fiche); $parcours = ($fiche->getMetier()->getCategorie())?$this->getParcoursDeFormationService()->generateParcoursArrayFromFicheMetier($fiche):null; $applications = $this->getFicheMetierService()->getApplicationsDictionnaires($fiche, true); $competences = $this->getFicheMetierService()->getCompetencesDictionnaires($fiche, true); return new ViewModel([ 'fiche' => $fiche, 'competences' => $competences, 'applications' => $applications, 'parcours' => $parcours, 'missions' => $missions, ]); } public function exporterAction() : string { $fichemetier = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'id', true); $vars = [ 'fichemetier' => $fichemetier, 'metier' => $fichemetier->getMetier(), 'parcours' => ($fichemetier->getMetier()->getCategorie())?$this->getParcoursDeFormationService()->getParcoursDeFormationByTypeAndReference(ParcoursDeFormation::TYPE_CATEGORIE, $fichemetier->getMetier()->getCategorie()->getId()):null, ]; $rendu = $this->getRenduService()->generateRenduByTemplateCode(PdfTemplate::FICHE_METIER, $vars); try { $exporter = new PdfExporter(); $exporter->getMpdf()->SetTitle($rendu->getSujet()); $exporter->setHeaderScript(''); $exporter->setFooterScript(''); $exporter->addBodyHtml($rendu->getCorps()); return $exporter->export($rendu->getSujet()); } catch (MpdfException $e) { throw new RuntimeException("Un problème est survenu lors de l'export en PDF",0,$e); } } public function detruireAction() : ViewModel { $fiche = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'fiche-metier'); /** @var Request $request */ $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); if ($data["reponse"] === "oui") { $this->getFicheMetierService()->delete($fiche); } exit(); } $vm = new ViewModel(); if ($fiche !== null) { $vm->setTemplate('application/default/confirmation'); $vm->setVariables([ 'title' => "Suppression de la fiche de poste de " . (($fiche and $fiche->getMetier()) ? $fiche->getMetier()->getLibelle() : "[Aucun métier]"), 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?", 'action' => $this->url()->fromRoute('fiche-metier-type/detruire', ["fiche-metier" => $fiche->getId()], [], true), ]); } return $vm; } /** ACTIVITE LIEE *************************************************************************************************/ public function ajouterNouvelleActiviteAction(): ViewModel Loading Loading @@ -429,34 +330,7 @@ class FicheMetierController extends AbstractActionController return $this->redirect()->toRoute('fiche-metier-type/editer', ['id' => $fiche->getId()], [], true); } /** GESTION DES ETATS DES FICHES METIERS **************************************************************************/ public function changerEtatAction() : ViewModel { $fiche = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'fiche-metier'); $form = $this->getSelectionEtatForm(); $form->setAttribute('action', $this->url()->fromRoute('fiche-metier-type/changer-etat', ['fiche-metier' => $fiche->getId()], [], true)); $form->bind($fiche); $form->reinit(FicheMetierEtats::TYPE); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getFicheMetierService()->update($fiche); } } $vm = new ViewModel(); $vm->setTemplate('application/default/default-form'); $vm->setVariables([ 'title' => "Changer l'état de la fiche métier", 'form' => $form, ]); return $vm; } /** IMPORTATION ***************************************************************************************************/ Loading @@ -479,9 +353,13 @@ class FicheMetierController extends AbstractActionController // tri foreach (['Connaissances', 'Opérationnelles', 'Comportementales'] as $type) { usort($csvInfos['competences'][$type], function (Competence $a, Competence $b) {return $a->getLibelle() > $b->getLibelle();}); 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();}); usort($csvInfos['applications'], function (Application $a, Application $b) { return $a->getLibelle() > $b->getLibelle(); }); return $csvInfos; } Loading Loading @@ -541,8 +419,11 @@ class FicheMetierController extends AbstractActionController $agent = $this->getAgentService()->getRequestedAgent($this); $dictionnaire = $this->getFicheMetierService()->getCompetencesDictionnaires($ficheMetier, true); $dictionnaire = array_filter($dictionnaire, function($item) { return ($item['entite'])->isClef();}); $labels = []; $values = []; $dictionnaire = array_filter($dictionnaire, function ($item) { return ($item['entite'])->isClef(); }); $labels = []; $values = []; $valuesFiche = []; foreach ($dictionnaire as $entry) { Loading @@ -565,7 +446,7 @@ class FicheMetierController extends AbstractActionController /** @var CompetenceElement $element */ $element = $entry['entite']; $id = $element->getCompetence()->getId(); $niveau = (isset($competences[$id]) AND $competences[$id]->getNiveauMaitrise())?$competences[$id]->getNiveauMaitrise()->getNiveau():"'-'"; $niveau = (isset($competences[$id]) and $competences[$id]->getNiveauMaitrise()) ? $competences[$id]->getNiveauMaitrise()->getNiveau() : "'-'"; $valuesAgent[] = $niveau; } $values[] = [ Loading @@ -592,8 +473,11 @@ class FicheMetierController extends AbstractActionController $agent = $this->getAgentService()->getRequestedAgent($this); $dictionnaire = $this->getFicheMetierService()->getApplicationsDictionnaires($ficheMetier, true); $dictionnaire = array_filter($dictionnaire, function($item) { return ($item['entite'])->isClef();}); $labels = []; $values = []; $dictionnaire = array_filter($dictionnaire, function ($item) { return ($item['entite'])->isClef(); }); $labels = []; $values = []; $valuesFiche = []; foreach ($dictionnaire as $entry) { Loading @@ -616,7 +500,7 @@ class FicheMetierController extends AbstractActionController /** @var ApplicationElement $element */ $element = $entry['entite']; $id = $element->getApplication()->getId(); $niveau = (isset($applications[$id]) AND $applications[$id]->getNiveauMaitrise())?$applications[$id]->getNiveauMaitrise()->getNiveau():"'-'"; $niveau = (isset($applications[$id]) and $applications[$id]->getNiveauMaitrise()) ? $applications[$id]->getNiveauMaitrise()->getNiveau() : "'-'"; $valuesAgent[] = $niveau; } $values[] = [ Loading
module/Application/src/Application/Service/FicheMetier/FicheMetierService.php +25 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Application\Service\FicheMetier; use Application\Controller\FicheMetierController; use Application\Entity\Db\Activite; use Application\Entity\Db\ActiviteDescription; use Application\Provider\Template\PdfTemplate; use FicheMetier\Entity\Db\FicheMetier; use Application\Entity\Db\FicheMetierActivite; use Application\Provider\Etat\FicheMetierEtats; Loading @@ -29,9 +30,12 @@ use Laminas\Mvc\Controller\AbstractController; use Metier\Entity\Db\Domaine; use Metier\Service\Domaine\DomaineServiceAwareTrait; use Metier\Service\Metier\MetierServiceAwareTrait; use Mpdf\MpdfException; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenEtat\Service\Etat\EtatServiceAwareTrait; use UnicaenPdf\Exporter\PdfExporter; use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait; class FicheMetierService { use ApplicationServiceAwareTrait; Loading @@ -41,6 +45,7 @@ class FicheMetierService { use DomaineServiceAwareTrait; use EtatServiceAwareTrait; use EntityManagerAwareTrait; use RenduServiceAwareTrait; use ActiviteServiceAwareTrait; use ActiviteDescriptionServiceAwareTrait; Loading Loading @@ -557,4 +562,24 @@ class FicheMetierService { return $fiche; } public function exporter(?FicheMetier $fichemetier) { $vars = [ 'fichemetier' => $fichemetier, 'metier' => $fichemetier->getMetier(), ]; $rendu = $this->getRenduService()->generateRenduByTemplateCode(PdfTemplate::FICHE_METIER, $vars); try { $exporter = new PdfExporter(); $exporter->getMpdf()->SetTitle($rendu->getSujet()); $exporter->setHeaderScript(''); $exporter->setFooterScript(''); $exporter->addBodyHtml($rendu->getCorps()); return $exporter->export($rendu->getSujet()); } catch (MpdfException $e) { throw new RuntimeException("Un problème est survenu lors de l'export en PDF", 0, $e); } } } No newline at end of file
module/Application/src/Application/Service/FicheMetier/FicheMetierServiceFactory.php +4 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ use Metier\Service\Metier\MetierService; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; use UnicaenEtat\Service\Etat\EtatService; use UnicaenRenderer\Service\Rendu\RenduService; class FicheMetierServiceFactory { Loading @@ -42,6 +43,7 @@ class FicheMetierServiceFactory { * @var HasApplicationCollectionService $hasApplicationCollectionService * @var HasCompetenceCollectionService $hasCompetenceCollectionService * @var MetierService $metierService * @var RenduService $renduService */ $entityManager = $container->get('doctrine.entitymanager.orm_default'); $applicationService = $container->get(ApplicationService::class); Loading @@ -50,6 +52,7 @@ class FicheMetierServiceFactory { $competenceElementService = $container->get(CompetenceElementService::class); $domaineService = $container->get(DomaineService::class); $etatService = $container->get(EtatService::class); $renduService = $container->get(RenduService::class); $activiteService = $container->get(ActiviteService::class); $activiteDescriptionService = $container->get(ActiviteDescriptionService::class); Loading @@ -67,6 +70,7 @@ class FicheMetierServiceFactory { $service->setCompetenceElementService($competenceElementService); $service->setDomaineService($domaineService); $service->setEtatService($etatService); $service->setRenduService($renduService); $service->setActiviteService($activiteService); $service->setActiviteDescriptionService($activiteDescriptionService); Loading
module/Application/view/application/fiche-metier/index.phtml +0 −7 Original line number Diff line number Diff line Loading @@ -71,13 +71,6 @@ $this->headTitle('Index des fiches métiers'); }); }); $(function() { $("body").on("destruction", function (event) { event.div.modal('hide'); window.location.reload(); }); }); $(function() { $("body").on("modification", function (event) { event.div.modal('hide'); Loading