From 1f4b0d881266dee75a177f93d575cc8b0f0707e2 Mon Sep 17 00:00:00 2001
From: lecluse <lecluse@d57fa8bc-6af1-4de9-8b7d-78e900e231e7>
Date: Thu, 19 Nov 2015 14:49:18 +0000
Subject: [PATCH] =?UTF-8?q?Erradication=20du=20type=20d'intervenant=20dire?=
 =?UTF-8?q?ctement=20accessible=20depuis=20l'intervenant.=20Le=20type=20se?=
 =?UTF-8?q?=20d=C3=A9duit=20d=C3=A9sormais=20du=20statut=20(c'est=20+=20pr?=
 =?UTF-8?q?opre)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 "data/Sql/__pense b\303\252te.sql"            | 32 ++++++++++++++-
 data/Sql/intervenant changement statut.sql    |  4 +-
 .../src/Application/Entity/Db/Intervenant.php |  6 +--
 .../Application.Entity.Db.Intervenant.dcm.xml |  4 +-
 .../src/Application/Service/Intervenant.php   | 40 ++++++++++++++++---
 .../Intervenant/IntervenantViewHelper.php     |  2 +-
 .../application/intervenant/apercevoir.phtml  |  2 +-
 .../intervenant/voir-heures-comp.phtml        |  2 +-
 .../view/application/intervenant/voir.phtml   |  2 +-
 9 files changed, 78 insertions(+), 16 deletions(-)

diff --git "a/data/Sql/__pense b\303\252te.sql" "b/data/Sql/__pense b\303\252te.sql"
index 93420be4ed..e409f1b77b 100644
--- "a/data/Sql/__pense b\303\252te.sql"	
+++ "b/data/Sql/__pense b\303\252te.sql"	
@@ -1 +1,31 @@
-select q'[o'connor]' from dual;
\ No newline at end of file
+select q'[o'connor]' from dual;
+
+
+
+select 
+annee_id, annee_debut_id, annee_fin_id, res res_attendu,
+case when
+
+
+annee_id BETWEEN GREATEST(NVL(annee_debut_id,0),annee_id) AND LEAST(NVL(annee_fin_id,9999),annee_id)
+
+
+then 1 else 0 end res_calcule from (
+
+          SELECT 2014 annee_id, null annee_debut_id, null annee_fin_id, 1 res FROM dual
+
+UNION ALL SELECT 2014 annee_id, 2014 annee_debut_id, 2014 annee_fin_id, 1 res FROM dual
+UNION ALL SELECT 2014 annee_id, null annee_debut_id, 2014 annee_fin_id, 1 res FROM dual
+UNION ALL SELECT 2014 annee_id, 2014 annee_debut_id, null annee_fin_id, 1 res FROM dual
+
+UNION ALL SELECT 2014 annee_id, 2012 annee_debut_id, 2015 annee_fin_id, 1 res FROM dual
+UNION ALL SELECT 2014 annee_id, null annee_debut_id, 2015 annee_fin_id, 1 res FROM dual
+UNION ALL SELECT 2014 annee_id, 2012 annee_debut_id, null annee_fin_id, 1 res FROM dual
+
+UNION ALL SELECT 2014 annee_id, 2015 annee_debut_id, 2017 annee_fin_id, 0 res FROM dual
+UNION ALL SELECT 2014 annee_id, 2015 annee_debut_id, null annee_fin_id, 0 res FROM dual
+
+UNION ALL SELECT 2014 annee_id, 2011 annee_debut_id, 2013 annee_fin_id, 0 res FROM dual
+UNION ALL SELECT 2014 annee_id, null annee_debut_id, 2013 annee_fin_id, 0 res FROM dual
+          
+) t1;
\ No newline at end of file
diff --git a/data/Sql/intervenant changement statut.sql b/data/Sql/intervenant changement statut.sql
index 284ce98100..3d7db4d0bc 100644
--- a/data/Sql/intervenant changement statut.sql	
+++ b/data/Sql/intervenant changement statut.sql	
@@ -1,6 +1,8 @@
 select * from intervenant where id = 3679;
+select * from intervenant where source_code = '34424' AND annee_id = 2014;
 
-update intervenant set statut_id = 4, type_id=1 WHERE id = 3112;
+
+update intervenant set statut_id = 4, type_id=1 WHERE id = 3681;
 
 select * from statut_intervenant;
 select * from type_intervenant;
\ No newline at end of file
diff --git a/module/Application/src/Application/Entity/Db/Intervenant.php b/module/Application/src/Application/Entity/Db/Intervenant.php
index b16fb0fb8f..c37a0be18b 100644
--- a/module/Application/src/Application/Entity/Db/Intervenant.php
+++ b/module/Application/src/Application/Entity/Db/Intervenant.php
@@ -1141,7 +1141,7 @@ class Intervenant implements IntervenantInterface, HistoriqueAwareInterface, Res
      * @param \Application\Entity\Db\TypeIntervenant $type
      *
      * @return Intervenant
-     */
+     *
     public function setType(\Application\Entity\Db\TypeIntervenant $type = null)
     {
         $this->type = $type;
@@ -1155,11 +1155,11 @@ class Intervenant implements IntervenantInterface, HistoriqueAwareInterface, Res
      * Get type
      *
      * @return \Application\Entity\Db\TypeIntervenant
-     */
+     *
     public function getType()
     {
         return $this->type;
-    }
+    }*/
 
 
 
diff --git a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Intervenant.dcm.xml b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Intervenant.dcm.xml
index 6f0fac93e4..c96f32150d 100644
--- a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Intervenant.dcm.xml
+++ b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Intervenant.dcm.xml
@@ -96,11 +96,11 @@
                 <join-column name="HISTO_CREATEUR_ID" referenced-column-name="ID"/>
             </join-columns>
         </many-to-one>
-        <many-to-one field="type" target-entity="Application\Entity\Db\TypeIntervenant">
+        <!--<many-to-one field="type" target-entity="Application\Entity\Db\TypeIntervenant">
             <join-columns>
                 <join-column name="TYPE_ID" referenced-column-name="ID"/>
             </join-columns>
-        </many-to-one>
+        </many-to-one>-->
         <many-to-one field="dossier" target-entity="Application\Entity\Db\Dossier">
             <join-columns>
                 <join-column name="DOSSIER_ID" referenced-column-name="ID"/>
diff --git a/module/Application/src/Application/Service/Intervenant.php b/module/Application/src/Application/Service/Intervenant.php
index c2b3d830e3..4e3796905c 100644
--- a/module/Application/src/Application/Service/Intervenant.php
+++ b/module/Application/src/Application/Service/Intervenant.php
@@ -6,6 +6,8 @@ use Application\Entity\Db\Intervenant as IntervenantEntity;
 use Application\Entity\Db\Structure as StructureEntity;
 use Application\Entity\Db\Periode as PeriodeEntity;
 use Application\Entity\Db\Annee as AnneeEntity;
+use Application\Entity\Db\TypeIntervenant;
+use Application\Service\Traits\StatutIntervenantAwareTrait;
 use Common\Exception\RuntimeException;
 use Doctrine\ORM\QueryBuilder;
 use Import\Processus\Import;
@@ -17,6 +19,10 @@ use Import\Processus\Import;
  */
 class Intervenant extends AbstractEntityService
 {
+    use StatutIntervenantAwareTrait;
+
+
+
     /**
      * Recherche par :
      * - id source exact (numéro Harpege ou autre),
@@ -72,7 +78,7 @@ class Intervenant extends AbstractEntityService
      */
     public function getEntityClass()
     {
-        return 'Application\Entity\Db\Intervenant';
+        return IntervenantEntity::class;
     }
 
 
@@ -252,14 +258,16 @@ class Intervenant extends AbstractEntityService
     /**
      * Recherche d'intervenant par le "source code" et l'année.
      *
-     * @param string      $sourceCode Code de l'intervenant dans la source de données (ex: numéro Harpege)
-     * @param AnneeEntity $annee      Année concernée
+     * @param string            $sourceCode Code de l'intervenant dans la source de données (ex: numéro Harpege)
+     * @param AnneeEntity       $annee      Année concernée
+     * @param QueryBuilder|null $queryBuilder
+     * @param string|null       $alias
      *
      * @return QueryBuilder
      */
-    public function finderBySourceCodeAndAnnee($sourceCode, AnneeEntity $annee, QueryBuilder $qb = null)
+    public function finderBySourceCodeAndAnnee($sourceCode, AnneeEntity $annee, QueryBuilder $qb = null, $alias = null)
     {
-        list($qb, $alias) = $this->initQuery($qb);
+        list($qb, $alias) = $this->initQuery($qb, $alias);
         $qb
             ->andWhere("$alias.sourceCode = :code AND $alias.annee = :annee")
             ->setParameter('code', $sourceCode)
@@ -267,4 +275,26 @@ class Intervenant extends AbstractEntityService
 
         return $qb;
     }
+
+
+
+    /**
+     * Filtre par le type d'intervenant
+     *
+     * @param TypeIntervenant   $typeIntervenant Type de l'intervenant
+     * @param QueryBuilder|null $queryBuilder
+     * @param string|null       $alias
+     *
+     * @return QueryBuilder
+     */
+    public function finderByType(TypeIntervenant $typeIntervenant, QueryBuilder $qb = null, $alias = null)
+    {
+        list($qb, $alias) = $this->initQuery($qb, $alias);
+        $sStatut = $this->getServiceStatutIntervenant();
+
+        $this->join($sStatut, $qb, 'statut', false, $alias);
+        $sStatut->finderByTypeIntervenant($typeIntervenant, $qb);
+
+        return $qb;
+    }
 }
diff --git a/module/Application/src/Application/View/Helper/Intervenant/IntervenantViewHelper.php b/module/Application/src/Application/View/Helper/Intervenant/IntervenantViewHelper.php
index 370d2a3166..fd3d8721f1 100644
--- a/module/Application/src/Application/View/Helper/Intervenant/IntervenantViewHelper.php
+++ b/module/Application/src/Application/View/Helper/Intervenant/IntervenantViewHelper.php
@@ -70,7 +70,7 @@ class IntervenantViewHelper extends AbstractHtmlElement
                 "Adresse"          => nl2br($entity->getAdressePrincipale()),
             ],
             'metier'      => [
-                "Type d'intervenant"                => $entity->getType(),
+                "Type d'intervenant"                => $entity->getStatut()->getTypeIntervenant(),
                 "Statut de l'intervenant"           => $entity->getStatut(),
                 "N° {$entity->getSource()}"         => $entity->getSourceCode(),
                 "Affectation principale"            => $entity->getStructure() ?: "(Inconnue)",
diff --git a/module/Application/view/application/intervenant/apercevoir.phtml b/module/Application/view/application/intervenant/apercevoir.phtml
index c3afa24f91..aaedbfafa4 100644
--- a/module/Application/view/application/intervenant/apercevoir.phtml
+++ b/module/Application/view/application/intervenant/apercevoir.phtml
@@ -1,3 +1,3 @@
-<h3><?php echo $intervenant ?> <small><?php echo $intervenant->getType() ?></small></h3>
+<h3><?php echo $intervenant ?> <small><?php echo $intervenant->getStatut()->getTypeIntervenant() ?></small></h3>
 
 <?php echo $this->intervenant($intervenant) ?>
diff --git a/module/Application/view/application/intervenant/voir-heures-comp.phtml b/module/Application/view/application/intervenant/voir-heures-comp.phtml
index adb3affdd4..e48f0166e7 100644
--- a/module/Application/view/application/intervenant/voir-heures-comp.phtml
+++ b/module/Application/view/application/intervenant/voir-heures-comp.phtml
@@ -24,7 +24,7 @@ $this->headTitle()->append($intervenant->getNomUsuel())->append("Heures compl.")
 <style>
     th { background-color: #eee }
 </style>
-<h1 class="page-header"><?php echo $intervenant ?> <small><?php echo $intervenant->getType() ?></small></h1>
+<h1 class="page-header"><?php echo $intervenant ?> <small><?php echo $intervenant->getStatut()->getTypeIntervenant() ?></small></h1>
 <?php echo $this->form()->openTag($form->prepare()); ?>
 <div class="row">
     <div class="col-sm-4"><?php echo $this->formControlGroup($form->get('type-volume-horaire')); ?></div>
diff --git a/module/Application/view/application/intervenant/voir.phtml b/module/Application/view/application/intervenant/voir.phtml
index 8eec90f67f..192fc826b1 100644
--- a/module/Application/view/application/intervenant/voir.phtml
+++ b/module/Application/view/application/intervenant/voir.phtml
@@ -1,6 +1,6 @@
 <?php $this->headTitle()->append($intervenant->getNomUsuel())->append("Fiche") ?>
 
-<h1 class="page-header"><?php echo $intervenant ?> <small><?php echo $intervenant->getType() ?></small></h1>
+<h1 class="page-header"><?php echo $intervenant ?> <small><?php echo $intervenant->getStatut()->getTypeIntervenant() ?></small></h1>
 
 <?php echo $this->intervenant($intervenant) ?>
 
-- 
GitLab