Commit abcc548b authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

- Corrections sur reconduction offre dans le cas complexe d'un élément...

- Corrections sur reconduction offre dans le cas complexe d'un élément pédagogique qui aurait été modélisé dans Apogee puis supprimé dans OSE pour être ensuite remis à la main en formation complémentaire (même code source). Contrainte unicité.
parent 11778b53
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -171,6 +171,8 @@ class OffreFormationController extends AbstractController
            $datas['mappingEtape'] = $mappingEtape;
            $reconductionProcessus = $this->getProcessusReconduction();
            try {
                //Disable filter historique pour regarder si étape ou element avec date de desctruction
                $this->disableFilters('historique');
                if ($reconductionProcessus->reconduction($datas)) {
                    $this->flashMessenger()->addSuccessMessage("Les éléments ont bien été reconduits pour l'année universitaire prochaine.");
                } else {
+54 −28
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ use Application\Service\Traits\CheminPedagogiqueServiceAwareTrait;
use Application\Service\Traits\ContextServiceAwareTrait;
use Application\Service\Traits\ElementPedagogiqueServiceAwareTrait;
use Application\Service\Traits\EtapeServiceAwareTrait;
use Application\Service\Traits\SourceServiceAwareTrait;
use Application\Service\Traits\VolumeHoraireEnsServiceAwareTrait;
use Zend\Stdlib\Parameters;

@@ -24,6 +25,7 @@ class ReconductionProcessus extends AbstractProcessus
    use VolumeHoraireEnsServiceAwareTrait;
    use AnneeServiceAwareTrait;
    use ContextServiceAwareTrait;
    use SourceServiceAwareTrait;

    protected $etapeService;

@@ -77,8 +79,13 @@ class ReconductionProcessus extends AbstractProcessus
                    $idEtapeN1      = $datas['mappingEtape'][$idEtape];
                    $etapeReconduit = $this->etapeService->get($idEtapeN1);
                } else {

                    //Check si l'étape reconduite n'a pas déjà été supprimé
                    $etapeEnCours   = $this->etapeService->get($idEtape);
                    $etapeReconduit = $this->getServiceEtape()->getBySourceCode(
                        $etapeEnCours->getSourceCode(),
                        $this->contextService->getAnneeSuivante()
                    );
                    if (!$etapeReconduit) {
                        $etapeReconduit = $this->etapeService->newEntity();
                        $etapeReconduit->setAnnee($this->anneeService->getSuivante($anneeEnCours));
                        $etapeReconduit->setSpecifiqueEchanges(0);
@@ -88,6 +95,13 @@ class ReconductionProcessus extends AbstractProcessus
                        $etapeReconduit->setStructure($etapeEnCours->getStructure());
                        $etapeReconduit->setDomaineFonctionnel($etapeEnCours->getDomaineFonctionnel());
                        $etapeReconduit->setSourceCode($etapeEnCours->getSourceCode());
                    } else {
                        //sinon dehistoriser l'ancienne étape détruite
                        $etapeReconduit->dehistoriser();
                        //Force source ose
                        $etapeReconduit->setSource($this->getServiceSource()->getOse());
                    }


                    $em->persist($etapeReconduit);
                }
@@ -95,6 +109,12 @@ class ReconductionProcessus extends AbstractProcessus
                if (array_key_exists($idEtape, $datas['element'])) {
                    foreach ($datas['element'][$idEtape] as $idElement) {
                        $elementEnCours = $this->elementPedagogiqueService->get($idElement);
                        //Check si element reconduit n'a pas était déjà supprimmé
                        $elementReconduit = $this->elementPedagogiqueService->getBySourceCode(
                            $elementEnCours->getSourceCode(),
                            $this->contextService->getAnneeSuivante());
                        //Si élément n'a jamais existé en base création d'un nouvelle entité.
                        if (!$elementReconduit) {
                            $elementReconduit = $this->elementPedagogiqueService->newEntity();
                            $elementReconduit->setAnnee($this->anneeService->getSuivante($anneeEnCours));
                            $elementReconduit->setEtape($etapeReconduit);
@@ -111,13 +131,19 @@ class ReconductionProcessus extends AbstractProcessus
                            $elementReconduit->setTauxFoad($elementEnCours->getTauxFoad());
                            $elementReconduit->setDiscipline($elementEnCours->getDiscipline());
                            $elementReconduit->setPeriode($elementEnCours->getPeriode());
                        } else {
                            //sinon dehistoriser l'ancienne élément détruit
                            $elementReconduit->dehistoriser();
                            //Force source ose
                            $elementReconduit->setSource($this->getServiceSource()->getOse());
                        }
                        //ajout de l'élément à l'étape
                        $etapeReconduit->addElementPedagogique($elementReconduit);
                        $em->persist($elementReconduit);
                        //Reconduction des chemins pédagogiques
                        $cheminsPedagogique = $elementEnCours->getCheminPedagogique();
                        foreach ($cheminsPedagogique as $chemin) {
                            $chemin;

                            $cheminReconduit = $this->cheminPedagogiqueService->newEntity();
                            $cheminReconduit->setElementPedagogique($elementReconduit);
                            $cheminReconduit->setEtape($etapeReconduit);
+32 −12
Original line number Diff line number Diff line
@@ -2,6 +2,8 @@

namespace Application\Service;

use Application\Entity\Db\Annee;
use Application\Entity\Db\ElementPedagogique;
use Application\Provider\Privilege\Privileges;
use Application\Service\Traits\ContextServiceAwareTrait;
use Application\Service\Traits\GroupeTypeFormationServiceAwareTrait;
@@ -139,6 +141,26 @@ class EtapeService extends AbstractEntityService



    /**
     *
     * @param string $sourceCode
     * @param Annee  $annee
     *
     * @return Etape
     */
    public function getBySourceCode($sourceCode, Annee $annee = null)
    {
        if (null == $sourceCode) return null;

        if (!$annee) {
            $annee = $this->getServiceContext()->getAnnee();
        }

        return $this->getRepo()->findOneBy(['sourceCode' => $sourceCode, 'annee' => $annee->getId()]);
    }



    /**
     *
     * @param Etape $entity
@@ -201,8 +223,6 @@ class EtapeService extends AbstractEntityService





    /**
     * Retourne une nouvelle entité, initialisée avec les bons paramètres
     *