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

Annotation of /trunk/services/metier/consultationmanager.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 778 - (hide annotations)
Tue Nov 20 16:14:25 2012 UTC (12 years, 2 months ago) by fmichon
File size: 9874 byte(s)
Suppression de la surcharge des méthodes __construct() et __destructu) inutiles

1 mlimic 515 <?php
2 fmichon 744 /**
3     * Ce fichier permet de déclarer la classe ConsultationManager, qui effectue les
4     * traitements pour la ressource 'consultations'.
5 mlimic 522 *
6 fmichon 744 * @package openfoncier
7     * @version SVN : $Id$
8 mlimic 522 */
9    
10 fmichon 744 // Inclusion de la classe de base MetierManager
11     require_once("./metier/metiermanager.php");
12 mlimic 522
13 fmichon 744 // Inclusion de la classe métier consultation
14 mlimic 573 require_once("../obj/consultation.class.php");
15 mlimic 515
16 fmichon 744 /**
17     * Cette classe hérite de la classe MetierManager. Elle permet d'effectuer des
18     * traitements pour la ressource 'consultations'. Le traitement permet de
19     * rendre un retour d'avis sur une consultation existante par un service
20     * interne à la mairie directement depuis son application.
21     *
22     * @todo XXX Traduire et commenter toutes les méthodes
23     */
24 mlimic 515 class ConsultationManager extends MetierManager {
25 mlimic 559
26 fmichon 744 /**
27 mlimic 522 *
28 fmichon 744 */
29 fmichon 778 var $metier_instance = null;
30     var $filename_prefix = null;
31     var $filename = null;
32 fmichon 744
33     /**
34 fmichon 760 * Cette méthode permet de modifier une consultation existante pour lui
35     * ajouter les informations de retour d'avis.
36     *
37     * @param mixed $request_data Les données JSON reçues
38     * @param string $id L'identifiant de la ressource
39     */
40     public function consultationDecision($data, $id) {
41    
42     // Si l'identifiant envoyé n'est pas un numérique alors on ajoute un
43     // message d'informations et on retourne un résultat d'erreur
44     if (!is_numeric($id)) {
45     $this->setMessage("L'identifiant '".$id."' fourni est incorrect.");
46 mlimic 559 return $this->BAD_DATA;
47     }
48    
49 fmichon 760 // On instancie la consultation sur laquelle porte la requête
50     $this->metier_instance = new consultation($id, $this->db, 0);
51    
52     // On vérifie si l'instanciation a produit une erreur de base de données
53     // alors on ajoute un message d'informations et on retourne un résultat
54     // d'erreur
55     if (isset($this->metier_instance->errors['db_debuginfo'])
56     && !empty($this->metier_instance->errors['db_debuginfo'])) {
57     $this->setMessage("Erreur lors de la récupération de la".
58     " consultation '".$id."'.");
59     return $this->KO;
60     }
61    
62     // Si l'identifiant de la consultation instanciée est différent de
63     // l'identifiant envoyé alors on ajoute un message d'informations et
64     // on retourne un résultat d'erreur
65 fmichon 766 if ($id != $this->getMetierInstanceValForPrimaryKey()) {
66 fmichon 760 $this->setMessage("Aucune consultation '".$id."'.");
67 mlimic 559 return $this->BAD_DATA;
68     }
69 fmichon 760
70     // Si la consultation possède déjà une date de retour ou un avis ou une
71     // motivation alors on ajoute un message d'informations et on retourne
72     // un résultat d'erreur
73     $date_retour = $this->getMetierInstanceValForField("date_retour");
74     $avis = $this->getMetierInstanceValForField("avis");
75     $motivation = $this->getMetierInstanceValForField("motivation");
76     if (!empty($date_retour) || !empty($avis) || !empty($motivation)) {
77     $this->setMessage("Un retour d'avis a déjà été rendu pour la".
78     " consultation '".$id."'.");
79 mlimic 559 return $this->BAD_DATA;
80     }
81 fmichon 760
82     // Le format de la date de retour valide est 'JJ/MM/AAAA'
83     // Si la donnée fournie n'est pas valide alors on ajoute
84     // un message d'informations et on retourne un résultat d'erreur
85     $date_retour = explode("/", $data['date_retour']);
86     if (count($date_retour)!= 3
87     || !checkdate($date_retour[1], $date_retour[0], $date_retour[2])) {
88     $this->setMessage("Le format de la date de retour d'avis fournie".
89     " pour la consultation '".$id."' n'est pas".
90     " correct.");
91 mlimic 559 return $this->BAD_DATA;
92     }
93    
94 fmichon 760 // Si la date de retour de l'avis ne se situe pas entre la date d'envoi
95     // de la consultation et la date limite de retour d'avis alors on ajoute
96     // un message d'informations et on retourne un résultat d'erreur
97     $date_retour = $data['date_retour'];
98     $date_envoi = $this->getMetierInstanceValForField("date_envoi");
99     $date_limite = $this->getMetierInstanceValForField("date_limite");
100     if (!$this->dateInsideInterval($date_retour,
101     $date_envoi, $date_limite)) {
102     $this->setMessage("La date de retour d'avis fournie pour la".
103     " consultation '".$id."' ne se trouve pas entre".
104     " la date d'envoi et la date limite.");
105     return $this->BAD_DATA;
106     }
107    
108     // => DATE DE RETOUR
109     $this->metier_instance->valF['date_retour'] = $data['date_retour'];
110    
111     // Si l'avis fourni ne correspond pas à la liste d'avis valides alors
112     // on ajoute un message d'informations et on retourne un résultat
113     // d'erreur
114     $avis = $data["avis"];
115     $avis_valid = array("Favorable",
116     "Favorable avec réserve", "Défavorable", );
117     if (!in_array($avis, $avis_valid)) {
118     $this->setMessage("L'avis du retour d'avis fourni pour la".
119     " consultation '".$id."' n'est pas correct.");
120     return $this->BAD_DATA;
121     }
122    
123     // Récupération de la référence vers un avis_consultation existant
124     // On liste les avis possibles et on récupère l'identifiant
125     // correspondant au libellé transmis en paramètre
126     $sql = " SELECT avis_consultation, libelle ";
127     $sql .= " FROM ".DB_PREFIXE."avis_consultation ";
128     $sql .= " WHERE ((avis_consultation.om_validite_debut IS NULL ";
129     $sql .= " AND (avis_consultation.om_validite_fin IS NULL ";
130     $sql .= " OR avis_consultation.om_validite_fin > CURRENT_DATE)) ";
131     $sql .= " OR (avis_consultation.om_validite_debut <= CURRENT_DATE ";
132     $sql .= " AND (avis_consultation.om_validite_fin IS NULL ";
133     $sql .= " OR avis_consultation.om_validite_fin > CURRENT_DATE))) ";
134 mlimic 559 $res = $this->db->query($sql);
135 fmichon 760 // Logger
136     $this->addToLog("consultationDecision(): db->query(\"".$sql."\")",
137     VERBOSE_MODE);
138    
139     // Si une erreur de base de données se produit sur cette requête
140     // alors on retourne un résultat d'erreur
141     if ($this->f->isDatabaseError($res, true)) {
142     $this->setMessage("Erreur lors de la récupération des avis pour la".
143     " consultation '".$id."'.");
144 mlimic 559 return $this->KO;
145     }
146    
147 fmichon 760 // Récupération de la référence vers un avis_consultation existant
148     // On liste les avis possibles et on récupère l'identifiant
149     // correspondant au libellé transmis en paramètre
150     $avis = $data["avis"];
151     $avis_id = NULL;
152     while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
153     if ($avis == $row["libelle"]) {
154     $avis_id = $row["avis_consultation"];
155     break;
156     }
157 mlimic 559 }
158     $res->free();
159    
160 fmichon 760 // Si la décision n'existe pas dans la base de données alors on ajoute
161     // un message d'informations et on retourne un résultat d'erreur
162     if (is_null($avis_id)) {
163     $this->setMessage("L'avis n'existe pas.");
164 mlimic 564 return $this->KO;
165 mlimic 559 }
166    
167 fmichon 760 // => AVIS
168     $this->metier_instance->valF['avis_consultation'] = $avis_id;
169    
170     // Si un nom de fichier (nom_fichier) est fourni mais pas un contenu de
171     // fichier (fichier_base64) alors on ajoute un message d'informations
172     // et on retourne un résultat d'erreur
173     if (isset($data['nom_fichier']) && !isset($data['fichier_base64'])
174     || isset($data['fichier_base64']) && !isset($data['nom_fichier'])) {
175     $this->setMessage("Les informations du fichier de retour d'avis".
176     " fournies pour la consultation '".$id."' ne".
177     " sont pas correctes.");
178     return $this->BAD_DATA;
179 mlimic 515 }
180 mlimic 573
181 fmichon 760 //
182 mlimic 573 $this->filename_prefix = "consultation_".$id."_";
183 fmichon 760
184     //
185     if (isset($data['fichier_base64'])) {
186     //
187     if ($file_content = base64_decode($data['fichier_base64'], true)) {
188     //
189     $r = $this->f->storeDecisionFile($file_content,
190     $data['nom_fichier'],
191     $this->getMetierInstanceValForField("dossier"),
192     $this->filename_prefix);
193     // XXX Vérifier le retour d'erreur de la méthode
194     // StoreDecisionFile
195     if ($r !== true) {
196     return $r;
197 mlimic 716 }
198     } else {
199 fmichon 760 $this->setMessage("Le contenu du fichier n'est pas valide.");
200 mlimic 718 return $this->BAD_DATA;
201 nhaye 702 }
202 mlimic 559 }
203 nhaye 702
204 fmichon 760 // => FICHIER
205 mlimic 559 if (isset($data['nom_fichier'])) {
206 fmichon 760 $this->metier_instance->valF['fichier'] = $this->filename_prefix.$data['nom_fichier'];
207 mlimic 559 }
208 fmichon 760
209     // => MOTIVATION
210 mlimic 573 if (isset($data['motivation'])) {
211     $this->metier_instance->valF['motivation'] = $data['motivation'];
212 mlimic 559 }
213 fmichon 760
214     // => LU
215     $this->metier_instance->valF['lu'] = false;
216    
217     // Exécution du traitement
218 mlimic 573 $ret = parent::modifier($this->metier_instance->valF,
219     "L'avis de la consultation $id a été pris en compte",
220     "Erreur pendant le traitemande de la demande pour la consultation $id");
221 fmichon 760
222     // XXX vérifier ce retour car filename n'est jamais rempli
223 mlimic 573 if ($ret != $this->OK) {
224     // delete the file on disk
225     if (isset($data['nom_fichier'])) {
226     shell_exec("rm -f $this->filename");
227     }
228     }
229     return $ret;
230 fmichon 760
231 mlimic 515 }
232 fmichon 744
233 mlimic 515 }
234    
235     ?>

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26