diff --git a/module/Application/src/Controller/OffreFormationController.php b/module/Application/src/Controller/OffreFormationController.php index 36e1ab09fa8e3264bcb8f9a340e0a4e423a6121f..e8893aa5d9b5dcec4ecdac4eaebf7a4992745ed4 100755 --- a/module/Application/src/Controller/OffreFormationController.php +++ b/module/Application/src/Controller/OffreFormationController.php @@ -59,7 +59,7 @@ class OffreFormationController extends AbstractController $params = []; if ($structure) $params['structure'] = $structure->getId(); - if ($niveau) $params['niveau'] = $niveau->getId(); + if ($niveau) $params['niveau'] = ($niveau->getPertinence()) ? $niveau->getId() : $niveau->getLib(); if ($etape) $params['etape'] = $etape->getId(); @@ -82,7 +82,6 @@ class OffreFormationController extends AbstractController } - public function exportAction() { $this->initFilters(); @@ -119,30 +118,30 @@ class OffreFormationController extends AbstractController foreach ($elements as $element) { - $cm = '0'; - $td = '0'; - $tp = '0'; + $cm = '0'; + $td = '0'; + $tp = '0'; $cmGroupe = '0'; $tdGroupe = '0'; $tpGroupe = '0'; foreach ($element->getVolumeHoraireEns() as $vhe) { if ($vhe->getTypeIntervention()->getCode() == 'CM') { - $cm = (!empty($vhe->getHeures())) ? $vhe->getHeures() : '0'; + $cm = (!empty($vhe->getHeures())) ? $vhe->getHeures() : '0'; $cmGroupe = (!empty($vhe->getGroupes())) ? $vhe->getGroupes() : '0'; } if ($vhe->getTypeIntervention()->getCode() == 'TD') { - $td = (!empty($vhe->getHeures())) ? $vhe->getHeures() : '0'; + $td = (!empty($vhe->getHeures())) ? $vhe->getHeures() : '0'; $tdGroupe = (!empty($vhe->getGroupes())) ? $vhe->getGroupes() : '0'; } if ($vhe->getTypeIntervention()->getCode() == 'TP') { - $tp = (!empty($vhe->getHeures())) ? $vhe->getHeures() : '0'; + $tp = (!empty($vhe->getHeures())) ? $vhe->getHeures() : '0'; $tpGroupe = (!empty($vhe->getGroupes())) ? $vhe->getGroupes() : '0'; } } - $etape = $element->getEtape(); - $effectifs = $element->getEffectifs(); + $etape = $element->getEtape(); + $effectifs = $element->getEffectifs(); $discipline = $element->getDiscipline(); $csvModel->addLine([ $etape->getCode(), @@ -174,14 +173,12 @@ class OffreFormationController extends AbstractController } - public function administrationOffreAction() { return []; } - public function reconductionAction() { $this->initFilterHistorique(); @@ -198,13 +195,13 @@ class OffreFormationController extends AbstractController [$offresComplementaires, $mappingEtape, $reconductionTotale] = $this->getServiceOffreFormation()->getOffreComplementaire($structure, $niveau, $etape); $reconductionStep = ''; - $messageStep = ''; - $fromPost = false; + $messageStep = ''; + $fromPost = false; $request = $this->getRequest(); if ($request->isPost()) { - $datas = $request->getPost(); + $datas = $request->getPost(); $fromPost = true; //Ajout du mapping des EtapesN et EtapesN1 pour pouvoir reconduire un element pédagogique sur une etape déjà reconduite. $datas['mappingEtape'] = $mappingEtape; @@ -219,7 +216,7 @@ class OffreFormationController extends AbstractController } } catch (\Exception $e) { $reconductionStep = false; - $messageStep = $e->getMessage(); + $messageStep = $e->getMessage(); $this->flashMessenger()->addErrorMessage($e->getMessage()); } } @@ -238,7 +235,6 @@ class OffreFormationController extends AbstractController } - public function reconductionCentreCoutAction() { $this->initFilterHistorique(); @@ -259,7 +255,7 @@ class OffreFormationController extends AbstractController $datas = $request->getPost(); //Reconduire les centres de coût des EP de l'étape. try { - $etapesReconduites = $this->getServiceEtape()->getEtapeCentreCoutReconductible($structure); + $etapesReconduites = $this->getServiceEtape()->getEtapeCentreCoutReconductible($structure); $etapesReconduitesCc = []; if (isset($datas['etapes'])) { foreach ($datas['etapes'] as $code) { @@ -268,7 +264,7 @@ class OffreFormationController extends AbstractController } } } - $result = $this->getProcessusReconduction()->reconduireCCFormation($etapesReconduitesCc); + $result = $this->getProcessusReconduction()->reconduireCCFormation($etapesReconduitesCc); $etapesReconduites = $this->getServiceEtape()->getEtapeCentreCoutReconductible($structure); $this->flashMessenger()->addSuccessMessage("$result centre(s) de coût(s) ont été reconduit pour l'année prochaine. "); @@ -290,14 +286,13 @@ class OffreFormationController extends AbstractController } - public function reconductionModulateurAction() { $this->initFilterHistorique(); [$structure, $niveau, $etape] = $this->getParams(); $etapesReconduites = []; - $role = $this->getServiceContext()->getSelectedIdentityRole(); + $role = $this->getServiceContext()->getSelectedIdentityRole(); $qb = $this->getServiceStructure()->finderByHistorique(); $this->getServiceStructure()->finderByEnseignement($qb); @@ -307,7 +302,7 @@ class OffreFormationController extends AbstractController $request = $this->getRequest(); if ($request->isPost()) { - $datas = $request->getPost(); + $datas = $request->getPost(); $etapesReconduites = $this->getServiceEtape()->getEtapeModulateurReconductible($structure); try { $etapesReconduitesCc = []; @@ -343,7 +338,6 @@ class OffreFormationController extends AbstractController } - protected function initFilters() { $this->initFilterAnnee(); @@ -351,7 +345,6 @@ class OffreFormationController extends AbstractController } - protected function initFilterAnnee() { $this->em()->getFilters()->enable('annee')->init([ @@ -362,7 +355,6 @@ class OffreFormationController extends AbstractController } - protected function initFilterHistorique() { /* Mise en place des filtres */ @@ -377,19 +369,17 @@ class OffreFormationController extends AbstractController } - protected function disableFilters($name) { $this->em()->getFilters()->disable($name); } - protected function getParams() { $structure = $this->context()->structureFromQuery() ?: $this->getServiceContext()->getStructure(); - $niveau = $this->context()->niveauFromQuery(); - $etape = $this->context()->etapeFromQuery(); + $niveau = $this->context()->niveauFromQuery(); + $etape = $this->context()->etapeFromQuery(); if ($niveau) $niveau = $this->getServiceNiveauEtape()->get($niveau); // entité Niveau return [$structure, $niveau, $etape]; diff --git a/module/Application/src/Entity/NiveauEtape.php b/module/Application/src/Entity/NiveauEtape.php index 4460c2c90a6e80ccb21ed5d2797c50cef7f304b9..f6da00cc53a6b8718faf683f238b1ab7b6b820e2 100755 --- a/module/Application/src/Entity/NiveauEtape.php +++ b/module/Application/src/Entity/NiveauEtape.php @@ -25,6 +25,8 @@ class NiveauEtape */ protected $lib; + protected $pertinence; + /** * * @param \Application\Entity\Db\Etape $etape @@ -93,6 +95,11 @@ class NiveauEtape return $this->lib; } + public function getPertinence() + { + return $this->pertinence; + } + public function setNiv($niv) { $this->niv = $niv; @@ -105,11 +112,18 @@ class NiveauEtape return $this; } + public function setPertinence($pertinence) + { + $this->pertinence = $pertinence; + return $this; + } + public function setEtape(Etape $etape) { $this->etape = $etape; - $this->niv = $this->etape->getNiveau(); - $this->lib = $this->etape->getTypeFormation()->getGroupe()->getLibelleCourt(); + $this->niv = $this->etape->getNiveau(); + $this->lib = $this->etape->getTypeFormation()->getGroupe()->getLibelleCourt(); + $this->pertinence = $this->etape->getTypeFormation()->getGroupe()->getPertinenceNiveau(); return $this; } } \ No newline at end of file diff --git a/module/Application/src/Service/NiveauEtapeService.php b/module/Application/src/Service/NiveauEtapeService.php index 665df2df1f9319dc2f28824ceaab3d5fa92590a2..4a14a7fd61805e1b2dd9659597e2c585c52c95cd 100755 --- a/module/Application/src/Service/NiveauEtapeService.php +++ b/module/Application/src/Service/NiveauEtapeService.php @@ -18,14 +18,15 @@ class NiveauEtapeService extends AbstractService */ public function get($id) { - if (null === $id || 0 === $id || '-' === $id){ + if (null === $id || 0 === $id || '-' === $id) { return null; } - $tiretPos = strrpos($id,'-'); - $groupeTypeFormationLibelleCourt = substr( $id, 0, $tiretPos ); - $niv = substr( $id, $tiretPos+1 ); + $tiretPos = strrpos($id, '-'); + + $groupeTypeFormationLibelleCourt = (!$tiretPos) ? $id : substr($id, 0, $tiretPos); + $niv = (!$tiretPos) ? false : substr($id, $tiretPos + 1); if ($niv === false) $niv = null; - + $niveau = new NiveauEtape(); $niveau->setLib($groupeTypeFormationLibelleCourt); $niveau->setNiv($niv); diff --git a/module/Application/src/Service/OffreFormationService.php b/module/Application/src/Service/OffreFormationService.php index b0105f3975f310681510a425d1d3119b76098cb5..116cda85d31d85a65427cff7d2055dbc9c5b12cb 100755 --- a/module/Application/src/Service/OffreFormationService.php +++ b/module/Application/src/Service/OffreFormationService.php @@ -30,13 +30,11 @@ class OffreFormationService extends AbstractEntityService } - public function getAlias() { } - public function getNeep($structure, $niveau, $etape, $annee = null, $source = null) { if ($etape) { @@ -50,14 +48,14 @@ class OffreFormationService extends AbstractEntityService if (!$structure) return [[], [], []]; - $niveaux = []; - $etapes = []; + $niveaux = []; + $etapes = []; $elements = []; $dql = 'SELECT partial e.{id,code,annee,libelle,sourceCode,niveau,histoDestruction}, partial tf.{id}, - partial gtf.{id, libelleCourt, ordre}, + partial gtf.{id, libelleCourt, ordre, pertinenceNiveau}, partial ep.{id,code,libelle,sourceCode,etape,periode,tauxFoad,fi,fc,fa,tauxFi,tauxFc,tauxFa}, partial vme.{id,heures, groupes} FROM @@ -92,9 +90,14 @@ class OffreFormationService extends AbstractEntityService if ($object instanceof Etape) { $n = NiveauEtape::getInstanceFromEtape($object); if ($object->estNonHistorise()) { - $niveaux[$n->getId()] = $n; + $gtf = $object->getTypeFormation()->getGroupe()->getPertinenceNiveau(); + if ($gtf) { + $niveaux[$n->getId()] = $n; + } else { + $niveaux[$n->getLib()] = $n; + } } - if (!$niveau || $niveau->getId() == $n->getId()) { + if (!$niveau || ($niveau->getId() == $n->getId() && $n->getPertinence()) || ($niveau->getLib() == $n->getLib() && !$n->getPertinence())) { if ($object->estNonHistorise() || $object->getElementPedagogique()->count() > 0) { $etapes[] = $object; } @@ -122,15 +125,15 @@ class OffreFormationService extends AbstractEntityService return $e1Lib > $e2Lib ? 1 : 0; }); + return [$niveaux, $etapes, $elements]; } - public function getNeepEtape($etape) { - $niveaux = []; - $etapes = []; + $niveaux = []; + $etapes = []; $elements = []; $dql = 'SELECT @@ -155,12 +158,12 @@ class OffreFormationService extends AbstractEntityService /** @var CheminPedagogique $object */ if ($object->estHistorise()) continue; - $etape = $object->getEtape(); + $etape = $object->getEtape(); $element = $object->getElementPedagogique(); - $n = NiveauEtape::getInstanceFromEtape($etape); - $niveaux[$n->getId()] = $n; - $etapes[$etape->getId()] = $etape; + $n = NiveauEtape::getInstanceFromEtape($etape); + $niveaux[$n->getId()] = $n; + $etapes[$etape->getId()] = $etape; $elements[$element->getId()] = $element; } @@ -176,7 +179,6 @@ class OffreFormationService extends AbstractEntityService } - /** * @return array */ @@ -184,9 +186,9 @@ class OffreFormationService extends AbstractEntityService public function getOffreComplementaire($structure, $niveau, $etape) { $offresComplementaires = []; - $anneeEnCours = $this->getServiceContext()->getAnnee(); - $anneeSuivante = $this->getServiceAnnee()->getSuivante($anneeEnCours); - $source = $this->getServiceSource()->getOse(); + $anneeEnCours = $this->getServiceContext()->getAnnee(); + $anneeSuivante = $this->getServiceAnnee()->getSuivante($anneeEnCours); + $source = $this->getServiceSource()->getOse(); $this->getServiceLocalContext() ->setStructure($structure) @@ -200,9 +202,9 @@ class OffreFormationService extends AbstractEntityService [$niveauxN1, $etapesN1, $elementsN1] = $this->getNeep($structure, $niveau, $etape, $anneeSuivante, $source); //Organisation pour traitement dans la vue - $codesEtapeN1 = []; - $codesElementN1 = []; - $etapesNonReconduits = array_diff($etapes, $etapesN1); + $codesEtapeN1 = []; + $codesElementN1 = []; + $etapesNonReconduits = array_diff($etapes, $etapesN1); $elementsNonReconduits = array_diff($elements, $elementsN1); $reconductionTotale = 'non'; @@ -223,8 +225,8 @@ class OffreFormationService extends AbstractEntityService continue; }*/ $offresComplementaires[$v->getId()]['reconduction_partiel'] = 'non'; - $offresComplementaires[$v->getId()]['reconduction'] = (in_array($v->getCode(), $codesEtapeN1)) ? 'oui' : 'non'; - $offresComplementaires[$v->getId()]['etape'] = $v; + $offresComplementaires[$v->getId()]['reconduction'] = (in_array($v->getCode(), $codesEtapeN1)) ? 'oui' : 'non'; + $offresComplementaires[$v->getId()]['etape'] = $v; $offresComplementaires[$v->getId()]['elements_pedagogique'] = []; } @@ -241,7 +243,7 @@ class OffreFormationService extends AbstractEntityService } $offresComplementaires[$etapeId]['elements_pedagogique'][$v->getId()]['reconduction'] = (in_array($v->getCode(), $codesElementN1)) ? 'oui' : 'non'; - $offresComplementaires[$etapeId]['elements_pedagogique'][$v->getId()]['element'] = $v; + $offresComplementaires[$etapeId]['elements_pedagogique'][$v->getId()]['element'] = $v; } $mappingEtape = $this->createMappingEtapeNEtapeN1($etapes, $etapesN1); @@ -250,10 +252,9 @@ class OffreFormationService extends AbstractEntityService } - public function createMappingEtapeNEtapeN1($etapesN, $etapesN1) { - $codesEtapeN = []; + $codesEtapeN = []; $codesEtapeN1 = []; $mappingEtape = []; diff --git a/module/Application/view/application/offre-formation/index.phtml b/module/Application/view/application/offre-formation/index.phtml index 56c6a1639eeb8c536d384f08e7285de30ccdc826..f0f35382dbbea46100afcd04953e80090a64cb17 100755 --- a/module/Application/view/application/offre-formation/index.phtml +++ b/module/Application/view/application/offre-formation/index.phtml @@ -16,16 +16,16 @@ use Application\Provider\Privilege\Privileges; /** * @param \Application\Entity\Db\Structure $structure - * @param \Application\Entity\NiveauEtape $niveau - * @param \Application\Entity\Db\Etape $etape + * @param \Application\Entity\NiveauEtape $niveau + * @param \Application\Entity\Db\Etape $etape */ function makeQuery($structure = null, $niveau = null, $etape = null) { $params = []; //@formatter:off - if ($structure) $params['structure'] = $structure->getId(); - if ($niveau) $params['niveau'] = $niveau->getId(); - if ($etape) $params['etape'] = $etape->getId(); + if ($structure) $params['structure'] = $structure->getId(); + if ($niveau) $params['niveau'] = ($niveau->getPertinence()) ? $niveau->getId() : $niveau->getLib(); + if ($etape) $params['etape'] = $etape->getId(); //@formatter:on return ['query' => $params]; @@ -41,9 +41,9 @@ $niveauxItems = [ ], ]; -foreach ($niveaux as $niv) { - $niveauxItems[$niv->getId()] = [ - 'label' => (string)$niv, +foreach ($niveaux as $code => $niv) { + $niveauxItems[$code] = [ + 'label' => ($niv->getPertinence()) ? (string)$niv : $code, 'niveau' => $niv, 'url' => $this->url('of', [], makeQuery($structure, $niv)), ]; @@ -77,8 +77,8 @@ if ($structure) { } $this->headTitle()->append("Offre de formation"); -$canExport = $this->isAllowed(Privileges::getResourceId(Privileges::ODF_EXPORT_CSV)) && count($elements); -$canViewEtape = $this->isAllowed(Privileges::getResourceId(Privileges::ODF_ETAPE_VISUALISATION)); +$canExport = $this->isAllowed(Privileges::getResourceId(Privileges::ODF_EXPORT_CSV)) && count($elements); +$canViewEtape = $this->isAllowed(Privileges::getResourceId(Privileges::ODF_ETAPE_VISUALISATION)); $canEditElement = $this->isAllowed($structure, Privileges::ODF_ELEMENT_EDITION); $canSyncElement = $this->isAllowed(Privileges::getResourceId(Privileges::ODF_ELEMENT_SYNCHRONISATION)); ?> @@ -236,7 +236,7 @@ $canSyncElement = $this->isAllowed(Privileges::getResourceId(Privileges::ODF_ELE echo $this->tag('a', $attrs)->html('<i class="fas fa-plus"></i> Nouvel enseignement'); } if ($canExport) { - $params = [ + $params = [ 'structure' => $structure ? $structure->getId() : null, 'niveau' => $niveau ? $niveau->getId() : null, 'etape' => $etape ? $etape->getId() : null,