From 921fc740ec1d85584cc9adb5a5345aefc934c330 Mon Sep 17 00:00:00 2001
From: Jean-Philippe Metivier <jean-philippe.metivier@unicaen.fr>
Date: Mon, 10 Mar 2025 11:22:56 +0100
Subject: [PATCH] Parapheur et fitlre

---
 .../Controller/DemandeExterneController.php   | 19 +++++++++++--------
 .../demande-externe/parapheur.phtml           |  6 +++++-
 .../demande-externe/partial/filtre.phtml      |  6 +++---
 3 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/module/DemandeExterne/src/Controller/DemandeExterneController.php b/module/DemandeExterne/src/Controller/DemandeExterneController.php
index c225b807..1c7b7947 100644
--- a/module/DemandeExterne/src/Controller/DemandeExterneController.php
+++ b/module/DemandeExterne/src/Controller/DemandeExterneController.php
@@ -14,17 +14,14 @@ use DemandeExterne\Form\DemandeExterne\DemandeExterneFormAwareTrait;
 use DemandeExterne\Provider\Etat\DemandeExterneEtats;
 use DemandeExterne\Provider\Parametre\DemandeExterneParametres;
 use DemandeExterne\Provider\Template\MailTemplates;
-use DemandeExterne\Provider\Validation\DemandeExterneValidations;
 use DemandeExterne\Service\DemandeExterne\DemandeExterneServiceAwareTrait;
 use DemandeExterne\Service\Notification\NotificationServiceAwareTrait;
 use Fichier\Entity\Db\Fichier;
 use Fichier\Form\Upload\UploadFormAwareTrait;
 use Fichier\Service\Fichier\FichierServiceAwareTrait;
 use Fichier\Service\Nature\NatureServiceAwareTrait;
-use Formation\Entity\Db\Formation;
 use Formation\Form\Justification\JustificationFormAwareTrait;
 use Formation\Form\SelectionGestionnaire\SelectionGestionnaireFormAwareTrait;
-use Formation\Provider\Etat\InscriptionEtats;
 use Formation\Provider\FichierNature\FichierNature;
 use Formation\Provider\Role\FormationRoles;
 use Laminas\Form\Element\Select;
@@ -34,6 +31,7 @@ use Laminas\Mvc\Controller\AbstractActionController;
 use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger;
 use Laminas\View\Model\JsonModel;
 use Laminas\View\Model\ViewModel;
+use UnicaenEtat\Entity\Db\EtatType;
 use UnicaenEtat\Service\EtatInstance\EtatInstanceServiceAwareTrait;
 use UnicaenEtat\Service\EtatType\EtatTypeServiceAwareTrait;
 use UnicaenParametre\Service\Parametre\ParametreServiceAwareTrait;
@@ -698,6 +696,13 @@ class DemandeExterneController extends AbstractActionController
         $plafond1 = $this->getParametreService()->getValeurForParametre(DemandeExterneParametres::TYPE, DemandeExterneParametres::PLAFOND_DRH);
         $plafond2 = $this->getParametreService()->getValeurForParametre(DemandeExterneParametres::TYPE, DemandeExterneParametres::PLAFOND_DGS);
 
+        $etats = [
+            $this->getEtatTypeService()->getEtatTypeByCode(DemandeExterneEtats::ETAT_VALIDATION_GESTIONNAIRE,DemandeExterneEtats::TYPE),
+            $this->getEtatTypeService()->getEtatTypeByCode(DemandeExterneEtats::ETAT_VALIDATION_RESPONSABLE,DemandeExterneEtats::TYPE),
+            $this->getEtatTypeService()->getEtatTypeByCode(DemandeExterneEtats::ETAT_VALIDATION_DRH,DemandeExterneEtats::TYPE),
+            $this->getEtatTypeService()->getEtatTypeByCode(DemandeExterneEtats::ETAT_VALIDATION_DGS,DemandeExterneEtats::TYPE),
+        ];
+
         $fromQueries = $this->params()->fromQuery();
         $params = [
             'agent' => $this->getAgentService()->getAgent($fromQueries['agent-filtre']['id'] ?? null),
@@ -705,6 +710,7 @@ class DemandeExterneController extends AbstractActionController
             'etat' => $this->getEtatTypeService()->getEtatType((isset($fromQueries['etat']) && trim($fromQueries['etat']) !== '') ? trim($fromQueries['etat']) : null),
             'historise' => $fromQueries['historise'] ?? null,
             'annee' => $fromQueries['annee'] ?? null,
+            'agent-filtre[id]' => $fromQueries['agent-filtre']['id']??null,
         ];
         $liste = $this->getRequest()->getUri()->getQuery();
         if ($liste and $liste !== '') {
@@ -716,20 +722,17 @@ class DemandeExterneController extends AbstractActionController
                 }
             }
         } else {
-            $params['etats'] = DemandeExterneEtats::ETATS_OUVERTS;
+            $params['etats'] = array_map(function (EtatType $etat) {return $etat->getCode();}, $etats);
             $params['historise'] = 0;
         }
 
-        $demandes = $this->getDemandeExterneService()->getDemandesExternesParapheurs((new DateTime())->format('Y'));
-
-        $etats = $this->getEtatTypeService()->getEtatsTypesByCategorieCode(DemandeExterneEtats::TYPE);
+        $demandes = $this->getDemandeExterneService()->getDemandesExternesWithFiltre($params);
         $gestionnaires = $this->getUserService()->getUtilisateursByRoleIdAsOptions(FormationRoles::GESTIONNAIRE_FORMATION);
         return new ViewModel([
             'plafond1' => $plafond1,
             'plafond2' => $plafond2,
             'demandes' => $demandes,
 
-
             'etats' => $etats,
             'params' => $params,
             'gestionnaires' => $gestionnaires,
diff --git a/module/DemandeExterne/view/demande-externe/demande-externe/parapheur.phtml b/module/DemandeExterne/view/demande-externe/demande-externe/parapheur.phtml
index cb597b21..d7978305 100644
--- a/module/DemandeExterne/view/demande-externe/demande-externe/parapheur.phtml
+++ b/module/DemandeExterne/view/demande-externe/demande-externe/parapheur.phtml
@@ -4,11 +4,15 @@ use DemandeExterne\Entity\Db\DemandeExterne;
 use DemandeExterne\Provider\Etat\DemandeExterneEtats;
 use DemandeExterne\Provider\Privilege\DemandeexternePrivileges;
 use Fichier\Entity\Db\Fichier;
+use UnicaenEtat\Entity\Db\EtatType;
+use UnicaenUtilisateur\Entity\Db\User;
 
 /**
  * @see DemandeExterneController::parapheurAction()
  * @var DemandeExterne[] $demandes
  * @var array $params
+ * @var EtatType[] $etats
+ * @var User[] $gestionnaires
  */
 
 $this->headTitle("Parapheur des formations en attentes");
@@ -35,7 +39,7 @@ $canTeleverserDevis = $canGerer;
     Demandes de formation externe
 </h2>
 
-<?php //echo $this->partial('partial/filtre', ['etats' => $etats, 'params' => $params, 'gestionnaires' => $gestionnaires], [], true); ?>
+<?php echo $this->partial('partial/filtre', ['etats' => $etats, 'params' => $params, 'gestionnaires' => $gestionnaires], [], true); ?>
 
 <table class="table table-condensed table-hover" id="demandes">
     <thead>
diff --git a/module/DemandeExterne/view/demande-externe/demande-externe/partial/filtre.phtml b/module/DemandeExterne/view/demande-externe/demande-externe/partial/filtre.phtml
index 90fbfb35..524673ca 100644
--- a/module/DemandeExterne/view/demande-externe/demande-externe/partial/filtre.phtml
+++ b/module/DemandeExterne/view/demande-externe/demande-externe/partial/filtre.phtml
@@ -40,8 +40,8 @@ use UnicaenUtilisateur\Entity\Db\User;
                             <label for="annee">Année de la demande :  </label>
                             <select id="annee" name="annee" class="selectpicker">
                                 <option value="">Peu importe</option>
-                                <?php for ($annee = 2022 ; $annee <= Formation::getAnnee() ; $annee++) : ?> <!-- todo nope -->
-                                    <option value="<?php echo $annee; ?>"><?php echo $annee; ?>/<?php echo $annee+1; ?></option>
+                                <?php for ($annee = Formation::getAnnee() ; $annee >=2022  ; $annee--) : ?> <!-- todo nope -->
+                                    <option value="<?php echo $annee; ?>"><?php echo $annee; ?></option>
                                 <?php endfor; ?>
                             </select>
                         </div>
@@ -124,7 +124,7 @@ use UnicaenUtilisateur\Entity\Db\User;
         $('form#filter').submit();
     });
 
-<?php if (isset($params['agent-filtre[id]'])) :?>
+<?php if (isset($params['agent'])) :?>
         $('input[name="agent-filtre[label]').val(" <?php echo $params['agent']->getDenomination(); ?> ");
         $('input[name="agent-filtre[id]').val("<?php echo $params['agent']->getId(); ?>");
 <?php endif; ?>
-- 
GitLab