Commit 76628e4c authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Correction #51823 pour que context fonctionne avec la modularisation (offre de formation)

parent 603b5b88
Loading
Loading
Loading
Loading
+9 −2
Changes for module/Application/src/Controller/Plugin/Context.php: 9 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -82,9 +82,16 @@ class Context extends Params
        if ('intervenant' === $target && $value) {
            $value = $this->getServiceIntervenant()->getByRouteParam($value);
        }

        //Adaptation pour que contexte cherche les entités dans d'autres modules que Application
        $modules = ['Application', 'OffreFormation'];
        foreach ($modules as $module) {
            $className = $module . '\\Entity\\Db\\' . ucfirst($target);
            if (class_exists($className)) {
                break;
            }
        }
        /* Conversion éventuelle en entité */
        $className = 'Application\\Entity\\Db\\' . ucfirst($target);
        //$className = 'Application\\Entity\\Db\\' . ucfirst($target);
        if (class_exists($className)) {
            if (!is_object($value) && !is_array($value)) {
                $id = (int)$value;
+56 −54
Changes for module/Enseignement/src/Controller/EnseignementController.php: 56 added lines, 54 removed lines.
Original line number Diff line number Diff line
@@ -65,26 +65,6 @@ class EnseignementController extends AbstractController
    use EtatSortieServiceAwareTrait;
    use ElementPedagogiqueServiceAwareTrait;

    /**
     * Initialisation des filtres Doctrine pour les historique.
     * Objectif : laisser passer les enregistrements passés en historique pour mettre en évidence ensuite les erreurs
     * éventuelles
     * (services sur des enseignements fermés, etc.)
     */
    protected function initFilters()
    {
        $this->em()->getFilters()->enable('historique')->init([
            \Enseignement\Entity\Db\Service::class,
            \Enseignement\Entity\Db\VolumeHoraire::class,
            \Application\Entity\Db\Validation::class,
        ]);
        $this->em()->getFilters()->enable('annee')->init([
            ElementPedagogique::class,
        ]);
    }



    public function prevuAction ()
    {
        $prevu = $this->getServiceTypeVolumeHoraire()->getPrevu();
@@ -94,15 +74,6 @@ class EnseignementController extends AbstractController



    public function realiseAction()
    {
        $realise = $this->getServiceTypeVolumeHoraire()->getRealise();

        return $this->indexAction($realise);
    }



    public function indexAction (?TypeVolumeHoraire $typeVolumeHoraire = null)
    {
        $this->initFilters();
@@ -136,6 +107,35 @@ class EnseignementController extends AbstractController



    /**
     * Initialisation des filtres Doctrine pour les historique.
     * Objectif : laisser passer les enregistrements passés en historique pour mettre en évidence ensuite les erreurs
     * éventuelles
     * (services sur des enseignements fermés, etc.)
     */
    protected function initFilters ()
    {
        $this->em()->getFilters()->enable('historique')->init([
            \Enseignement\Entity\Db\Service::class,
            \Enseignement\Entity\Db\VolumeHoraire::class,
            \Application\Entity\Db\Validation::class,
        ]);
        $this->em()->getFilters()->enable('annee')->init([
            ElementPedagogique::class,
        ]);
    }



    public function realiseAction ()
    {
        $realise = $this->getServiceTypeVolumeHoraire()->getRealise();

        return $this->indexAction($realise);
    }



    public function saisieAction ()
    {
        $this->initFilters();
@@ -218,6 +218,22 @@ class EnseignementController extends AbstractController



    private function updateTableauxBord (Intervenant $intervenant, $validation = false)
    {
        $this->getServiceWorkflow()->calculerTableauxBord([
            'formule',
            'validation_enseignement',
            'contrat',
            'service',
        ], $intervenant);

        if (!$validation) {
            $this->getServiceWorkflow()->calculerTableauxBord(['piece_jointe_demande', 'piece_jointe_fournie'], $intervenant);
        }
    }



    public function rafraichirLigneAction ()
    {
        $this->initFilters();
@@ -259,7 +275,9 @@ class EnseignementController extends AbstractController
        $form    = $this->getFormServiceEnseignementSaisie();
        $form->setTypeVolumeHoraire($typeVolumeHoraire);
        $element = $this->context()->elementPedagogiqueFromPost('element');
        if (!$element instanceof \OffreFormation\Entity\Db\ElementPedagogique) {
            $element = $this->getServiceElementPedagogique()->get($element);
        }
        $etablissement = $this->context()->etablissementFromPost();

        if ($serviceId) {
@@ -420,15 +438,6 @@ class EnseignementController extends AbstractController



    public function validationRealiseAction()
    {
        $typeVolumeHoraire = $this->getServiceTypeVolumeHoraire()->getRealise();

        return $this->validationAction($typeVolumeHoraire);
    }



    private function validationAction (TypeVolumeHoraire $typeVolumeHoraire)
    {
        $this->initFilters();
@@ -496,6 +505,15 @@ class EnseignementController extends AbstractController



    public function validationRealiseAction ()
    {
        $typeVolumeHoraire = $this->getServiceTypeVolumeHoraire()->getRealise();

        return $this->validationAction($typeVolumeHoraire);
    }



    public function validerAction ()
    {
        $this->initFilters();
@@ -564,20 +582,4 @@ class EnseignementController extends AbstractController

        return new MessengerViewModel();
    }



    private function updateTableauxBord(Intervenant $intervenant, $validation = false)
    {
        $this->getServiceWorkflow()->calculerTableauxBord([
            'formule',
            'validation_enseignement',
            'contrat',
            'service',
        ], $intervenant);

        if (!$validation) {
            $this->getServiceWorkflow()->calculerTableauxBord(['piece_jointe_demande', 'piece_jointe_fournie'], $intervenant);
        }
    }
}
+55 −53
Changes for module/OffreFormation/src/Service/ElementPedagogiqueService.php: 55 added lines, 53 removed lines.
Original line number Diff line number Diff line
@@ -45,18 +45,6 @@ class ElementPedagogiqueService extends AbstractEntityService



    /**
     * Retourne l'alias d'entité courante
     *
     * @return string
     */
    public function getAlias()
    {
        return 'ep';
    }



    /**
     * Recherche textuelle d'element pédagogique.
     *
@@ -121,7 +109,7 @@ class ElementPedagogiqueService extends AbstractEntityService
        $whereContext = implode(PHP_EOL . 'AND ', array_filter($whereContext));
        $whereContext = $whereContext ? 'AND ' . $whereContext : null;

        if (isset($filters['element']) && $filters['element'] instanceof ElementPedagogique) {
        if (isset($filters['element']) && $filters['element'] instanceof \OffreFormation\Entity\Db\ElementPedagogique) {
            $orEp = " OR ep.id = " . ((int)$filters['element']->getId());
            $orCp = " OR cp.element_pedagogique_id = " . ((int)$filters['element']->getId());
        } else {
@@ -129,6 +117,7 @@ class ElementPedagogiqueService extends AbstractEntityService
            $orCp = '';
        }


        $sql = "
select * from (
  select ep.id,
@@ -164,7 +153,6 @@ where rang = 1

        $result = $this->getEntityManager()->getConnection()->fetchAllAssociative($sql, $params);

//        var_dump($sql, $params);die;

        return $result;
    }
@@ -258,43 +246,6 @@ where rang = 1



    /**
     *
     * @param array   $result
     * @param integer $length
     *
     * @return array
     */
    protected function truncateResult($result, $length = 15)
    {
        if ($length && ($remain = count($result) - $length) > 0) {
            $result   = array_slice($result, 0, $length);
            $result[] = ['id' => null, 'label' => "<em><small>$remain résultats restant, affinez vos critères, svp.</small></em>"];
        }

        return $result;
    }



    /**
     * Retourne une nouvelle entité, initialisée avec les bons paramètres
     *
     * @return \OffreFormation\Entity\Db\ElementPedagogique
     */
    public function newEntity()
    {
        $entity = parent::newEntity();
        // toutes les entités créées ont OSE pour source!!
        $entity->setSource($this->getServiceSource()->getOse());
        // on crée pour l'année courante
        $entity->setAnnee($this->getServiceContext()->getAnnee());

        return $entity;
    }



    /**
     * Sauvegarde une entité
     *
@@ -327,6 +278,24 @@ where rang = 1



    /**
     * Retourne une nouvelle entité, initialisée avec les bons paramètres
     *
     * @return \OffreFormation\Entity\Db\ElementPedagogique
     */
    public function newEntity ()
    {
        $entity = parent::newEntity();
        // toutes les entités créées ont OSE pour source!!
        $entity->setSource($this->getServiceSource()->getOse());
        // on crée pour l'année courante
        $entity->setAnnee($this->getServiceContext()->getAnnee());

        return $entity;
    }



    /**
     * Supprime (historise par défaut) le service spécifié.
     *
@@ -361,16 +330,18 @@ where rang = 1
     * @throws ORMException
     * @throws OptimisticLockException
     */
    public function updateTauxRemu(ElementPedagogique $elementPedagogique, ?TauxRemu $tauxRemu){
    public function updateTauxRemu (ElementPedagogique $elementPedagogique, ?TauxRemu $tauxRemu)
    {

        /** @var ElementPedagogique $elp */
        $elp = $this->get($elementPedagogique->getId());
        $elp->setTauxRemuEp($tauxRemu);
        $this->getEntityManager()->persist($elp);
        $this->getEntityManager()->flush($elp);

    }



    public function forcerTauxMixite (ElementPedagogique $elementPedagogique, $tauxFi, $tauxFc, $tauxFa)
    {
        /** @var ElementTauxRegimes $etr */
@@ -494,4 +465,35 @@ where rang = 1

        return $qb;
    }



    /**
     * Retourne l'alias d'entité courante
     *
     * @return string
     */
    public function getAlias ()
    {
        return 'ep';
    }



    /**
     *
     * @param array   $result
     * @param integer $length
     *
     * @return array
     */
    protected function truncateResult ($result, $length = 15)
    {
        if ($length && ($remain = count($result) - $length) > 0) {
            $result   = array_slice($result, 0, $length);
            $result[] = ['id' => null, 'label' => "<em><small>$remain résultats restant, affinez vos critères, svp.</small></em>"];
        }

        return $result;
    }
}