Commit 3e691b1f authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

WIP admission wf : modif suite à améliorations dans MultipageForm

parent e4466d9b
Loading
Loading
Loading
Loading
+4 −2
Changes for composer.json: 4 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@
        "webmozart/assert": "^1.3",

        "unicaen/alerte": "^3.0",
        "unicaen/app": "6.2.1",
        "unicaen/app": "^6.3",
        "unicaen/auth-token": "^7.1",
        "unicaen/authentification": "^6.4",
        "unicaen/privilege": "^6.3.0",
@@ -66,6 +66,7 @@
        "unicaen/livelog": "^4.0",
        "unicaen/mail": "^6.1",
        "unicaen/maintenance-mode": "^1.0",
        "unicaen/multipage-form": "^1.0",
        "unicaen/parametre": "^6.0",
        "unicaen/pdf": "dev-release_7.0.0",
        "unicaen/renderer": "dev-release_7.2.0",
@@ -73,7 +74,8 @@
        "unicaen/sql": "^2.0",
        "unicaen/sygal-api": "dev-master",
        "unicaen/utilisateur": "^6.3",
        "unicaen/avis": "dev-main"
        "unicaen/avis": "dev-main",
        "unicaen/exemple": "^1.0@dev"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
+71 −5
Changes for composer.lock: 71 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
        "This file is @generated automatically"
    ],
    "content-hash": "30888d6e3783a3db724e1b2f869c4cbd",
    "content-hash": "f8e768d83941258935bd9de71a3b204b",
    "packages": [
        {
            "name": "apereo/phpcas",
@@ -11820,11 +11820,11 @@
        },
        {
            "name": "unicaen/app",
            "version": "6.2.1",
            "version": "6.3.0",
            "source": {
                "type": "git",
                "url": "https://git.unicaen.fr/lib/unicaen/app.git",
                "reference": "8ded04d54ed8f814b64cbe1b3f7e04f44275bcf8"
                "reference": "d3126a05785e8601ba31dd8d947572ba1e37b0ca"
            },
            "require": {
                "beberlei/assert": "^3.3",
@@ -11876,7 +11876,7 @@
                ]
            },
            "description": "Module de base des applications unicaen",
            "time": "2025-09-24T16:18:13+00:00"
            "time": "2025-10-07T14:32:18+00:00"
        },
        {
            "name": "unicaen/auth-token",
@@ -12190,6 +12190,37 @@
            "description": "Module de gestion des etats et actions associés au passage d'état",
            "time": "2025-03-06T16:05:54+00:00"
        },
        {
            "name": "unicaen/exemple",
            "version": "dev-master",
            "source": {
                "type": "git",
                "url": "https://git.unicaen.fr/lib/unicaen/exemple.git",
                "reference": "551e58e1b4444984d67b1a066c3f19494b098674"
            },
            "require": {
                "php": "^8.0",
                "unicaen/app": "^6.0",
                "unicaen/bjy-authorize": "^6.0"
            },
            "type": "library",
            "extra": {
                "branch-alias": {
                    "dev-master": "1.0.x-dev"
                }
            },
            "autoload": {
                "psr-0": {
                    "Exemple": "src/",
                    "ExempleTest": "tests/"
                },
                "classmap": [
                    "./Module.php"
                ]
            },
            "description": "Module d'exemples d'utilisation des bibliothèques Unicaen.",
            "time": "2025-10-03T13:09:59+00:00"
        },
        {
            "name": "unicaen/faq",
            "version": "7.1.0",
@@ -12382,6 +12413,40 @@
            "description": "Module Unicaen pour activer/désactiver le mode maintenance d'une application",
            "time": "2025-03-24T08:45:25+00:00"
        },
        {
            "name": "unicaen/multipage-form",
            "version": "1.0.0",
            "source": {
                "type": "git",
                "url": "https://git.unicaen.fr/lib/unicaen/multipage-form.git",
                "reference": "4a257edf5bab96efc38d34b681df85d6f6eac6fe"
            },
            "require": {
                "laminas/laminas-config": "^3.9",
                "laminas/laminas-form": "^3.9",
                "laminas/laminas-http": "^2.18",
                "laminas/laminas-mvc": "^3.6",
                "laminas/laminas-mvc-plugin-prg": "^1.7",
                "laminas/laminas-servicemanager": "^3.20",
                "laminas/laminas-session": "^2.16",
                "laminas/laminas-view": "^2.27"
            },
            "require-dev": {
                "laminas/laminas-test": "^4.7"
            },
            "type": "library",
            "autoload": {
                "psr-0": {
                    "UnicaenMultipageForm": "src/",
                    "UnicaenMultipageFormTest": "tests/"
                },
                "classmap": [
                    "./Module.php"
                ]
            },
            "description": "Gestion de formulaire multi-page",
            "time": "2025-10-09T08:24:05+00:00"
        },
        {
            "name": "unicaen/parametre",
            "version": "6.1.3",
@@ -15507,7 +15572,8 @@
        "unicaen/pdf": 20,
        "unicaen/renderer": 20,
        "unicaen/sygal-api": 20,
        "unicaen/avis": 20
        "unicaen/avis": 20,
        "unicaen/exemple": 20
    },
    "prefer-stable": true,
    "prefer-lowest": false,
+2 −0
Changes for config/application.config.php: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -62,6 +62,8 @@ return [
        'Unicaen\Console',
        'UnicaenParametre',
        'UnicaenSearch',
        'UnicaenMultipageForm',
        'Exemple',
        'Feature',
        'Horodatage',
        'Structure',
+2 −2
Changes for module/Admission/src/Admission/Controller/AdmissionAbstractController.php: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -6,8 +6,8 @@ use Admission\Form\Admission\AdmissionForm;
use Laminas\Http\Response;
use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger;
use Laminas\View\Model\ViewModel;
use UnicaenApp\Controller\Plugin\MultipageFormPlugin;
use UnicaenApp\Form\MultipageForm;
use UnicaenMultipageForm\Controller\Plugin\MultipageFormPlugin;
use UnicaenMultipageForm\Form\MultipageForm;
use Laminas\Mvc\Controller\AbstractActionController;

/**
+50 −29
Changes for module/Admission/src/Admission/Controller/AdmissionController.php: 50 added lines, 29 removed lines.
Original line number Diff line number Diff line
@@ -56,8 +56,9 @@ use Mpdf\MpdfException;
use Notification\Exception\RuntimeException;
use Notification\Service\NotifierServiceAwareTrait;
use Structure\Service\Etablissement\EtablissementServiceAwareTrait;
use UnicaenApp\Form\Fieldset\MultipageFormNavFieldset;
use UnicaenMultipageForm\Form\Fieldset\MultipageFormNavFieldset;
use UnicaenApp\Service\EntityManagerAwareTrait;
use UnicaenMultipageForm\Manager\MultipageFormManager;
use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait;

class AdmissionController extends AdmissionAbstractController
@@ -98,23 +99,28 @@ class AdmissionController extends AdmissionAbstractController
        //Vide la session, si l'utilisateur demandé est différent de celui en session
        $this->isUserDifferentFromUserInSession();

        //Récupération de l'objet Admission en BDD
        $admission = $this->getAdmission();
        if (!empty($admission)) {
            $this->admissionForm->bind($admission);
        }

        $response = $this->processMultipageForm($this->admissionForm);
        if ($response instanceof Response) return $response;
        if ($response instanceof Response) {
            return $response;
        }

        //Récupération des textes dynamiques en fonction de l'établissement
        $texteHandicap = $this->contenuService->generateRenduByTemplateCode(TexteTemplates::ADMISSION_INFO_HANDICAP);
        $texteVae = $this->contenuService->generateRenduByTemplateCode(TexteTemplates::ADMISSION_INFO_VAE);
        //Récupération de l'objet Admission en BDD
        $admission = $this->getAdmission();
        if(!empty($admission)) {
            $etudiant = $this->admissionForm->get('etudiant');
            $data = $this->multipageForm($this->admissionForm)->getFormSessionData();
            $this->admissionForm->bind($admission);
            $canModifierAdmission  = $this->peutModifierAdmission($admission);

            if(!$canModifierAdmission) $etudiant->disableModificationFieldset();
            //Enregistrement des informations de l'inscription
            if($data['_fieldset'] == "inscription") $this->enregistrerInscription($data, $admission);
            if($data[MultipageFormManager::FIELDSET_KEY] == "inscription") $this->enregistrerInscription($data, $admission);

            /** @var Inscription $inscription */
            $inscription = $admission->getInscription()->first();
@@ -144,11 +150,14 @@ class AdmissionController extends AdmissionAbstractController
        //Vide la session, si l'utilisateur demandé est différent de celui en session
        $this->isUserDifferentFromUserInSession();

        $texteCotutelle = $this->contenuService->generateRenduByTemplateCode(TexteTemplates::ADMISSION_INFO_COTUTELLE);
        $texteCoencadrement = $this->contenuService->generateRenduByTemplateCode(TexteTemplates::ADMISSION_INFO_COENCADREMENT);
        //Récupération de l'objet Admission en BDD
        /** @var Admission $admission */
        $admission = $this->getAdmission();
        if (!empty($admission)) {
            $this->admissionForm->bind($admission);
        }

        $texteCotutelle = $this->contenuService->generateRenduByTemplateCode(TexteTemplates::ADMISSION_INFO_COTUTELLE);
        $texteCoencadrement = $this->contenuService->generateRenduByTemplateCode(TexteTemplates::ADMISSION_INFO_COENCADREMENT);
        if(!empty($admission)){
            $canModifierAdmission  = $this->peutModifierAdmission($admission);
            if(!$canModifierAdmission){
@@ -174,11 +183,11 @@ class AdmissionController extends AdmissionAbstractController
        }
        $data = $this->multipageForm($this->admissionForm)->getFormSessionData();

        if($data['_fieldset'] == "etudiant") {
        if($data[MultipageFormManager::FIELDSET_KEY] == "etudiant") {
            //Enregistrement des informations de l'Etudiant
            $this->enregistrerEtudiant($data, $admission);
        } elseif($data['_fieldset'] == "financement"){
            $this->admissionForm->bind($admission);
        } elseif($data[MultipageFormManager::FIELDSET_KEY] == "financement"){
//            $this->admissionForm->bind($admission);
            //Enregistrement des informations de financement
            $this->enregistrerFinancement($data, $admission);
        }
@@ -188,6 +197,7 @@ class AdmissionController extends AdmissionAbstractController
        $response->setVariable('texteCoencadrement', $texteCoencadrement);
        $response->setVariable('role', $this->userContextService->getSelectedIdentityRole());
        $response->setTemplate('admission/ajouter-inscription');

        return $response;
    }

@@ -196,28 +206,30 @@ class AdmissionController extends AdmissionAbstractController
        //Vide la session, si l'utilisateur demandé est différent de celui en session
        $this->isUserDifferentFromUserInSession();

        //Récupération de l'objet Admission en BDD
        /** @var Admission $admission */
        $admission = $this->getAdmission();
        if (!empty($admission)) {
            $this->admissionForm->bind($admission);
        }

        $response = $this->processMultipageForm($this->admissionForm);
        if ($response instanceof Response) {
            return $response;
        }

        //Récupération de l'objet Admission en BDD
        /** @var Admission $admission */
        $admission = $this->getAdmission();

        if (!empty($admission)) {
            $data = $this->multipageForm($this->admissionForm)->getFormSessionData();
            $this->admissionForm->bind($admission);
            $canModifierAdmission = $this->peutModifierAdmission($admission);
            if (!$canModifierAdmission) {
                /** @var FinancementFieldset $financement */
                $financement = $this->admissionForm->get('financement');
                $financement->disableModificationFieldset();
            }
            if ($data['_fieldset'] == "inscription") {
            if ($data[MultipageFormManager::FIELDSET_KEY] == "inscription") {
                //Enregistrement des informations de l'inscription
                $this->enregistrerInscription($data, $admission);
            } elseif ($data['_fieldset'] == "document") {
            } elseif ($data[MultipageFormManager::FIELDSET_KEY] == "document") {
                //Enregistrement des informations de financement
                $this->enregistrerDocument($data, $admission);
            }
@@ -232,6 +244,7 @@ class AdmissionController extends AdmissionAbstractController

        $response->setVariable('admission', $admission);
        $response->setTemplate('admission/ajouter-financement');

        return $response;
    }

@@ -240,30 +253,34 @@ class AdmissionController extends AdmissionAbstractController
        //Vide la session, si l'utilisateur demandé est différent de celui en session
        $this->isUserDifferentFromUserInSession();

        //Récupération de l'objet Admission en BDD
        /** @var Admission $admission */
        $admission = $this->getAdmission();
        if (!empty($admission)) {
            $this->admissionForm->bind($admission);
        }

        $response = $this->processMultipageForm($this->admissionForm);
        if ($response instanceof Response) {
            return $response;
        }

        $admission = $this->getAdmission();

        if ($admission->getInscription()->first() && !$admission->getInscription()->first()->getConfidentialite()) {
            $this->admissionForm->get('conventionFormationDoctorale')->disableMotivationDemandeConfidentialite();
        }

        if (!empty($admission)) {
            $data = $this->multipageForm($this->admissionForm)->getFormSessionData();
            $this->admissionForm->bind($admission);
            $canModifierAdmission = $this->peutModifierAdmission($admission);
            if (!$canModifierAdmission) {
                /** @var FinancementFieldset $financement */
                $financement = $this->admissionForm->get('conventionFormationDoctorale');
                $financement->disableModificationFieldset();
            }
            if ($data['_fieldset'] == "financement") {
            if ($data[MultipageFormManager::FIELDSET_KEY] == "financement") {
                // si on vient de l'étape précédente : enregistrement des informations associées
                $this->enregistrerFinancement($data, $admission);
            } elseif ($data['_fieldset'] == "document") {
            } elseif ($data[MultipageFormManager::FIELDSET_KEY] == "document") {
                // si on vient de l'étape suivante : enregistrement des informations associées
                $this->enregistrerDocument($data, $admission);
            }
@@ -280,18 +297,21 @@ class AdmissionController extends AdmissionAbstractController
        //Vide la session, si l'utilisateur demandé est différent de celui en session
        $this->isUserDifferentFromUserInSession();

        //Récupération de l'objet Admission en BDD
        /** @var Admission $admission */
        $admission = $this->getAdmission();
        if (!empty($admission)) {
            $this->admissionForm->bind($admission);
        }

        $response = $this->processMultipageForm($this->admissionForm);
        if ($response instanceof Response) {
            return $response;
        }

        //Récupération de l'objet Admission en BDD
        /** @var Admission $admission */
        $admission = $this->getAdmission();
        if(!empty($admission)){
            $data = $this->multipageForm($this->admissionForm)->getFormSessionData();
            $this->admissionForm->bind($admission);
            $this->admissionForm->setNavigationFieldsetPrototype($this->createNavigationForDocument($admission));
            $data = $this->multipageForm($this->admissionForm)->getFormSessionData();

            $canModifierAdmission = $this->peutModifierAdmission($admission);
            if(!$canModifierAdmission){
@@ -347,6 +367,7 @@ class AdmissionController extends AdmissionAbstractController
        $response->setVariable('commentaires', $commentaires ?? null);
        $response->setVariable('role', $this->userContextService->getSelectedIdentityRole());
        $response->setTemplate('admission/ajouter-document');

        return $response;
    }

Loading