From a034be1ca43c52da6a20d121bf44d2022d496a50 Mon Sep 17 00:00:00 2001
From: Jean-Philippe Metivier <jean-philippe.metivier@unicaen.fr>
Date: Tue, 3 Dec 2024 08:21:19 +0100
Subject: [PATCH] Modification du comportement du bouton 'changer etat'

---
 .../Controller/SessionController.php          | 56 ++++++++++---------
 .../Controller/SessionControllerFactory.php   |  4 ++
 .../view/formation/session/changer-etat.phtml | 13 +++++
 readme.md                                     |  4 ++
 4 files changed, 52 insertions(+), 25 deletions(-)

diff --git a/module/Formation/src/Formation/Controller/SessionController.php b/module/Formation/src/Formation/Controller/SessionController.php
index f5dd4134..54318226 100644
--- a/module/Formation/src/Formation/Controller/SessionController.php
+++ b/module/Formation/src/Formation/Controller/SessionController.php
@@ -28,6 +28,7 @@ use UnicaenApp\View\Model\CsvModel;
 use UnicaenEnquete\Service\Enquete\EnqueteServiceAwareTrait;
 use UnicaenEnquete\Service\Resultat\ResultatServiceAwareTrait;
 use UnicaenEtat\Service\EtatCategorie\EtatCategorieServiceAwareTrait;
+use UnicaenEtat\Service\EtatInstance\EtatInstanceServiceAwareTrait;
 use UnicaenEtat\Service\EtatType\EtatTypeServiceAwareTrait;
 use UnicaenMail\Service\Mail\MailServiceAwareTrait;
 use UnicaenParametre\Service\Parametre\ParametreServiceAwareTrait;
@@ -38,6 +39,7 @@ class SessionController extends AbstractActionController
 {
     use EnqueteServiceAwareTrait;
     use EtatCategorieServiceAwareTrait;
+    use EtatInstanceServiceAwareTrait;
     use EtatTypeServiceAwareTrait;
     use FormateurServiceAwareTrait;
     use FormationServiceAwareTrait;
@@ -422,31 +424,35 @@ class SessionController extends AbstractActionController
             $data = $request->getPost();
             $etat = $this->getEtatTypeService()->getEtatType($data['etat']);
 
-            switch ($etat->getCode()) {
-                case SessionEtats::ETAT_CREATION_EN_COURS :
-                    $this->getSessionService()->recreation($session);
-                    exit();
-                case SessionEtats::ETAT_INSCRIPTION_OUVERTE :
-                    $this->getSessionService()->ouvrirInscription($session);
-                    exit();
-                case SessionEtats::ETAT_INSCRIPTION_FERMEE :
-                    $this->getSessionService()->fermerInscription($session);
-                    exit();
-                case SessionEtats::ETAT_FORMATION_CONVOCATION :
-                    $this->getSessionService()->envoyerConvocation($session);
-                    $this->getSessionService()->envoyerEmargement($session);
-                    exit();
-                case SessionEtats::ETAT_ATTENTE_RETOURS :
-                    $this->getSessionService()->demanderRetour($session);
-                    exit();
-                case SessionEtats::ETAT_CLOTURE_INSTANCE :
-                    $this->getSessionService()->cloturer($session);
-                    exit();
-                case SessionEtats::ETAT_SESSION_ANNULEE :
-                    $this->getSessionService()->annuler($session);
-                    exit();
-                default :
-            }
+            $this->getEtatInstanceService()->setEtatActif($session, $etat->getCode());
+            $this->getSessionService()->update($session);
+
+            //Les gestions n'utilise pas le bouton correctement ...
+//            switch ($etat->getCode()) {
+//                case SessionEtats::ETAT_CREATION_EN_COURS :
+//                    $this->getSessionService()->recreation($session);
+//                    exit();
+//                case SessionEtats::ETAT_INSCRIPTION_OUVERTE :
+//                    $this->getSessionService()->ouvrirInscription($session);
+//                    exit();
+//                case SessionEtats::ETAT_INSCRIPTION_FERMEE :
+//                    $this->getSessionService()->fermerInscription($session);
+//                    exit();
+//                case SessionEtats::ETAT_FORMATION_CONVOCATION :
+//                    $this->getSessionService()->envoyerConvocation($session);
+//                    $this->getSessionService()->envoyerEmargement($session);
+//                    exit();
+//                case SessionEtats::ETAT_ATTENTE_RETOURS :
+//                    $this->getSessionService()->demanderRetour($session);
+//                    exit();
+//                case SessionEtats::ETAT_CLOTURE_INSTANCE :
+//                    $this->getSessionService()->cloturer($session);
+//                    exit();
+//                case SessionEtats::ETAT_SESSION_ANNULEE :
+//                    $this->getSessionService()->annuler($session);
+//                    exit();
+//                default :
+//            }
 
             exit();
         }
diff --git a/module/Formation/src/Formation/Controller/SessionControllerFactory.php b/module/Formation/src/Formation/Controller/SessionControllerFactory.php
index af2f710c..4473141c 100644
--- a/module/Formation/src/Formation/Controller/SessionControllerFactory.php
+++ b/module/Formation/src/Formation/Controller/SessionControllerFactory.php
@@ -19,6 +19,7 @@ use Psr\Container\NotFoundExceptionInterface;
 use UnicaenEnquete\Service\Enquete\EnqueteService;
 use UnicaenEnquete\Service\Resultat\ResultatService;
 use UnicaenEtat\Service\EtatCategorie\EtatCategorieService;
+use UnicaenEtat\Service\EtatInstance\EtatInstanceService;
 use UnicaenEtat\Service\EtatType\EtatTypeService;
 use UnicaenMail\Service\Mail\MailService;
 use UnicaenParametre\Service\Parametre\ParametreService;
@@ -36,6 +37,7 @@ class SessionControllerFactory
         /**
          * @var EnqueteService $enqueteService
          * @var EtatCategorieService $etatCategorieService
+         * @var EtatInstanceService $etatInstanceService
          * @var EtatTypeService $etatTypeService
          * @var FormateurService $formateurService
          * @var FormationService $formationService
@@ -50,6 +52,7 @@ class SessionControllerFactory
          */
         $enqueteService = $container->get(EnqueteService::class);
         $etatCategorieService = $container->get(EtatCategorieService::class);
+        $etatInstanceService = $container->get(EtatInstanceService::class);
         $etatTypeService = $container->get(EtatTypeService::class);
         $formateurService = $container->get(FormateurService::class);
         $formationService = $container->get(FormationService::class);
@@ -77,6 +80,7 @@ class SessionControllerFactory
         $controller = new SessionController();
         $controller->setEnqueteService($enqueteService);
         $controller->setEtatCategorieService($etatCategorieService);
+        $controller->setEtatInstanceService($etatInstanceService);
         $controller->setEtatTypeService($etatTypeService);
         $controller->setFormateurService($formateurService);
         $controller->setFormationService($formationService);
diff --git a/module/Formation/view/formation/session/changer-etat.phtml b/module/Formation/view/formation/session/changer-etat.phtml
index be3fb7a2..1aacac94 100644
--- a/module/Formation/view/formation/session/changer-etat.phtml
+++ b/module/Formation/view/formation/session/changer-etat.phtml
@@ -11,6 +11,19 @@ use UnicaenEtat\Entity\Db\EtatType;
 
 ?>
 
+<div class="alert alert-warning">
+    <p>
+        <strong>
+            <span class="icon icon-attention"></span>
+            Cette action ne fait que de modifier l'état associé à la session.
+        </strong>
+    </p>
+    <p>
+        Elle ne provoque aucun envoi de mail ou traitement.
+        Pour réaliser cela, veuillez utiliser les boutons associés aux différentes étapes du cycle de vie d'une session.
+    </p>
+</div>
+
 <div class="alert alert-info">
     La session de formation <strong><?php echo $session->getFormation()->getLibelle(); ?></strong>
     (<?php echo $session->getPeriode(); ?>) est actuellement à l'état
diff --git a/readme.md b/readme.md
index 7ab5dbe1..d5852e71 100644
--- a/readme.md
+++ b/readme.md
@@ -3,3 +3,7 @@
 - [Indicateurs](documentation/docs/indicateurs.md)
 - [Template](documentation/docs/renderer.md)
 
+# Changements 
+
+## 1.0.5 (XX/XX/XX)
+
-- 
GitLab