/[openfoncier]/trunk/services/metier/maintenancemanager.php
ViewVC logotype

Diff of /trunk/services/metier/maintenancemanager.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 759 by mlimic, Tue Nov 20 09:09:35 2012 UTC revision 1159 by fmichon, Mon Jan 7 17:15:57 2013 UTC
# Line 30  class MaintenanceManager extends MetierM Line 30  class MaintenanceManager extends MetierM
30      );      );
31    
32      /**      /**
      * Constructeur  
      */  
     public function __construct() {  
   
         // Appel du constructeur parent  
         parent::__construct();  
   
     }  
   
     /**  
      * Destructeur  
      */  
     public function __destruct() {  
   
         // Appel du destructeur parent  
         parent::__destruct();  
   
     }  
   
     /**  
33       * Cette méthode permet de gérer l'appel aux différentes méthodes       * Cette méthode permet de gérer l'appel aux différentes méthodes
34       * correspondantes au module appelé.       * correspondantes au module appelé.
35       *       *
# Line 81  class MaintenanceManager extends MetierM Line 61  class MaintenanceManager extends MetierM
61       * @return string Le résultat du traitement       * @return string Le résultat du traitement
62       *       *
63       * @todo XXX Faire une getsion des erreurs dans om_application pour       * @todo XXX Faire une getsion des erreurs dans om_application pour
64       * permettre d'avoir un retour sur le déroulement de la synchronisation       * permettre d'avoir un retour sur le nombre d'utilisateurs synchronisés
65       */           */    
66      public function synchronizeUsers($data) {      public function synchronizeUsers($data) {
67    
68          // La gestion des erreurs ne permet pas de savoir si tout s'est déroulé          // Initialisation de la synchronisation des utilisateurs LDAP
         // correctement ou non donc on renvoi un retour erreur en attendant  
         $this->setMessage("Erreur interne");  
         return $this->KO;  
   
         // Appel aux méthodes de synchronisation des utilisateurs via l'annuaire  
69          $results = $this->f->initSynchronization();          $results = $this->f->initSynchronization();
70          $this->f->synchronizeUsers($results);  
71            // Si l'initialisation ne se déroule pas correctement alors on retourne
72            // un résultat d'erreur
73            if (is_null($results) || $results == false) {
74                $this->setMessage("Erreur interne");
75                return $this->KO;
76            }
77    
78            // Application du traitement de synchronisation
79            $ret = $this->f->synchronizeUsers($results);
80    
81            // Si l'a synchronisation ne se déroule pas correctement alors on
82            // retourne un résultat d'erreur
83            if ($ret == false) {
84                $this->setMessage("Erreur interne");
85                return $this->KO;
86            }
87    
88            // Si l'a synchronisation ne se déroule correctement alors on
89            // retourne un résultat OK
90            $this->setMessage("Synchronisation terminée.");
91          return $this->OK;          return $this->OK;
92    
93      }      }
# Line 105  class MaintenanceManager extends MetierM Line 100  class MaintenanceManager extends MetierM
100       * @param mixed $data Les données reçues dans la requête       * @param mixed $data Les données reçues dans la requête
101       * @return string Le résultat du traitement       * @return string Le résultat du traitement
102       *       *
103       * @todo XXX Traduire et commenter la méthode et voir si il est possible       * @todo Vérifier si il est possible de déplacer la méthode dans
104       * de la déplacer dans l'application       * l'application
105       */       */
106      public function updateConsultationsStates($data) {      public function updateConsultationsStates($data) {
107    
108            // Nom de la table
109          $table_name = 'consultation';          $table_name = 'consultation';
         $sql = "SELECT consultation FROM $table_name WHERE ".  
             " date_limite < DATE '". date('Y-m-d', time()) .  
             "' AND date_retour IS NULL AND avis_consultation IS NULL";  
110    
111            // Récupération de la référence vers un avis_consultation correspondant
112            // au libellé 'Tacite'
113            $sql = "SELECT avis_consultation FROM ".DB_PREFIXE."avis_consultation ";
114            $sql .= " WHERE libelle = 'Tacite' ";
115            $sql .= " AND ((avis_consultation.om_validite_debut IS NULL ";
116            $sql .= " AND (avis_consultation.om_validite_fin IS NULL ";
117            $sql .= " OR avis_consultation.om_validite_fin > CURRENT_DATE)) ";
118            $sql .= " OR (avis_consultation.om_validite_debut <= CURRENT_DATE ";
119            $sql .= " AND (avis_consultation.om_validite_fin IS NULL ";
120            $sql .= " OR avis_consultation.om_validite_fin > CURRENT_DATE))) ";
121          $res = $this->db->query($sql);          $res = $this->db->query($sql);
122          // In case of error          // Logger
123          if ($this->verifieResultatBD($res, 'Erreur lors de mise à jour')) {          $this->addToLog("updateConsultationsStates(): db->query(\"".$sql."\"", VERBOSE_MODE);
124            // Si une erreur de base de données se produit sur cette requête
125            // alors on retourne un résultat d'erreur
126            if ($this->f->isDatabaseError($res, true)) {
127                $this->setMessage("Erreur de base de données.");
128              return $this->KO;              return $this->KO;
129          }          }
130            
131          $ids = array();          // Récupération de la référence vers un avis_consultation correspondant
132          while ($row =& $res->fetchRow(DB_FETCHMODE_ORDERED)) {          // au libellé 'Tacite'
133              $ids[] = $row[0];          $tacite = NULL;
134            while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
135                $tacite = $row["avis_consultation"];
136          }          }
137          $res->free();          $res->free();
138    
139          // if there are no consultations that need to have          // Si la décision n'existe pas dans la base de données alors on ajoute
140          // their state set to Favorable, return OK          // un message d'informations et on retourne un résultat d'erreur
141          if (count($ids) == 0) {          if (is_null($tacite)) {
142              $this->setMessage("Aucune mise à jour");              $this->setMessage("L'avis n'existe pas.");
143              return $this->NA;              return $this->KO;
144          }          }
145            
146          // get the idenfier of the evaluation: 'Favorable'          // Récupération de la liste des consultations correspondantes aux
147          $sql = "SELECT avis_consultation FROM avis_consultation WHERE ".          // critères du traitement
148              "libelle = 'Tacite'";          $sql = "SELECT consultation FROM ".DB_PREFIXE."$table_name ";
149            $sql .= " WHERE date_limite < CURRENT_DATE" ;
150            $sql .= " AND date_retour IS NULL AND avis_consultation IS NULL ";
151          $res = $this->db->query($sql);          $res = $this->db->query($sql);
152          if ($this->verifieResultatBD($res, 'Erreur lors de mise à jour')) {          // Logger
153            $this->addToLog("updateConsultationsStates(): db->query(\"".$sql."\"", VERBOSE_MODE);
154            // Si une erreur de base de données se produit sur cette requête
155            // alors on retourne un résultat d'erreur
156            if ($this->f->isDatabaseError($res, true)) {
157                $this->setMessage("Erreur de base de données.");
158              return $this->KO;              return $this->KO;
159          }          }
160    
161          $favorable = -1;          // Récupération de la liste des consultations correspondantes aux
162          while ($row =& $res->fetchRow(DB_FETCHMODE_ORDERED)) {          // critères du traitement
163              $favorable = $row[0];          $ids = array();
164            while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
165                $ids[] = $row["consultation"];
166          }          }
167          $res->free();          $res->free();
168    
169          // if we did not find the evaluation 'Favorable', return error          // Si aucune consultation n'est concernée par le traitement alors on
170          if ($favorable < 0) {          // ajoute un message d'informations et on retourne un résultat 'OK'
171              $this->setMessage("'Favorable' n'est pas présent ".          if (count($ids) == 0) {
172                           "dans la columne : avis_consultation.libelle");              $this->setMessage("Aucune mise a jour.");
173              return $this->KO;              return $this->OK;
174          }          }
175    
176          // update the consultation table to set the 'Favorable' evaluation for          // Exécution du traitement
177          // the pertinent consultations          // On met à jour toutes les consultation avec le retour d'avis
178          $fields = array('avis_consultation' => $favorable);          $fields = array(
179          $res = $this->db->autoExecute($table_name, $fields, DB_AUTOQUERY_UPDATE,              'avis_consultation' => $tacite,
180                                  'consultation IN ('.implode(',', $ids).')');          );
181          if ($this->verifieResultatBD($res, 'Erreur lors de mise à jour')) {          $res = $this->db->autoExecute(DB_PREFIXE.$table_name,
182                                          $fields,
183                                          DB_AUTOQUERY_UPDATE,
184                                          'consultation IN ('.implode(',', $ids).')');
185            // Logger
186            $this->addToLog("updateConsultationsStates(): db->autoExecute(\"".DB_PREFIXE.$table_name."\", ".print_r($fields, true).", DB_AUTOQUERY_UPDATE, \"consultation IN (\"".implode(',', $ids)."\")", VERBOSE_MODE);
187            // Si une erreur de base de données se produit sur cette requête
188            // alors on retourne un résultat d'erreur
189            if ($this->f->isDatabaseError($res, true)) {
190                $this->setMessage("Erreur de base de données.");
191              return $this->KO;              return $this->KO;
192          }          }
193    
194          // $res->getDebugInfo(), $res->getMessage()          // Tout s'est déroulé correctement alors on ajoute un message
195          $this->setMessage('Il y a eu '.count($ids).' demandes de consultations dont '.          // d'informations et on retourne le résultat 'OK'
196                            'l\'avis été passé à Tacite');          $this->setMessage(count($ids)." consultations mise(s) à jour.");
197          return $this->OK;          return $this->OK;
198    
199      }      }

Legend:
Removed from v.759  
changed lines
  Added in v.1159

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26