From a29fea1c1402ef17ec41adbfc0bcdd92b76d7254 Mon Sep 17 00:00:00 2001 From: A511701 Date: Wed, 15 Feb 2017 17:00:10 +0100 Subject: [PATCH 1/3] =?UTF-8?q?Correction=20de=20la=20fonction=20d'applica?= =?UTF-8?q?tion=20du=20champs=20de=20comp=C3=A9tences=20des=20commissions?= =?UTF-8?q?=20aux=20=C3=A9tablissements=20concern=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controllers/CommissionController.php | 113 +++++++++++++++--- application/models/DbTable/Commission.php | 55 +++++++++ application/models/DbTable/Etablissement.php | 3 + .../scripts/commission/competences.phtml | 2 +- 4 files changed, 153 insertions(+), 20 deletions(-) diff --git a/application/controllers/CommissionController.php b/application/controllers/CommissionController.php index 2f890cf3..b5fab95c 100755 --- a/application/controllers/CommissionController.php +++ b/application/controllers/CommissionController.php @@ -215,38 +215,112 @@ public function applyReglesAction() try { $this->_helper->viewRenderer->setNoRender(); - // Modèles - $model_etablissement = new Model_DbTable_Etablissement; + // Modèles et services $model_etablissementInformation = new Model_DbTable_EtablissementInformations; - $model_etablissementAdressse = new Model_DbTable_EtablissementAdresse; + $model_commission = new Model_DbTable_Commission; + + if (!isset($_POST['ID_COMMISSION']) && !$_POST['ID_COMMISSION']) { + throw new Exception('Aucun ID de commission fournit dans la requête'); + } + + $id_commission = $_POST['ID_COMMISSION']; + $regles = $model_commission->getRegles($id_commission); + + $search = new Model_DbTable_Search; + $search->setItem("etablissement"); + $search->setCriteria("etablissementinformations.ID_GENRE", array(2, 5)); + $search->setCriteria("etablissementadresse.NUMINSEE_COMMUNE IS NOT NULL"); + $rowset_ets = $search->run(false, null, false)->toArray(); + + $ets_to_update = array(); + + // Pour tout les ets, on récup leur commission par défaut + foreach ($rowset_ets as $key => $row) { + + // On récupère la commission + foreach($regles as $regle) { + + if ($row['ID_GENRE'] == 2 + && in_array($row['NUMINSEE_COMMUNE'], $regle['NUMINSEE_COMMUNE']) + && $row['LOCALSOMMEIL_ETABLISSEMENTINFORMATIONS'] == $regle['LOCALSOMMEIL'] + && $row['ID_TYPE'] == $regle['ID_TYPE'] + && $row['ID_CATEGORIE'] == $regle['ID_CATEGORIE']) + { + $ets_to_update[] = $row['ID_ETABLISSEMENTINFORMATIONS']; + break; + } + else if ($row['ID_GENRE'] == 5 + && in_array($row['NUMINSEE_COMMUNE'], $regle['NUMINSEE_COMMUNE']) + && $row['ID_CLASSE'] == $regle['ID_CLASSE']) + { + $ets_to_update[] = $row['ID_ETABLISSEMENTINFORMATIONS']; + break; + } + } + + // save memory + unset($rowset_ets[$key]); + } + + if ($ets_to_update) { + $model_etablissementInformation->update(array('ID_COMMISSION' => $id_commission), 'ID_ETABLISSEMENTINFORMATIONS IN ('.implode(',', $ets_to_update).')'); + + // removes cache if any changes + Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cache')->clean(Zend_Cache::CLEANING_MODE_ALL); + } + } catch (Exception $e) { + $this->_helper->flashMessenger(array( + 'context' => 'error', + 'title' => 'Erreur inattendue', + 'message' => $e->getMessage() + )); + } + } + + public function applyReglesAction2() + { + try { + $this->_helper->viewRenderer->setNoRender(); + // Modèles et services + $model_etablissement = new Model_DbTable_Etablissement; + $model_etablissementInformation = new Model_DbTable_EtablissementInformations; + $model_etablissementAdresse = new Model_DbTable_EtablissementAdresse; + $model_commission = new Model_DbTable_Commission; + // On récup tout les établissements - $rowset_ets = $model_etablissement->fetchAll(); - + $rowset_ets = $model_etablissement->getAllIdEtablissement(); + // Pour tout les ets, on récup leur commission par défaut foreach ($rowset_ets as $row) { // Adresses - $rowset_adresse = $model_etablissementAdressse->get($row["ID_ETABLISSEMENT"]); + $rowset_adresse = $model_etablissementAdresse->get($row["ID_ETABLISSEMENT"]); // Si il y a une adresse - if (count($rowset_adresse) > 0) { + if (count($rowset_adresse) == 0) { + continue; + } - // On récupère les infos - $info = $model_etablissement->getInformations($row["ID_ETABLISSEMENT"])->toArray(); + // On récupère les infos + $info = $model_etablissement->getInformations($row["ID_ETABLISSEMENT"])->toArray(); + + if (!in_array($info['ID_GENRE'], array(2, 3, 5))) { + continue; + } - // On merge l'adresse - $info["NUMINSEE_COMMUNE"][0] = $rowset_adresse[0]["NUMINSEE_COMMUNE"]; + // On merge l'adresse + $info["NUMINSEE_COMMUNE"] = $rowset_adresse[0]["NUMINSEE_COMMUNE"]; - // On récupère la commission - $commission = $model_etablissement->getDefaultCommission($info); + // On récupère la commission - // Si elle n'est pas nulle on l'applique - if ($commission != null) { - $row_ets = $model_etablissementInformation->find($info["ID_ETABLISSEMENTINFORMATIONS"])->current(); - $row_ets->ID_COMMISSION = $commission[0]["ID_COMMISSION"]; - $row_ets->save(); - } + $commission = $model_commission->getCommission($info["NUMINSEE_COMMUNE"], $info['ID_CATEGORIE'], $info['ID_TYPE'], $info['LOCALSOMMEIL_ETABLISSEMENTINFORMATIONS'] ? 1 : 0); + + // Si elle n'est pas nulle on l'applique + if ($commission !== null) { + $row_ets = $model_etablissementInformation->find($info["ID_ETABLISSEMENTINFORMATIONS"])->current(); + $row_ets->ID_COMMISSION = $commission[0]["ID_COMMISSION"]; + $row_ets->save(); } } } catch (Exception $e) { @@ -255,6 +329,7 @@ public function applyReglesAction() 'title' => 'Erreur inattendue', 'message' => $e->getMessage() )); + var_dump($e); } } diff --git a/application/models/DbTable/Commission.php b/application/models/DbTable/Commission.php index d09bb7ed..4cb7554f 100755 --- a/application/models/DbTable/Commission.php +++ b/application/models/DbTable/Commission.php @@ -200,5 +200,60 @@ public function getCommissionIGH( $commune, $classe, $localsommeil) } } + + public function getRegles($id_commission) + { + + $model_groupementCommune = new Model_DbTable_GroupementCommune; + + $regles = array(); + + $select = $this->select() + ->setIntegrityCheck(false) + ->from("commissionregle", array("ID_GROUPEMENT", "NUMINSEE_COMMUNE") ) + ->joinLeft("commission", "commission.ID_COMMISSION = commissionregle.ID_COMMISSION", null) + ->joinLeft("commissionregletype", "commissionregle.ID_REGLE = commissionregletype.ID_REGLE", array("ID_TYPE")) + ->joinLeft("commissionreglecategorie", "commissionregle.ID_REGLE = commissionreglecategorie.ID_REGLE", array("ID_CATEGORIE")) + ->joinLeft("commissionregleclasse", "commissionregle.ID_REGLE = commissionregleclasse.ID_REGLE", array("ID_CLASSE")) + ->joinLeft("commissionreglelocalsommeil", "commissionregle.ID_REGLE = commissionreglelocalsommeil.ID_REGLE", array("LOCALSOMMEIL")) + ->joinLeft("adressecommune", "adressecommune.NUMINSEE_COMMUNE = commissionregle.NUMINSEE_COMMUNE", null) + ->where("commission.ID_COMMISSION = ?", $id_commission); + + $results = $this->fetchAll($select); + + if ($results == null) { + return $regles; + } + + $groupement_cache = array(); + foreach($results as $result) { + + $communes = array(); + if ($result->NUMINSEE_COMMUNE != null) { + $communes = array($result->NUMINSEE_COMMUNE); + } elseif ($result->ID_GROUPEMENT != null) { + + if (!isset($groupement_cache[$result->ID_GROUPEMENT])) { + $groupement_cache[$result->ID_GROUPEMENT] = array(); + $row_groupement = $model_groupementCommune->fetchAll("ID_GROUPEMENT = '" . $result->ID_GROUPEMENT . "'"); + foreach($row_groupement as $row) { + $groupement_cache[$result->ID_GROUPEMENT][] = $row['NUMINSEE_COMMUNE']; + } + } + $communes = $groupement_cache[$result->ID_GROUPEMENT]; + } + + $regles[] = array( + 'NUMINSEE_COMMUNE' => $communes, + 'LOCALSOMMEIL' => $result->LOCALSOMMEIL, + 'ID_TYPE' => $result->ID_TYPE , + 'ID_CLASSE' => $result->ID_CLASSE, + 'ID_CATEGORIE' => $result->ID_CATEGORIE, + ); + + } + + return $regles; + } } diff --git a/application/models/DbTable/Etablissement.php b/application/models/DbTable/Etablissement.php index 55f1ce1a..5c4f5c5f 100755 --- a/application/models/DbTable/Etablissement.php +++ b/application/models/DbTable/Etablissement.php @@ -345,6 +345,9 @@ public function getDossierDonnantAvis($id_etablissement) return $this->fetchRow($select); } + public function getAllIdEtablissement() { + return $this->fetchAll($this->select()->from('etablissement', array("ID_ETABLISSEMENT"))); + } diff --git a/application/views/scripts/commission/competences.phtml b/application/views/scripts/commission/competences.phtml index 0a7c1aaf..aee09507 100755 --- a/application/views/scripts/commission/competences.phtml +++ b/application/views/scripts/commission/competences.phtml @@ -8,7 +8,7 @@

Ajouter une règle

- + " /> From b62960c6162cd97591b6d75b7a05aec34911ed7f Mon Sep 17 00:00:00 2001 From: A511701 Date: Wed, 15 Feb 2017 17:30:22 +0100 Subject: [PATCH 2/3] =?UTF-8?q?Correction=20d'un=20controlleur=20commit?= =?UTF-8?q?=C3=A9=20en=20double?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controllers/CommissionController.php | 56 ------------------- 1 file changed, 56 deletions(-) diff --git a/application/controllers/CommissionController.php b/application/controllers/CommissionController.php index b5fab95c..251f5967 100755 --- a/application/controllers/CommissionController.php +++ b/application/controllers/CommissionController.php @@ -276,62 +276,6 @@ public function applyReglesAction() )); } } - - public function applyReglesAction2() - { - try { - $this->_helper->viewRenderer->setNoRender(); - - // Modèles et services - $model_etablissement = new Model_DbTable_Etablissement; - $model_etablissementInformation = new Model_DbTable_EtablissementInformations; - $model_etablissementAdresse = new Model_DbTable_EtablissementAdresse; - $model_commission = new Model_DbTable_Commission; - - // On récup tout les établissements - $rowset_ets = $model_etablissement->getAllIdEtablissement(); - - // Pour tout les ets, on récup leur commission par défaut - foreach ($rowset_ets as $row) { - - // Adresses - $rowset_adresse = $model_etablissementAdresse->get($row["ID_ETABLISSEMENT"]); - - // Si il y a une adresse - if (count($rowset_adresse) == 0) { - continue; - } - - // On récupère les infos - $info = $model_etablissement->getInformations($row["ID_ETABLISSEMENT"])->toArray(); - - if (!in_array($info['ID_GENRE'], array(2, 3, 5))) { - continue; - } - - // On merge l'adresse - $info["NUMINSEE_COMMUNE"] = $rowset_adresse[0]["NUMINSEE_COMMUNE"]; - - // On récupère la commission - - $commission = $model_commission->getCommission($info["NUMINSEE_COMMUNE"], $info['ID_CATEGORIE'], $info['ID_TYPE'], $info['LOCALSOMMEIL_ETABLISSEMENTINFORMATIONS'] ? 1 : 0); - - // Si elle n'est pas nulle on l'applique - if ($commission !== null) { - $row_ets = $model_etablissementInformation->find($info["ID_ETABLISSEMENTINFORMATIONS"])->current(); - $row_ets->ID_COMMISSION = $commission[0]["ID_COMMISSION"]; - $row_ets->save(); - } - } - } catch (Exception $e) { - $this->_helper->flashMessenger(array( - 'context' => 'error', - 'title' => 'Erreur inattendue', - 'message' => $e->getMessage() - )); - var_dump($e); - } - } // Membres de la commission public function membresAction() From e8abf8f3d682c396a0f3c404425902d75f7ecac7 Mon Sep 17 00:00:00 2001 From: A511701 Date: Wed, 15 Feb 2017 17:31:56 +0100 Subject: [PATCH 3/3] =?UTF-8?q?Retrait=20d'une=20fonction=20inutile=20dans?= =?UTF-8?q?=20un=20mod=C3=A8le?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/models/DbTable/Etablissement.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/application/models/DbTable/Etablissement.php b/application/models/DbTable/Etablissement.php index 5c4f5c5f..b9508eee 100755 --- a/application/models/DbTable/Etablissement.php +++ b/application/models/DbTable/Etablissement.php @@ -344,12 +344,4 @@ public function getDossierDonnantAvis($id_etablissement) return $this->fetchRow($select); } - - public function getAllIdEtablissement() { - return $this->fetchAll($this->select()->from('etablissement', array("ID_ETABLISSEMENT"))); - } - - - - }