Commit 6b502b3d authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Substitution creation et modification pour les etablissements

parent 985e4b9e
Loading
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -49,20 +49,22 @@ class SubstitutionController extends AbstractController
        if ($request->isPost()) {
            $data = $request->getPost();
            $sources = [];
            foreach($data['sources'] as $sourceId) {
                $etablissement = $this->etablissementService->getEtablissementById($sourceId);
            foreach($data['sourceIds'] as $sourceId) {
                $etablissement = $this->etablissementService->findEtablissementByStructureId($sourceId);
                if ($etablissement === null) {
                    throw new RuntimeException("Etablissement cible non trouvé avec id=$sourceId.");
                }
                $sources[] = $etablissement;
            }

            $structureCible = new Etablissement();
            $structureCible->setCode(uniqid());
            $this->etablissementService->updateFromPostData($structureCible, $data['cible']);

//            $this->structureService->createStructureSubstitutions($sources, $structureCible);
            return $this->redirect()->toRoute('substitution-index');
            $structureCibleDataObject = new Etablissement();
            $structureCibleDataObject->setCode(uniqid());
            $this->etablissementService->updateFromPostData($structureCibleDataObject, $data['cible']);

//            $id = $structureCible->getStructure()->getId();
//            return $this->redirect()->toRoute('substitution-modifier', ['cible' => $id], [], true);
            $structureCible = $this->structureService->createStructureSubstitutions($sources, $structureCibleDataObject);
            $id = $structureCible->getStructure()->getId();
            return $this->redirect()->toRoute('substitution-modifier', ['cible' => $id], [], true);

        } else {
            $cible = new Structure();
+6 −6
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ class StructureService extends BaseService
     * Structures à substituer (Etablissement|EcoleDoctorale|UniteRecherche
     * @param StructureConcreteInterface   $structureCibleDataObject
     * Objet contenant les attributs de la structure de substitution à créer
     * @return StructureSubstit[] Entités créées (une par substitution)
     * @return StructureConcreteInterface Entités créées (une par substitution)
     */
    public function createStructureSubstitutions(array $structuresSources, StructureConcreteInterface $structureCibleDataObject)
    {
@@ -76,8 +76,8 @@ class StructureService extends BaseService
        $structureCibleDataObject->setSourceCode($sourceCode);

        // instanciation du couple (Etab|ED|UR ; Structure) cible
        $structureCible = Structure::constructFromDataObject($structureCibleDataObject, $typeStructure, $sourceSygal);
        $structureRattachCible = $structureCible->getStructure(); // StructureSubstitution ne référence que des entités de type Structure
        $structureConcreteCible = Structure::constructFromDataObject($structureCibleDataObject, $typeStructure, $sourceSygal);
        $structureRattachCible = $structureConcreteCible->getStructure(); // StructureSubstitution ne référence que des entités de type Structure

        // instanciations des substitutions
        $substitutions = StructureSubstit::fromStructures($structuresSources, $structureRattachCible);
@@ -85,13 +85,13 @@ class StructureService extends BaseService
        // enregistrement en bdd
        $this->getEntityManager()->beginTransaction();
        try {
            $this->getEntityManager()->persist($structureCible);
            $this->getEntityManager()->persist($structureConcreteCible);
            $this->getEntityManager()->persist($structureRattachCible);
            array_map(function(StructureSubstit $ss) {
                $this->getEntityManager()->persist($ss);
            }, $substitutions);

            $this->getEntityManager()->flush($structureCible);
            $this->getEntityManager()->flush($structureConcreteCible);
            $this->getEntityManager()->flush($structureRattachCible);
            $this->getEntityManager()->flush($substitutions);

@@ -101,7 +101,7 @@ class StructureService extends BaseService
            throw new RuntimeException("Erreur rencontrée lors de l'enregistrement des substitutions", null, $e);
        }

        return $substitutions;
        return $structureConcreteCible;
    }

    /**
+8 −9
Original line number Diff line number Diff line
@@ -83,14 +83,13 @@ function generateSelect($etablissements, \Zend\View\Renderer\PhpRenderer $render
    $(document).ready(function() {

        //remplacement dans la structure cible
        $("input[type='radio']").click(function() {
        $("div#sources").on("click", "input[type='radio']", function () {
            var type = $(this).attr('name');
            var texte = ($(this).parent().find(".texte").text());
            $('input#' + type).val(texte);
        });

        })
        //suppression d'une structure
        $("button.supprimer").click(function() {
        .on("click", "button.supprimer", function () {
                $(this).parent().remove();
        });