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

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

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

revision 767 by fmichon, Tue Nov 20 11:50:00 2012 UTC revision 1377 by nhaye, Tue Mar 12 17:17:07 2013 UTC
# Line 16  include_once('../obj/dossier_message.cla Line 16  include_once('../obj/dossier_message.cla
16  /**  /**
17   * Cette classe hérite de la classe MetierManager. Elle permet d'effectuer des   * Cette classe hérite de la classe MetierManager. Elle permet d'effectuer des
18   * traitements pour la ressource 'messages'.   * traitements pour la ressource 'messages'.
  *  
  * @todo XXX Traduire et commenter toutes les méthodes  
19   */   */
20  class MessagesManager extends MetierManager {  class MessagesManager extends MetierManager {
21        
22      /**#@+      /**#@+
23       * @access static       * @access static
24       * @var string       * @var string
# Line 29  class MessagesManager extends MetierMana Line 27  class MessagesManager extends MetierMana
27      var $TYPE_COMPLETUDE_SECU = 'Mise à jour de complétude ERP SECU';      var $TYPE_COMPLETUDE_SECU = 'Mise à jour de complétude ERP SECU';
28      var $TYPE_QUALIFICATION_ERP = 'Mise à jour de qualification';      var $TYPE_QUALIFICATION_ERP = 'Mise à jour de qualification';
29      var $TYPE_DOSSIER_ENJEUX = 'Dossier à enjeux ERP';      var $TYPE_DOSSIER_ENJEUX = 'Dossier à enjeux ERP';
30        var $TYPE_ERP_QUALIFIE = 'ERP Qualifié';
31      /**#@-*/      /**#@-*/
       
32    
33      /**      /**
34       * Constructeur       * Cette méthode permet de gérer le fonctionnement de base de toutes les
35       *       * méthodes métiers de la classe MessagesManager
36       * Fait appel au constructeur de son parent.       *
37       * @todo XXX Ajouter la description des attributs       * @param mixed $data Les données reçues en format d'un tableau associative
      */  
     public function __construct() {  
   
         // Appel du constructeur parent  
         parent::__construct();  
   
     }  
   
       
     /**  
      * Destructeur  
      *  
      * Fait appel au destructeur de son parent.  
      */  
     public function __destruct() {  
   
         // Appel du destructeur parent  
         parent::__destruct();  
   
     }  
   
       
       
     /**  
      * Utilise par plusieurs fonctions pour faire le traitement generique  
      * d'une demande arrive par REST  
      * @param mixed $data Le tableau contenant des donnees arrivees par le  
      * service REST.  
38       * @param string $type Le type du message       * @param string $type Le type du message
39       * @param mixed $contenu_val_verif Le tableau associatif. Les clefs sont       * @param mixed $contenu_val_verif Un tableau associatif qui permet de
40       * des clefs qui peuvent etre trouvees dans le tableau $data. Les valeurs       * transmettre les éléments de vérification de la validité des valeurs
41       * sont des valeurs qui peuvent etre trouvees comme les valeurs dans le       * du contenu du message (champ contenu du message)
      * tableau $data.  
      * @return En cas de success on retourne 'OK'. Si les donnees sont  
      * erronees, on retourne 'BAD_DATA'. En cas d'echec on retourne 'KO'.  
      *  
42       */       */
43      public function generique(&$data, $type, $contenu_val_verif) {      private function generic(&$data, $type, $contenu_val_verif) {
44          // check that the type of the message is good  
45            // Vérification de la validité du type de message
46            // Si le type dans le message ne correspond pas au type de la méthode
47            // appelée alors on ajoute un message d'informations et on retourne un
48            // résultat d'erreur
49          if ($data['type'] != $type) {          if ($data['type'] != $type) {
50              $this->setMessage('Le type de message n\'est pas correct.');              $this->setMessage("Le type de message n'est pas correct.");
51              return $this->BAD_DATA;              return $this->BAD_DATA;
52          }          }
53            
54          // verification que le dossier existe dans la BD          // Vérification de l'existence du dossier dans la base de données
55          $sql = "SELECT dossier FROM ".DB_PREFIXE."dossier";          $sql = "SELECT dossier FROM ".DB_PREFIXE."dossier";
56            $sql .= " WHERE dossier='".$data['dossier_instruction']."'";
57          $res = $this->db->query($sql);          $res = $this->db->query($sql);
58          // Logger          // Logger
59          $this->addToLog("generique(): db->query(\"".$sql."\"", VERBOSE_MODE);          $this->addToLog("generic(): db->query(\"".$sql."\"", VERBOSE_MODE);
60          //          // Si une erreur de base de données se produit sur cette requête
61            // alors on retourne un résultat d'erreur
62          if ($this->f->isDatabaseError($res, true)) {          if ($this->f->isDatabaseError($res, true)) {
63              $this->setMessage("Erreur de base de données.");              $this->setMessage("Erreur de base de données.");
64              return $this->KO;              return $this->KO;
65          }          }
66    
67            // Vérification de l'existence du dossier dans la base de données
68          $this->dossiers = array();          $this->dossiers = array();
69          while ($row =& $res->fetchRow(DB_FETCHMODE_ORDERED)) {          while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
70              $this->dossiers[$row[0]] = $row[1];              $this->dossiers[] = $row['dossier'];
71          }          }
72          $res->free();          $res->free();
73            
74          // verification que la decision recu dans le message est une des          // Si le nombre de dossiers correspondants au numéro de dossier passé
75          // decisions acceptables (c'est a dire que elle existe dans la BD)          // en paramètre n'est pas 1 alors on ajoute un message d'informations
76          if (!in_array($data['dossier_instruction'], array_keys($this->dossiers))) {          // et on retourne un résultat d'erreur
77              $this->setMessage("Le dossier spécifié dans le message n'existe pas");          if (count($this->dossiers) != 1) {
78              return $this->KO;              $this->setMessage("Le dossier spécifié dans le message n'existe".
79                                  " pas.");
80                return $this->BAD_DATA;
81          }          }
82            
83          // creation d'objet qui sera utilise pour sauvegarder les          // On instancie la message qui va être créé par la requête
         // donnees dans la BD  
84          $this->metier_instance = new dossier_message("]", $this->db, 0);          $this->metier_instance = new dossier_message("]", $this->db, 0);
85                    
86          // verifier que la date est correcte          // Vérification de la validité de la date
87            // Si le format de la date transmise dans la requête n'est pas correct
88            // alors on ajoute un message d'informations et on retourne un résultat
89            // d'erreur
90            // Important : $date_db est passé par référence et est modifié dans la
91            // méthode timestampValide()
92          $date_db = null;          $date_db = null;
93          if (!$this->timestampValide($data['date'], $date_db, true)) {          if (!$this->timestampValide($data['date'], $date_db, true)) {
94              $this->setMessage('Le date n\'est pas correct.');              $this->setMessage("La date n'est pas correcte.");
95              return $this->BAD_DATA;              return $this->BAD_DATA;
96          }          }
97    
98          // verifie que le contenu contient tous les elements et prepare l'insertion          // Vérification de la validité du contenu en fonction du paramètre
99          // du contenu dans la BD          // $contenu_val_verif et formatage du contenu
100          $contenu = '';          $contenu = '';
101          $valid_contenu = true;          $valid_contenu = true;
102            // On boucle sur chaque champs à vérifier
103          foreach ($contenu_val_verif as $contenu_str => $possible_vals) {          foreach ($contenu_val_verif as $contenu_str => $possible_vals) {
104                // On récupère la valeur
105              $value = $data['contenu'][$contenu_str];              $value = $data['contenu'][$contenu_str];
106                // Si la valeur est vide alors on sort de la boucle
107              if (empty($value)) {              if (empty($value)) {
108                  $valid_contenu = false;                  $valid_contenu = false;
109                  break;                  break;
110              }              }
111              if ($possible_vals && !in_array(strtolower($value), $possible_vals)) {              // Si la valeur n'est pas dans les valeurs possible et que la valeur
112                // possible n'est pas nulle alors on sort de la boucle
113                if ($possible_vals
114                    && !in_array(strtolower($value), $possible_vals)) {
115                  $valid_contenu = false;                  $valid_contenu = false;
116                  break;                  break;
117              }              }
118                // Formatage du contenu
119              $contenu .= $contenu_str.' : '.$value.'              $contenu .= $contenu_str.' : '.$value.'
120  '; // il faut que cette ligne soit comme ca pour que le \n soit ajoute a la fin the $contenu  '; // il faut que cette ligne soit comme ça pour que le \n soit ajouté à la fin
121          }          }
122    
123            // Si un des éléments du contenu n'est pas valide alors on ajoute un
124            // message d'informations et on retourne un résultat d'erreur
125          if ($valid_contenu === false) {          if ($valid_contenu === false) {
126              $this->setMessage('Le contenu du message n\'est pas correct.');              $this->setMessage("Le contenu du message n'est pas correct.");
127              return $this->BAD_DATA;              return $this->BAD_DATA;
128          }          }
129            
130          // ecrasement de contenu avec le contenu formate et duplication des          // Affectation de l'identifiant du message dans la variable
131          // quelques valeurs parce que les valeurs dans setvalF sont cherches          // $data['message'] pour être transmis dans la requête dans le champ
132          // par les clefs predefinies          // message de la table
133            $data['dossier_message'] = 0;
134            // Affectation du contenu reformaté dans la variable $data['contenu']
135            // pour être transmis dans la requête dans le champ contenu de la table
136          $data['contenu'] = $contenu;          $data['contenu'] = $contenu;
137            // Affectation du numéro de dossier d'instruction dans la variable
138            // $data['dossier'] pour être transmis dans la requête dans le champ
139            // dossier de la table
140          $data['dossier'] = $data['dossier_instruction'];          $data['dossier'] = $data['dossier_instruction'];
141          $data['date_emission'] = $date_db; // le timestamp en format accepte par la BD          // Affectation du numéro de la date dans la variable
142            // $data['date_emission'] pour être transmis dans la requête dans le
143            // champ date_emission de la table dans le format correct
144            $data['date_emission'] = $date_db;
145            // Affectation de la valeur de la variable $data['lu'] pour être
146            // transmis dans la requête dans le champ lu de la table
147            $data['lu'] = false;
148    
149            // On retourne un résultat OK
150          return $this->OK;          return $this->OK;
151    
152      }      }
153    
       
154      /**      /**
155       * Appelle quand ERP voudrait indiquer que le dossier d'instruction est complet       * Ce message permet de recevoir les informations de complétude dossier
156       * a propos des Accessibilite pour des Hendicapes.       * PC qui concerne un ERP par le service ERP Accessibilité
157       *       *
158       * @param mixed $data Les donnees recus par une demande arrive par REST.       * @param mixed $data Les données reçues en format d'un tableau associative
      * @return string En cas de success on retourne 'OK' sur success, et on retourne  
      * 'KO' autrement.  
159       */       */
160      public function completude_dossier_ACC($data) {      public function completudeDossierACC($data) {
161            
162            // Logger
163            $this->addToLog("completudeDossierACC(): start", EXTRA_VERBOSE_MODE);
164    
165            // Définition des critères de vérification de la validité du contenu
166            // du message
167          $key_val_pairs = array('Complétude ERP ACC' => array('oui', 'non'),          $key_val_pairs = array('Complétude ERP ACC' => array('oui', 'non'),
168                                 'Motivation Complétude ERP ACC' => null);                                 'Motivation Complétude ERP ACC' => null);
169          $ret = $this->generique($data,  
170            // Appel de la méthode de traitement générique qui permet d'effectuer
171            // les vérifications de validité des données et de préparer la
172            // requête d'insertion par la modification de $data
173            $ret = $this->generic($data,
174                                $this->TYPE_COMPLETUDE_ACC,                                $this->TYPE_COMPLETUDE_ACC,
175                                $key_val_pairs);                                $key_val_pairs);
176            
177            // Si une erreur a été rencontrée alors on retourne cette erreur
178          if ($ret != $this->OK) {          if ($ret != $this->OK) {
179              return $ret;              return $ret;
180          }          }
181    
182            // Si aucune erreur n'a été rencontrée alors on appelle la méthode
183            // ajouter pour insérer le message et on retourne le résultat de
184            // la méthode ajouter
185          return parent::ajouter($data,          return parent::ajouter($data,
186                  "Mise à jour de complétude ERP ACC à été faite avec success",                  "Insertion du message '".$this->TYPE_COMPLETUDE_ACC."' OK.",
187                  "Echec dans la mise à jour de complétude ERP ACC");                  "Echec du message '".$this->TYPE_COMPLETUDE_ACC."'");
188    
189      }      }
190        
       
191      /**      /**
192       * Appelle quand ERP voudrait indiquer que le dossier d'instruction est complet       * Ce message permet de recevoir les informations de complétude dossier
193       * a propos des securite.       * PC qui concerne un ERP par le service ERP Sécurité
194       *       *
195       * @param mixed $data Les donnees recus par une demande arrive par REST.       * @param mixed $data Les données reçues en format d'un tableau associative
      * @return string En cas de success on retourne 'OK' sur success, et on retourne  
      * 'KO' autrement.  
196       */           */    
197      public function completude_dossier_SECU($data) {      public function completudeDossierSECU($data) {
198    
199            // Logger
200            $this->addToLog("completudeDossierSECU(): start", EXTRA_VERBOSE_MODE);
201    
202            // Définition des critères de vérification de la validité du contenu
203            // du message
204          $key_val_pairs = array('Complétude ERP SECU' => array('oui', 'non'),          $key_val_pairs = array('Complétude ERP SECU' => array('oui', 'non'),
205                                 'Motivation Complétude ERP SECU' => null);                                 'Motivation Complétude ERP SECU' => null);
206          $ret = $this->generique($data,  
207            // Appel de la méthode de traitement générique qui permet d'effectuer
208            // les vérifications de validité des données et de préparer la
209            // requête d'insertion par la modification de $data
210            $ret = $this->generic($data,
211                                $this->TYPE_COMPLETUDE_SECU,                                $this->TYPE_COMPLETUDE_SECU,
212                                $key_val_pairs);                                $key_val_pairs);
213            
214            // Si une erreur a été rencontrée alors on retourne cette erreur
215          if ($ret != $this->OK) {          if ($ret != $this->OK) {
216              return $ret;              return $ret;
217          }                  }
218    
219            // Si aucune erreur n'a été rencontrée alors on appelle la méthode
220            // ajouter pour insérer le message et on retourne le résultat de
221            // la méthode ajouter
222          return parent::ajouter($data,          return parent::ajouter($data,
223                  "Mise à jour de complétude ERP SECU à été faite avec success",                  "Insertion du message '".$this->TYPE_COMPLETUDE_SECU."' OK.",
224                  "Echec dans la mise à jour de complétude ERP SECU");                  "Echec du message '".$this->TYPE_COMPLETUDE_SECU."'");
225    
226      }      }
227        
       
228      /**      /**
229       * Appelle quand ERP voudrait qualifier un dossier d'instruction.       * Ce message permet de recevoir les informations de qualification
230         * d'un dossier PC qui concerne un ERP par le service ERP
231       *       *
232       * @param mixed $data Les donnees recus par une demande arrive par REST.       * @param mixed $data Les données reçues en format d'un tableau associative
      * @return string En cas de success on retourne 'OK' sur success, et on retourne  
      * 'KO' autrement.  
233       */               */        
234      public function qualification_dossier($data) {      public function qualificationDossier($data) {
235    
236            // Logger
237            $this->addToLog("qualificationDossier(): start", EXTRA_VERBOSE_MODE);
238    
239            // Définition des critères de vérification de la validité du contenu
240            // du message
241          $key_val_pairs = array('Confirmation ERP' => array('oui', 'non'),          $key_val_pairs = array('Confirmation ERP' => array('oui', 'non'),
242                                 'Type de dossier ERP' => null,                                 'Type de dossier ERP' => null,
243                                 'Catégorie de dossier ERP' => null);                                 'Catégorie de dossier ERP' => null);
244          $ret = $this->generique($data,  
245            // Appel de la méthode de traitement générique qui permet d'effectuer
246            // les vérifications de validité des données et de préparer la
247            // requête d'insertion par la modification de $data
248            $ret = $this->generic($data,
249                                $this->TYPE_QUALIFICATION_ERP,                                $this->TYPE_QUALIFICATION_ERP,
250                                $key_val_pairs);                                $key_val_pairs);
251            
252            // Si une erreur a été rencontrée alors on retourne cette erreur
253          if ($ret != $this->OK) {          if ($ret != $this->OK) {
254              return $ret;              return $ret;
255          }                  }
256    
257            // Si aucune erreur n'a été rencontrée alors on appelle la méthode
258            // ajouter pour insérer le message et on retourne le résultat de
259            // la méthode ajouter
260          return parent::ajouter($data,          return parent::ajouter($data,
261                  "Mise à jour de la qualification ERP à été faite avec success",                  "Insertion du message '".$this->TYPE_QUALIFICATION_ERP."' OK.",
262                  "Echec dans la mise à jour de la qualification ERP");                  "Echec du message '".$this->TYPE_QUALIFICATION_ERP."'");
263    
264      }      }
       
265    
266      /**      /**
267       * Appelle quand ERP voudrait qualifier un dossier d'instruction comme       * Ce message permet de recevoir les informations d'enjeu ERP d'un dossier
268       * un dossier a enjeux.       * en ce qui concerne le service ERP
269       *       *
270       * @param mixed $data Les donnees recus par une demande arrive par REST.       * @param mixed $data Les données reçues en format d'un tableau associative
      * @return string En cas de success on retourne 'OK' sur success, et on retourne  
      * 'KO' autrement.  
271       */           */    
272      public function dossier_enjeux($data) {      public function dossierEnjeux($data) {
273    
274            // Logger
275            $this->addToLog("dossierEnjeux(): start", EXTRA_VERBOSE_MODE);
276    
277            // Définition des critères de vérification de la validité du contenu
278            // du message
279          $key_val_pairs = array('Dossier à enjeux ERP' => array('oui', 'non'));          $key_val_pairs = array('Dossier à enjeux ERP' => array('oui', 'non'));
280          $ret = $this->generique($data,  
281            // Appel de la méthode de traitement générique qui permet d'effectuer
282            // les vérifications de validité des données et de préparer la
283            // requête d'insertion par la modification de $data
284            $ret = $this->generic($data,
285                                $this->TYPE_DOSSIER_ENJEUX,                                $this->TYPE_DOSSIER_ENJEUX,
286                                $key_val_pairs);                                $key_val_pairs);
287            
288            // Si une erreur a été rencontrée alors on retourne cette erreur
289          if ($ret != $this->OK) {          if ($ret != $this->OK) {
290              return $ret;              return $ret;
291          }                  }
292    
293            // Si aucune erreur n'a été rencontrée alors on appelle la méthode
294            // ajouter pour insérer le message et on retourne le résultat de
295            // la méthode ajouter
296          return parent::ajouter($data,          return parent::ajouter($data,
297                  "Mise à jour du dossier \"Dossier à enjeux ERP\" à été faite avec success",                  "Insertion du message '".$this->TYPE_DOSSIER_ENJEUX."' OK.",
298                  "Echec dans la mise à jour du dossier \"Dossier à enjeux ERP\"");                  "Echec du message '".$this->TYPE_DOSSIER_ENJEUX."'");
299    
300      }      }
301    
302        /**
303         * Ce message permet de recevoir les informations de complétude dossier
304         * PC qui concerne un ERP par le service ERP Accessibilité
305         *
306         * @param mixed $data Les données reçues en format d'un tableau associative
307         */
308        public function erpQualifie($data) {
309    
310            // Logger
311            $this->addToLog("erpQualifie(): start", EXTRA_VERBOSE_MODE);
312    
313            // Définition des critères de vérification de la validité du contenu
314            // du message
315            $key_val_pairs = array('competence' => null,
316                                   'contrainte_plu' => null,
317                                   'reference_cadastrale' => null,
318                                   );
319    
320            // Appel de la méthode de traitement générique qui permet d'effectuer
321            // les vérifications de validité des données et de préparer la
322            // requête d'insertion par la modification de $data
323            $ret = $this->generic($data,
324                                  $this->TYPE_ERP_QUALIFIE,
325                                  $key_val_pairs);
326    
327            // Si une erreur a été rencontrée alors on retourne cette erreur
328            if ($ret != $this->OK) {
329                return $ret;
330            }
331    
332            // Si aucune erreur n'a été rencontrée alors on appelle la méthode
333            // ajouter pour insérer le message et on retourne le résultat de
334            // la méthode ajouter
335            return parent::ajouter($data,
336                    "Insertion du message '".$this->TYPE_ERP_QUALIFIE."' OK.",
337                    "Echec du message '".$this->TYPE_ERP_QUALIFIE."'");
338    
339        }
340  }  }
341    
342  ?>  ?>

Legend:
Removed from v.767  
changed lines
  Added in v.1377

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26