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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 760 - (hide annotations)
Tue Nov 20 10:00:16 2012 UTC (12 years, 2 months ago) by fmichon
File size: 10240 byte(s)
Indentation, Optimisation et Commentaires.

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26