/[openfoncier]/trunk/obj/task.class.php
ViewVC logotype

Annotation of /trunk/obj/task.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10317 - (hide annotations)
Fri Aug 27 12:51:46 2021 UTC (3 years, 5 months ago) by gmalvolti
Original Path: branches/5.0.0-develop/obj/task.class.php
File size: 58465 byte(s)
Fusion de la branche de développement 5.0.0-develop_task_create_di dans la branche d'intégration 5.0.0-develop.

1 softime 9293 <?php
2 mbroquet 9776 //$Id$
3 softime 9293 //gen openMairie le 14/04/2020 14:11
4    
5     require_once "../gen/obj/task.class.php";
6    
7     class task extends task_gen {
8    
9 mbideau 9799 const STATUS_DRAFT = 'draft';
10     const STATUS_NEW = 'new';
11     const STATUS_PENDING = 'pending';
12     const STATUS_DONE = 'done';
13     const STATUS_ERROR = 'error';
14     const STATUS_DEBUG = 'debug';
15     const STATUS_ARCHIVED = 'archived';
16    
17 softime 9293 /**
18 softime 10036 * Liste des types de tâche concernant les services instructeurs
19     */
20     const TASK_TYPE_SI = array(
21     'creation_DA',
22     'creation_DI',
23     'depot_DI',
24     'modification_DI',
25     'qualification_DI',
26     'decision_DI',
27     'incompletude_DI',
28     'completude_DI',
29     'ajout_piece',
30     'add_piece',
31     'creation_consultation',
32 gmalvolti 10317 'create_DI',
33 softime 10036 );
34    
35     /**
36     * Liste des types de tâche concernant les services consultés
37     */
38     const TASK_TYPE_SC = array(
39     'create_DI_for_consultation',
40     'avis_consultation',
41     'pec_metier_consultation',
42     );
43    
44     /**
45 softime 9293 * Définition des actions disponibles sur la classe.
46     *
47     * @return void
48     */
49     public function init_class_actions() {
50     parent::init_class_actions();
51     //
52     $this->class_actions[998] = array(
53 softime 9330 "identifier" => "json_data",
54     "view" => "view_json_data",
55 softime 9293 "permission_suffix" => "consulter",
56     );
57 gmalvolti 9721 $this->class_actions[997] = array(
58     "identifier" => "json_data",
59 gmalvolti 9765 "view" => "post_update_task",
60 gmalvolti 9721 "permission_suffix" => "modifier",
61     );
62     $this->class_actions[996] = array(
63     "identifier" => "json_data",
64 gmalvolti 9765 "view" => "post_add_task",
65 gmalvolti 9721 "permission_suffix" => "ajouter",
66     );
67 softime 9293 }
68    
69 softime 9482 public function setvalF($val = array()) {
70 mbideau 9813
71 softime 9842 // // les guillets doubles sont remplacés automatiquement par des simples
72     // // dans core/om_formulaire.clasS.php::recupererPostvar()
73     // // voir le ticket https://dev.atreal.fr/projets/openmairie/tracker/209
74     // // ceci est un hack sale temporaire en attendant résolution du ticket
75     // foreach(array('json_payload', 'timestamp_log') as $key) {
76     // if (isset($val[$key]) && ! empty($val[$key]) &&
77     // isset($_POST[$key]) && ! empty($_POST[$key])) {
78     // $submited_payload = $_POST[$key];
79     // if (! empty($submited_payload)) {
80     // $new_payload = str_replace("'", '"', $val[$key]);
81     // if ($new_payload == $submited_payload ||
82     // strpos($submited_payload, '"') === false) {
83     // $val[$key] = $new_payload;
84     // }
85     // else {
86     // $error_msg = sprintf(
87     // __("La convertion des guillemets de la payload JSON '%s' ".
88     // "n'est pas idempotente (courante: %s, postée: %s, convertie: %s)"),
89     // $key, var_export($val[$key], true), var_export($submited_payload, true),
90     // var_export($new_payload, true));
91     // $this->correct = false;
92     // $this->addToMessage($error_msg);
93     // $this->addToLog(__METHOD__."() erreur : $error_msg", DEBUG_MODE);
94     // return false;
95     // }
96     // }
97     // }
98     // }
99 mbideau 9813
100 softime 9482 parent::setvalF($val);
101 mbideau 9813
102 softime 9842 // XXX Ancien code : permet de ne pas avoir d'erreru lors de la modification d'une task
103     if (array_key_exists('timestamp_log', $val) === true) {
104     $this->valF['timestamp_log'] = str_replace("'", '"', $val['timestamp_log']);
105     }
106    
107 mbideau 9813 // récupération de l'ID de l'objet existant
108     $id = property_exists($this, 'id') ? $this->id : null;
109     if(isset($val[$this->clePrimaire])) {
110     $id = $val[$this->clePrimaire];
111     } elseif(isset($this->valF[$this->clePrimaire])) {
112     $id = $this->valF[$this->clePrimaire];
113 softime 9482 }
114 mbideau 9813
115     // MODE MODIFIER
116     if (! empty($id)) {
117    
118     // si aucune payload n'est fourni (devrait toujours être le cas)
119     if (! isset($val['json_payload']) || empty($val['json_payload'])) {
120    
121     // récupère l'objet existant
122     $existing = $this->f->findObjectById(get_class($this), $id);
123     if (! empty($existing)) {
124    
125     // récupère la payload de l'objet
126     $val['json_payload'] = $existing->getVal('json_payload');
127     $this->valF['json_payload'] = $existing->getVal('json_payload');
128     $this->f->addToLog(__METHOD__."() récupère la payload de la tâche existante ".
129     "'$id': ".$existing->getVal('json_payload'), EXTRA_VERBOSE_MODE);
130     }
131     }
132     }
133 softime 9482 }
134    
135 gmalvolti 9589 /**
136     *
137     * @return array
138     */
139     function get_var_sql_forminc__champs() {
140     return array(
141     "task",
142     "type",
143     "state",
144     "object_id",
145     "dossier",
146 gmalvolti 9721 "stream",
147 gmalvolti 9604 "json_payload",
148 gmalvolti 9589 "timestamp_log",
149     );
150     }
151    
152 gmalvolti 9585 function setType(&$form, $maj) {
153     parent::setType($form, $maj);
154 mbideau 9813
155 gmalvolti 9585 // Récupération du mode de l'action
156     $crud = $this->get_action_crud($maj);
157    
158 mbideau 9813 // MODE CREER
159     if ($maj == 0 || $crud == 'create') {
160 gmalvolti 9585 $form->setType("state", "select");
161 gmalvolti 9721 $form->setType("stream", "select");
162 mbideau 9813 $form->setType("json_payload", "textarea");
163     }
164     // MDOE MODIFIER
165     if ($maj == 1 || $crud == 'update') {
166     $form->setType("state", "select");
167     $form->setType("stream", "select");
168 gmalvolti 9721 $form->setType("json_payload", "jsonprettyprint");
169 gmalvolti 9585 }
170 mbideau 9813 // MODE CONSULTER
171     if ($maj == 3 || $crud == 'read') {
172 gmalvolti 9589 $form->setType('dossier', 'link');
173 gmalvolti 9604 $form->setType('json_payload', 'jsonprettyprint');
174 gmalvolti 9589 }
175    
176 gmalvolti 9585 }
177    
178     /**
179     *
180     */
181     function setSelect(&$form, $maj, &$dnu1 = null, $dnu2 = null) {
182     if($maj < 2) {
183    
184 mbideau 9799 $contenu = array();
185     foreach(array('DRAFT', 'NEW', 'PENDING', 'DONE', 'ERROR', 'DEBUG') as $key) {
186     $const_name = 'STATUS_'.$key;
187     $const_value = constant("self::$const_name");
188     $contenu[0][] = $const_value;
189     $contenu[1][] = __($const_value);
190     }
191 gmalvolti 9585
192     $form->setSelect("state", $contenu);
193 gmalvolti 9721
194     $contenu_stream =array();
195     $contenu_stream[0][0]="input";
196     $contenu_stream[1][0]=_('input');
197     $contenu_stream[0][1]="output";
198     $contenu_stream[1][1]=_('output');
199     $form->setSelect("stream", $contenu_stream);
200    
201 gmalvolti 9585 }
202 gmalvolti 9589
203     if ($maj == 3) {
204 gmalvolti 9721 if ($this->getVal('stream') == 'output') {
205     $inst_dossier = $this->f->get_inst__om_dbform(array(
206     "obj" => "dossier",
207     "idx" => $form->val['dossier'],
208     ));
209 mbroquet 9776
210 gmalvolti 9721 if($form->val['type'] == "creation_DA"){
211     $obj_link = 'dossier_autorisation';
212     } else {
213     $obj_link = 'dossier_instruction';
214     }
215    
216     $params = array();
217     $params['obj'] = $obj_link;
218     $params['libelle'] = $inst_dossier->getVal('dossier');
219     $params['title'] = "Consulter le dossier";
220     $params['idx'] = $form->val['dossier'];
221     $form->setSelect("dossier", $params);
222 gmalvolti 9594 }
223 gmalvolti 9589 }
224 gmalvolti 9585 }
225    
226 gmalvolti 9604 /**
227     * SETTER_FORM - setVal (setVal).
228     *
229     * @return void
230     */
231     function setVal(&$form, $maj, $validation, &$dnu1 = null, $dnu2 = null) {
232     // parent::setVal($form, $maj, $validation);
233     //
234 gmalvolti 9721 if ($this->getVal('stream') == "output") {
235     $form->setVal('json_payload', $this->view_form_json(true));
236 gmalvolti 9728 } else {
237 mbideau 9798 $form->setVal('json_payload', htmlentities($this->getVal('json_payload')));
238 gmalvolti 9721 }
239 gmalvolti 9604 }
240    
241 gmalvolti 9746 function setLib(&$form, $maj) {
242     parent::setLib($form, $maj);
243 mbideau 9813
244     // Récupération du mode de l'action
245     $crud = $this->get_action_crud($maj);
246    
247     // MODE different de CREER
248     if ($maj != 0 || $crud != 'create') {
249     $form->setLib('json_payload', '');
250     }
251 gmalvolti 9746 }
252    
253 softime 9482 public function verifier($val = array(), &$dnu1 = null, $dnu2 = null) {
254 gmalvolti 9765 $ret = parent::verifier($val, $dnu1, $dnu2);
255    
256     // une tâche entrante doit avoir un type et une payload non-vide
257     if (isset($this->valF['stream']) === false || $this->valF['stream'] == 'input') {
258     if (isset($this->valF['type']) === false) {
259     $this->correct = false;
260     $this->addToMessage(sprintf(
261     __("Le champ %s est obligatoire pour une tâche entrante."),
262     sprintf('<span class="bold">%s</span>', $this->getLibFromField('type'))
263     ));
264     $this->addToLog(__METHOD__.'(): erreur: '.$this->msg, DEBUG_MODE);
265     }
266     if (isset($this->valF['json_payload']) === false) {
267     $this->correct = false;
268     $this->addToMessage(sprintf(
269     __("Le champ %s est obligatoire pour une tâche entrante."),
270     sprintf('<span class="bold">%s</span>', $this->getLibFromField('json_payload'))
271     ));
272     $this->addToLog(__METHOD__.'(): erreur: '.$this->msg, DEBUG_MODE);
273     }
274     }
275    
276 mbideau 9813 // les JSONs doivent être décodables
277     foreach(array('json_payload', 'timestamp_log') as $key) {
278     if (isset($this->valF[$key]) && ! empty($this->valF[$key]) && (
279     is_array(json_decode($this->valF[$key], true)) === false
280     || json_last_error() !== JSON_ERROR_NONE)) {
281     $this->correct = false;
282     $champ_text = sprintf('<span class="bold">%s</span>', $this->getLibFromField($key));
283     $this->addToMessage(sprintf(
284     __("Le champ %s doit être dans un format JSON valide (erreur: %s).".
285     "<p>%s valF:</br><pre>%s</pre></p>".
286     "<p>%s val:</br><pre>%s</pre></p>".
287     "<p>%s POST:</br><pre>%s</pre></p>".
288     "<p>%s submitted POST value:</br><pre>%s</pre></p>"),
289     $champ_text,
290     json_last_error() !== JSON_ERROR_NONE ? json_last_error_msg() : __('invalide'),
291     $champ_text,
292     $this->valF[$key],
293     $champ_text,
294     $val[$key],
295     $champ_text,
296     isset($_POST[$key]) ? $_POST[$key] : '',
297     $champ_text,
298     $this->f->get_submitted_post_value($key)
299     ));
300     $this->addToLog(__METHOD__.'(): erreur JSON: '.$this->msg, DEBUG_MODE);
301     }
302 gmalvolti 9765 }
303    
304     // une tâche entrante doit avoir une payload avec les clés requises
305 mbideau 9813 if ($this->correct && (isset($this->valF['stream']) === false ||
306     $this->valF['stream'] == 'input')) {
307 gmalvolti 9765
308     // décode la payload JSON
309     $json_payload = json_decode($this->valF['json_payload'], true);
310    
311     // défini une liste de chemin de clés requises
312     $paths = array(
313 mbideau 9798 'external_uids/dossier'
314 gmalvolti 9765 );
315    
316     // tâche de type création de DI/DA
317 mbroquet 9776 if (isset($this->valF['type']) !== false && $this->valF['type'] == 'create_DI_for_consultation') {
318 gmalvolti 9765
319     $paths = array_merge($paths, array(
320 mbideau 9798 'dossier/dossier',
321 mbideau 9773 'dossier/dossier_autorisation_type_detaille_code',
322 gmalvolti 9765 'dossier/date_demande',
323     'dossier/depot_electronique',
324     ));
325    
326     // si l'option commune est activée (mode MC)
327     if ($this->f->is_option_dossier_commune_enabled()) {
328     $paths[] = 'dossier/insee';
329     }
330    
331     // présence d'un moyen d'identifier la collectivité/le service
332 mbideau 9955 if (! isset($json_payload['external_uids']['acteur']) &&
333 gmalvolti 9765 ! isset($json_payload['dossier']['om_collectivite'])) {
334     $this->correct = false;
335     $this->addToMessage(sprintf(
336     __("L'une des clés %s ou %s est obligatoire dans le contenu du champ %s pour une tâche entrante."),
337 mbideau 9955 sprintf('<span class="bold">%s</span>', 'external_uids/acteur'),
338 gmalvolti 9765 sprintf('<span class="bold">%s</span>', 'dossier/om_collectivite'),
339     sprintf('<span class="bold">%s</span>', $this->getLibFromField('json_payload'))
340     ));
341     $this->addToLog(__METHOD__.'(): erreur: '.$this->msg, DEBUG_MODE);
342     }
343     }
344    
345     // pas d'erreur déjà trouvée
346     if($this->correct) {
347    
348     // pour chaque chemin
349     foreach($paths as $path) {
350    
351     // décompose le chemin
352     $tokens = explode('/', $path);
353     $cur_depth = $json_payload;
354    
355     // descend au et à mesure dans l'arborescence du chemin
356     foreach($tokens as $token) {
357    
358     // en vérifiant que chaque élément du chemin est défini et non-nul
359     if (isset($cur_depth[$token]) === false) {
360    
361     // sinon on produit une erreur
362     $this->correct = false;
363     $this->addToMessage(sprintf(
364     __("La clé %s est obligatoire dans le contenu du champ %s pour une tâche entrante."),
365     sprintf('<span class="bold">%s</span>', $path),
366     sprintf('<span class="bold">%s</span>', $this->getLibFromField('json_payload'))
367     ));
368     $this->addToLog(__METHOD__.'(): erreur: '.$this->msg, DEBUG_MODE);
369     break 2;
370     }
371     $cur_depth = $cur_depth[$token];
372     }
373     }
374     }
375     }
376    
377     return $ret && $this->correct;
378 softime 9482 }
379    
380 softime 9395 protected function task_exists(string $type, string $object_id) {
381     $query = sprintf('
382     SELECT task
383     FROM %1$stask
384     WHERE state != \'%2$s\'
385     AND type = \'%3$s\'
386     AND object_id = \'%4$s\'
387     ',
388     DB_PREFIXE,
389 mbideau 9799 self::STATUS_DONE,
390 softime 9395 $type,
391     $object_id
392     );
393     $res = $this->f->get_one_result_from_db_query($query);
394     if ($res['result'] !== null && $res['result'] !== '') {
395     return $res['result'];
396     }
397     return false;
398     }
399    
400 softime 9293 /**
401 gmalvolti 9765 * TRIGGER - triggerajouter.
402     *
403     * @param string $id
404     * @param null &$dnu1 @deprecated Ne pas utiliser.
405     * @param array $val Tableau des valeurs brutes.
406     * @param null $dnu2 @deprecated Ne pas utiliser.
407     *
408     * @return boolean
409     */
410     function triggerajouter($id, &$dnu1 = null, $val = array(), $dnu2 = null) {
411    
412     // tâche entrante
413     if (isset($this->valF['stream']) === false || $this->valF['stream'] == 'input') {
414    
415     // décode la paylod JSON pour extraire les données métiers à ajouter
416     // en tant que métadonnées de la tâche
417     $json_payload = json_decode($this->valF['json_payload'], true);
418 mbideau 9798
419     // si la tâche possède déjà une clé dossier
420     if (isset($json_payload['dossier']['dossier']) &&
421     ! empty($json_payload['dossier']['dossier'])) {
422     $this->valF["dossier"] = $json_payload['dossier']['dossier'];
423     }
424 gmalvolti 9765 }
425     }
426    
427     /**
428 softime 9293 * TREATMENT - add_task
429     * Ajoute un enregistrement.
430     *
431     * @param array $params Tableau des paramètres
432     * @return boolean
433     */
434     public function add_task($params = array()) {
435     $this->begin_treatment(__METHOD__);
436 softime 9853
437     // Vérifie si la task doit être ajoutée en fonction du mode de l'application,
438     // seulement pour les tasks output
439 softime 10036 $task_types_si = self::TASK_TYPE_SI;
440     $task_types_sc = self::TASK_TYPE_SC;
441 softime 9853 $stream = isset($params['val']['stream']) === true ? $params['val']['stream'] : 'output';
442     if ($stream === 'output'
443     && isset($params['val']['type']) === true
444     && $this->f->is_option_mode_service_consulte_enabled() === true
445     && in_array($params['val']['type'], $task_types_sc) === false) {
446     //
447     return $this->end_treatment(__METHOD__, true);
448     }
449     if ($stream === 'output'
450     && isset($params['val']['type']) === true
451     && $this->f->is_option_mode_service_consulte_enabled() === false
452     && in_array($params['val']['type'], $task_types_si) === false) {
453     //
454     return $this->end_treatment(__METHOD__, true);
455     }
456    
457 softime 9293 $timestamp_log = json_encode(array(
458     'creation_date' => date('Y-m-d H:i:s'),
459     ));
460 gmalvolti 9751
461     // Si la tâche est de type ajout_piece et de stream input alors on ajoute le fichier
462     // et on ajoute l'uid dans le champ json_payload avant l'ajout de la tâche
463 mbroquet 9776 if (isset($params['val']['type'])
464 softime 10043 && ($params['val']['type'] == "add_piece" || $params['val']['type'] == "avis_consultation")
465 gmalvolti 9751 && isset($params['val']['stream'])
466     && $params['val']['stream'] == "input" ) {
467     //
468     $json_payload = json_decode($params['val']['json_payload'], true);
469 mbideau 9955 if (json_last_error() !== JSON_ERROR_NONE) {
470     $this->addToMessage(__("Le contenu JSON de la tâche n'est pas valide."));
471     return $this->end_treatment(__METHOD__, false);
472     }
473 softime 10043 if (isset($json_payload['document_numerise']) === true
474     && empty($json_payload['document_numerise']) === false) {
475     //
476     $document_numerise = $json_payload['document_numerise'];
477     $file_content = base64_decode($document_numerise["file_content"]);
478     if ($file_content === false){
479     $this->addToMessage(__("Le contenu du fichier lié à la tâche n'a pas pu etre recupere."));
480     return $this->end_treatment(__METHOD__, false);
481     }
482     $metadata = array(
483     "filename" => $document_numerise['nom_fichier'],
484     "size" => strlen($file_content),
485     "mimetype" => $document_numerise['file_content_type'],
486     "date_creation" => isset($document_numerise['date_creation']) === true ? $document_numerise['date_creation'] : date("Y-m-d"),
487     );
488 gmalvolti 10058 $uid_fichier = $this->f->storage->create($file_content, $metadata, "from_content", "task.uid_fichier");
489 softime 10043 if ($uid_fichier === OP_FAILURE) {
490     $this->addToMessage(__("Erreur lors de la creation du fichier lié à la tâche."));
491     return $this->end_treatment(__METHOD__, false);
492     }
493     $json_payload["document_numerise"]["uid"] = $uid_fichier;
494     // Le fichier a été ajouté nous n'avons plus besoin du champ file_content dans la payload
495     unset($json_payload["document_numerise"]["file_content"]);
496     $params['val']['json_payload'] = json_encode($json_payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
497 gmalvolti 9751 }
498     }
499    
500 softime 9293 // Mise à jour du DI
501     $valF = array(
502     'task' => '',
503     'type' => $params['val']['type'],
504     'timestamp_log' => $timestamp_log,
505 mbideau 9799 'state' => isset($params['val']['state']) === true ? $params['val']['state'] : self::STATUS_NEW,
506 gmalvolti 9765 'object_id' => isset($params['val']['object_id']) ? $params['val']['object_id'] : '',
507     'dossier' => isset($params['val']['dossier']) ? $params['val']['dossier'] : '',
508 softime 9853 'stream' => $stream,
509 gmalvolti 9721 'json_payload' => isset($params['val']['json_payload']) === true ? $params['val']['json_payload'] : '{}',
510 softime 9293 );
511 gmalvolti 9765
512     // tâche sortante
513     if($valF["stream"] == "output"){
514    
515     // TODO expliquer ce code
516 gmalvolti 9746 $task_exists = $this->task_exists($valF['type'], $valF['object_id']);
517     if ($valF['type'] === 'modification_DI' && $task_exists === false) {
518     $task_exists = $this->task_exists('creation_DI', $valF['object_id']);
519 softime 9414 }
520 gmalvolti 9746 if ($task_exists !== false) {
521     $inst_task = $this->f->get_inst__om_dbform(array(
522     "obj" => "task",
523     "idx" => $task_exists,
524     ));
525     $update_state = $inst_task->getVal('state');
526     if (isset($params['update_val']['state']) === true) {
527     $update_state = $params['update_val']['state'];
528     }
529     $update_params = array(
530     'val' => array(
531     'state' => $update_state,
532     ),
533     );
534     return $inst_task->update_task($update_params);
535     }
536 softime 9395 }
537 gmalvolti 9765
538 softime 9293 $add = $this->ajouter($valF);
539 mbideau 9785 $this->addToLog(__METHOD__."(): retour de l'ajout de tâche: ".var_export($add, true), VERBOSE_MODE);
540 softime 9293 if ($add === false) {
541 gmalvolti 9765 $this->addToLog(__METHOD__."(): ".$this->msg, DEBUG_MODE);
542 softime 9293 return $this->end_treatment(__METHOD__, false);
543     }
544     return $this->end_treatment(__METHOD__, true);
545     }
546    
547     /**
548     * TREATMENT - update_task
549     * Met à jour l'enregistrement instancié.
550     *
551     * @param array $params Tableau des paramètres
552     * @return boolean
553     */
554     public function update_task($params = array()) {
555     $this->begin_treatment(__METHOD__);
556     $timestamp_log = $this->get_timestamp_log();
557     if ($timestamp_log === false) {
558 mbideau 9813 $this->addToLog(__METHOD__."(): erreur timestamp log", DEBUG_MODE);
559 softime 9293 return $this->end_treatment(__METHOD__, false);
560     }
561     array_push($timestamp_log, array(
562     'modification_date' => date('Y-m-d H:i:s'),
563     'state' => $params['val']['state'],
564     'prev_state' => $this->getVal('state'),
565     ));
566     $timestamp_log = json_encode($timestamp_log);
567     $valF = array(
568     'task' => $this->getVal($this->clePrimaire),
569     'type' => $this->getVal('type'),
570     'timestamp_log' => $timestamp_log,
571     'state' => $params['val']['state'],
572 softime 9389 'object_id' => $this->getVal('object_id'),
573 gmalvolti 9721 'stream' => $this->getVal('stream'),
574 gmalvolti 9593 'dossier' => $this->getVal('dossier'),
575 gmalvolti 9667 'json_payload' => $this->getVal('json_payload'),
576 softime 9293 );
577     $update = $this->modifier($valF);
578     if ($update === false) {
579     $this->addToLog($this->msg, DEBUG_MODE);
580     return $this->end_treatment(__METHOD__, false);
581     }
582     return $this->end_treatment(__METHOD__, true);
583     }
584    
585     /**
586     * Récupère le journal d'horodatage dans le champ timestamp_log de
587     * l'enregistrement instancié.
588 mbroquet 9776 *
589 softime 9293 * @param array $params Tableau des paramètres
590     * @return array sinon false en cas d'erreur
591     */
592     protected function get_timestamp_log($params = array()) {
593     $val = $this->getVal('timestamp_log');
594     if ($val === '') {
595     $val = json_encode(array());
596     }
597     if($this->isJson($val) === false) {
598     return false;
599     }
600     return json_decode($val, true);
601     }
602    
603     /**
604 softime 9330 * VIEW - view_json_data
605 softime 9293 * Affiche l'enregistrement dans le format JSON.
606     *
607     * @return void
608     */
609 softime 9330 public function view_json_data() {
610 softime 9293 $this->checkAccessibility();
611 softime 9330 $this->f->disableLog();
612 softime 9298 if ($this->getParameter('idx') !== ']'
613     && $this->getParameter('idx') !== '0') {
614     //
615     $this->view_form_json();
616     }
617     else {
618     $this->view_tab_json();
619     }
620     }
621    
622     protected function view_tab_json() {
623 softime 9304 $where = '';
624     if ($this->f->get_submitted_get_value('state') !== null
625     && $this->f->get_submitted_get_value('state') !== '') {
626     //
627     $where = sprintf(' WHERE state = \'%s\' ', $this->f->get_submitted_get_value('state'));
628     }
629 softime 9298 $query = sprintf('
630     SELECT
631     *
632     FROM %1$stask
633 softime 9304 %2$s
634 softime 9481 ORDER BY task ASC
635 softime 9298 ',
636 softime 9304 DB_PREFIXE,
637     $where
638 softime 9298 );
639     $res = $this->f->get_all_results_from_db_query($query, true);
640     if ($res['code'] === 'KO') {
641     return false;
642     }
643     $list_tasks = array();
644     foreach ($res['result'] as $task) {
645 softime 9404 $task['timestamp_log'] = json_decode($task['timestamp_log'], true);
646 softime 9855 $task['dossier'] = $task['dossier'];
647 softime 9950 if ($task['type'] === 'ajout_piece') {
648 softime 9490 $val_dn = $this->get_document_numerise_data($task['object_id']);
649     }
650 softime 9872 if ($task['stream'] === 'output') {
651     $task['external_uids'] = $this->get_all_external_uids($task['dossier']);
652     }
653 softime 9298 $list_tasks[$task['task']] = $task;
654     }
655     printf(json_encode($list_tasks));
656     }
657    
658 softime 9395 protected function get_dossier_data(string $dossier) {
659     $val_di = array();
660     $inst_di = $this->f->get_inst__om_dbform(array(
661     "obj" => "dossier",
662     "idx" => $dossier,
663     ));
664 softime 9404 $val_di = $inst_di->get_json_data();
665 softime 9396 if ($val_di['dossier_instruction_type_code'] === 'T') {
666     $val_di['date_decision_transfert'] = $val_di['date_decision'];
667     }
668 softime 9395 unset($val_di['initial_dt']);
669     unset($val_di['log_instructions']);
670     return $val_di;
671     }
672    
673     protected function get_dossier_autorisation_data(string $da) {
674     $val_da = array();
675     $inst_da = $this->f->get_inst__om_dbform(array(
676     "obj" => "dossier_autorisation",
677     "idx" => $da,
678     ));
679 softime 9404 $val_da = $inst_da->get_json_data();
680 softime 9395 return $val_da;
681     }
682    
683     protected function get_donnees_techniques_data(string $fk_idx, string $fk_field) {
684     $val_dt = array();
685     $inst_dt = $this->f->get_inst__by_other_idx(array(
686     "obj" => "donnees_techniques",
687     "fk_field" => $fk_field,
688     "fk_idx" => $fk_idx,
689     ));
690     $val_dt = array(
691     'donnees_techniques' => $inst_dt->getVal($inst_dt->clePrimaire),
692     'cerfa' => $inst_dt->getVal('cerfa'),
693     );
694     $val_dt = array_merge($val_dt, $inst_dt->get_donnees_techniques_applicables());
695 softime 9396 if (isset($val_dt['am_exist_date']) === true) {
696     $val_dt['am_exist_date_num'] = '';
697     if (is_numeric($val_dt['am_exist_date']) === true) {
698     $val_dt['am_exist_date_num'] = $val_dt['am_exist_date'];
699     }
700     }
701 softime 9403 // Correspond à la nomenclature de Plat'AU STATUT_INFO
702     $val_dt['tax_statut_info'] = 'Déclaré';
703 softime 9407 //
704     if ($inst_dt->is_tab_surf_ssdest_enabled() === true) {
705     $fields_tab_surf_dest = $inst_dt->get_fields_tab_surf_dest();
706     foreach ($fields_tab_surf_dest as $field) {
707     if (isset($val_dt[$field]) === true) {
708     unset($val_dt[$field]);
709     }
710     }
711     } else {
712     $fields_tab_surf_ssdest = $inst_dt->get_fields_tab_surf_ssdest();
713     foreach ($fields_tab_surf_ssdest as $field) {
714     if (isset($val_dt[$field]) === true) {
715     unset($val_dt[$field]);
716     }
717     }
718     }
719 softime 9409 // Correspond à la nouvelle ligne CERFA v7 dans le DENSI imposition 1.2.3
720 softime 9408 if (isset($val_dt['tax_su_non_habit_surf2']) === true
721 softime 9412 && isset($val_dt['tax_su_non_habit_surf3']) === true
722     && (($val_dt['tax_su_non_habit_surf2'] !== null
723     && $val_dt['tax_su_non_habit_surf2'] !== '')
724     || ($val_dt['tax_su_non_habit_surf3'] !== null
725     && $val_dt['tax_su_non_habit_surf3'] !== ''))) {
726 softime 9408 //
727     $val_dt['tax_su_non_habit_surf8'] = intval($val_dt['tax_su_non_habit_surf2']) + intval($val_dt['tax_su_non_habit_surf3']);
728     }
729     if (isset($val_dt['tax_su_non_habit_surf_stat2']) === true
730 softime 9412 && isset($val_dt['tax_su_non_habit_surf_stat3']) === true
731     && (($val_dt['tax_su_non_habit_surf_stat2'] !== null
732     && $val_dt['tax_su_non_habit_surf_stat2'] !== '')
733     || ($val_dt['tax_su_non_habit_surf_stat3'] !== null
734     && $val_dt['tax_su_non_habit_surf_stat3'] !== ''))) {
735 softime 9408 //
736     $val_dt['tax_su_non_habit_surf_stat8'] = intval($val_dt['tax_su_non_habit_surf_stat2']) + intval($val_dt['tax_su_non_habit_surf_stat3']);
737     }
738 softime 9409 // Cas particulier d'un projet réduit à l'extension d'une habitation existante
739     $particular_case = false;
740     $fields_tab_crea_loc_hab = $inst_dt->get_fields_tab_crea_loc_hab();
741     foreach ($fields_tab_crea_loc_hab as $field) {
742 softime 9438 if (isset($val_dt[$field]) === false
743     || (isset($val_dt[$field]) === true
744     && ($val_dt[$field] === null
745     || $val_dt[$field] === ''))) {
746 softime 9409 //
747     $particular_case = true;
748     }
749     }
750     if ($particular_case === true) {
751     if (isset($val_dt['tax_ext_pret']) === true
752     && $val_dt['tax_ext_pret'] === 'f') {
753     //
754     $val_dt['tax_su_princ_surf1'] = $val_dt['tax_surf_tot_cstr'];
755     $val_dt['tax_su_princ_surf_stat1'] = $val_dt['tax_surf_loc_stat'];
756     }
757     if (isset($val_dt['tax_ext_pret']) === true
758     && $val_dt['tax_ext_pret'] === 't') {
759     //
760     if (isset($val_dt['tax_ext_desc']) === true) {
761     if (preg_match('/[pP].*[lL].*[aA].*[iI]/', $val_dt['tax_ext_desc']) === 1
762     || preg_match('/[lL].*[lL].*[tT].*[sS]/', $val_dt['tax_ext_desc']) === 1) {
763     //
764     $val_dt['tax_su_princ_surf2'] = $val_dt['tax_surf_tot_cstr'];
765     $val_dt['tax_su_princ_surf_stat2'] = $val_dt['tax_surf_loc_stat'];
766     }
767     // if (preg_match('/[pP].*[tT].*[zZ]/', $val_dt['tax_ext_desc']) === 1) {
768     // $val_dt['tax_su_princ_surf4'] = $val_dt['tax_surf_tot_cstr'];
769     // $val_dt['tax_su_princ_surf_stat4'] = $val_dt['tax_surf_loc_stat'];
770     // }
771     // if (preg_match('/[pP].*[lL].*[uU].*[sS]/', $val_dt['tax_ext_desc']) === 1
772     // || preg_match('/[lL].*[eE].*[sS]/', $val_dt['tax_ext_desc']) === 1
773     // || preg_match('/[pP].*[sS].*[lL].*[aA]/', $val_dt['tax_ext_desc']) === 1
774     // || preg_match('/[pP].*[lL].*[sS]/', $val_dt['tax_ext_desc']) === 1
775     // || preg_match('/[lL].*[lL].*[sS]/', $val_dt['tax_ext_desc']) === 1) {
776     // //
777     // $val_dt['tax_su_princ_surf3'] = $val_dt['tax_surf_tot_cstr'];
778     // $val_dt['tax_su_princ_surf_stat3'] = $val_dt['tax_surf_loc_stat'];
779     // }
780     }
781     }
782     }
783     // Cas particulier de la surface taxable démolie
784     if (isset($val_dt['tax_surf_tot_demo']) === true
785     && isset($val_dt['tax_surf_tax_demo']) === true
786     && ($val_dt['tax_surf_tot_demo'] === null
787     || $val_dt['tax_surf_tot_demo'] === '')) {
788     //
789     $val_dt['tax_surf_tot_demo'] = $val_dt['tax_surf_tax_demo'];
790     }
791 softime 9395 return $val_dt;
792     }
793    
794 softime 9984 /**
795     * Récupère la liste des objets distincts existants dans la table des liens
796     * entre identifiants internes et identifiants externes.
797     *
798     * @return array
799     */
800     protected function get_list_distinct_objects_external_link() {
801     $query = sprintf('
802     SELECT
803     DISTINCT(object)
804     FROM %1$slien_id_interne_uid_externe
805     ORDER BY object ASC
806     ',
807     DB_PREFIXE
808     );
809     $res = $this->f->get_all_results_from_db_query($query, true);
810     if ($res['code'] === 'KO') {
811     return array();
812     }
813     $result = array();
814     foreach ($res['result'] as $object) {
815     $result[] = $object['object'];
816     }
817     return $result;
818     }
819    
820 softime 9395 protected function get_external_uid($fk_idx, string $fk_idx_2) {
821 softime 9404 $inst_external_uid = $this->f->get_inst__by_other_idx(array(
822 softime 9395 "obj" => "lien_id_interne_uid_externe",
823     "fk_field" => 'object_id',
824     "fk_idx" => $fk_idx,
825     "fk_field_2" => 'object',
826     "fk_idx_2" => $fk_idx_2,
827     ));
828 softime 9404 return $inst_external_uid->getVal('external_uid');
829 softime 9395 }
830    
831 softime 9984 protected function get_all_external_uids($fk_idx, $link_objects = array()) {
832     if (count($link_objects) == 0) {
833     $link_objects = $this->get_list_distinct_objects_external_link();
834     }
835 softime 9872 $val_external_uid = array();
836     foreach ($link_objects as $link_object) {
837     $external_uid = $this->get_external_uid($fk_idx, $link_object);
838     if ($external_uid !== '' && $external_uid !== null) {
839     $val_external_uid[$link_object] = $external_uid;
840     }
841     }
842     return $val_external_uid;
843     }
844    
845 softime 9395 protected function get_demandeurs_data(string $dossier) {
846     $val_demandeur = array();
847     $inst_di = $this->f->get_inst__om_dbform(array(
848     "obj" => "dossier",
849     "idx" => $dossier,
850     ));
851     $list_demandeurs = $inst_di->get_demandeurs();
852     foreach ($list_demandeurs as $demandeur) {
853     $inst_demandeur = $this->f->get_inst__om_dbform(array(
854     "obj" => "demandeur",
855     "idx" => $demandeur['demandeur'],
856 softime 9334 ));
857 softime 9404 $val_demandeur[$demandeur['demandeur']] = $inst_demandeur->get_json_data();
858 softime 9395 $val_demandeur[$demandeur['demandeur']]['petitionnaire_principal'] = $demandeur['petitionnaire_principal'];
859 softime 9334 }
860 softime 9395 return $val_demandeur;
861     }
862    
863     protected function get_architecte_data($architecte = null) {
864 softime 9408 $val_architecte = null;
865 softime 9395 if ($architecte !== null
866     && $architecte !== '') {
867 softime 9334 //
868 softime 9395 $inst_architecte = $this->f->get_inst__om_dbform(array(
869     "obj" => "architecte",
870     "idx" => $architecte,
871 softime 9334 ));
872 softime 9404 $val_architecte = $inst_architecte->get_json_data();
873 softime 9334 }
874 softime 9395 return $val_architecte;
875     }
876 softime 9334
877 softime 9838 protected function get_instruction_data(string $dossier, $type = 'decision', $extra_params = array()) {
878 softime 9414 $val_instruction = null;
879 softime 9416 $instruction_with_doc = null;
880 softime 9395 $inst_di = $this->f->get_inst__om_dbform(array(
881     "obj" => "dossier",
882     "idx" => $dossier,
883     ));
884 softime 9457 $idx = null;
885     if ($type === 'decision') {
886     $idx = $inst_di->get_last_instruction_decision();
887     }
888     if ($type === 'incompletude') {
889     $idx = $inst_di->get_last_instruction_incompletude();
890     }
891 softime 9838 // XXX Permet de récupérer l'instruction par son identifiant
892     if ($type === 'with-id') {
893     $idx = $extra_params['with-id'];
894     }
895 softime 9395 $inst_instruction = $this->f->get_inst__om_dbform(array(
896     "obj" => "instruction",
897 softime 9457 "idx" => $idx,
898 softime 9395 ));
899     if (count($inst_instruction->val) > 0) {
900 softime 9416 $val_instruction = array();
901     $instruction_data = $inst_instruction->get_json_data();
902     $val_instruction = $this->sort_instruction_data($instruction_data, $val_instruction);
903     if ($instruction_data['om_fichier_instruction'] !== null
904     && $instruction_data['om_fichier_instruction'] !== '') {
905     //
906     $instruction_with_doc = $inst_instruction->getVal($inst_instruction->clePrimaire);
907     }
908 softime 9414 $inst_ev = $this->f->get_inst__om_dbform(array(
909     "obj" => "evenement",
910     "idx" => $inst_instruction->getVal('evenement'),
911     ));
912     if ($inst_ev->getVal('retour') === 't') {
913     $instructions_related = $inst_instruction->get_related_instructions();
914     foreach ($instructions_related as $instruction) {
915 softime 9416 if ($instruction !== null && $instruction !== '') {
916     $inst_related_instruction = $this->f->get_inst__om_dbform(array(
917     "obj" => "instruction",
918     "idx" => $instruction,
919     ));
920     $instruction_data = $inst_related_instruction->get_json_data();
921     $val_instruction = $this->sort_instruction_data($instruction_data, $val_instruction);
922     if ($instruction_data['om_fichier_instruction'] !== null
923     && $instruction_data['om_fichier_instruction'] !== '') {
924     //
925     $instruction_with_doc = $inst_related_instruction->getVal($inst_related_instruction->clePrimaire);
926     }
927     }
928 softime 9414 }
929     }
930 softime 9416 if ($instruction_with_doc !== null) {
931     //
932 softime 9480 $val_instruction['path'] = sprintf('%s&snippet=%s&obj=%s&champ=%s&id=%s', 'app/index.php?module=form', 'file', 'instruction', 'om_fichier_instruction', $instruction_with_doc);
933 softime 9416 }
934 softime 9384 }
935 softime 9395 return $val_instruction;
936     }
937 softime 9334
938 softime 9416 protected function sort_instruction_data(array $values, array $res) {
939     $fields = array(
940 softime 9838 "date_evenement",
941 softime 9416 "date_envoi_signature",
942     "date_retour_signature",
943     "date_envoi_rar",
944     "date_retour_rar",
945     "date_envoi_controle_legalite",
946     "date_retour_controle_legalite",
947     "signataire_arrete",
948     "om_fichier_instruction",
949     "tacite",
950 softime 9623 "lettretype",
951 softime 9416 );
952     foreach ($values as $key => $value) {
953     if (in_array($key, $fields) === true) {
954     if (array_key_exists($key, $res) === false
955     && $value !== null
956     && $value !== '') {
957     //
958     $res[$key] = $value;
959     } elseif ($key === 'tacite'
960     && $value === 't') {
961     //
962     $res[$key] = $value;
963     }
964     }
965     }
966     return $res;
967     }
968    
969 softime 9395 protected function get_document_numerise_data(string $dn) {
970     $val_dn = array();
971     $inst_dn = $this->f->get_inst__om_dbform(array(
972     "obj" => "document_numerise",
973     "idx" => $dn,
974     ));
975 softime 9404 $val_dn = $inst_dn->get_json_data();
976 softime 9480 $val_dn['path'] = sprintf('%s&snippet=%s&obj=%s&champ=%s&id=%s', 'app/index.php?module=form', 'file', 'document_numerise', 'uid', $this->getVal('object_id'));
977 softime 9403 // Correspond à la nomenclature Plat'AU NATURE_PIECE
978 softime 9457 $val_dn['nature'] = $val_dn['document_numerise_nature_libelle'];
979 softime 9395 return $val_dn;
980     }
981    
982 softime 9396 protected function get_parcelles_data(string $object, string $idx) {
983     $val_dp = array();
984     $inst_di = $this->f->get_inst__om_dbform(array(
985     "obj" => $object,
986     "idx" => $idx,
987     ));
988     $list_parcelles = $inst_di->get_parcelles();
989     $no_ordre = 1;
990     foreach ($list_parcelles as $parcelle) {
991     $val_dp[$parcelle[$object.'_parcelle']] = array(
992     $object.'_parcelle' => $parcelle[$object.'_parcelle'],
993     'libelle' => $parcelle['libelle'],
994     'no_ordre' => $no_ordre,
995     );
996     $no_ordre++;
997     }
998     return $val_dp;
999     }
1000    
1001 softime 9853 protected function get_avis_decision_data(string $dossier) {
1002     $inst_di = $this->f->get_inst__om_dbform(array(
1003     "obj" => "dossier",
1004     "idx" => $dossier,
1005     ));
1006     $ad = $inst_di->getVal('avis_decision');
1007     $val_ad = array();
1008 softime 10104 if ($ad !== null) {
1009     $inst_ad = $this->f->get_inst__om_dbform(array(
1010     "obj" => "avis_decision",
1011     "idx" => $ad,
1012     ));
1013     $val_ad = $inst_ad->get_json_data();
1014     $val_ad['txAvis'] = "Voir document joint";
1015     if (isset($val_ad['tacite']) === true
1016     && $val_ad['tacite'] === 't') {
1017     //
1018     $val_ad['txAvis'] = "Sans objet";
1019     }
1020 softime 9871 }
1021 softime 9853 return $val_ad;
1022     }
1023    
1024     protected function get_signataire_arrete_data(string $sa) {
1025     $inst_sa = $this->f->get_inst__om_dbform(array(
1026     "obj" => "signataire_arrete",
1027     "idx" => $sa,
1028     ));
1029     $val_sa = array_combine($inst_sa->champs, $inst_sa->val);
1030     foreach ($val_sa as $key => $value) {
1031     $val_sa[$key] = strip_tags($value);
1032     }
1033     return $val_sa;
1034     }
1035    
1036 softime 10032 // XXX WIP
1037     protected function get_consultation_data(string $consultation) {
1038     $val_consultation = array();
1039     $inst_consultation = $this->f->get_inst__om_dbform(array(
1040     "obj" => "consultation",
1041     "idx" => $consultation,
1042     ));
1043     $val_consultation = $inst_consultation->get_json_data();
1044 softime 10133 if (isset($val_consultation['fichier']) === true
1045     && $val_consultation['fichier'] !== '') {
1046     //
1047     $val_consultation['path_fichier'] = sprintf('%s&snippet=%s&obj=%s&champ=%s&id=%s', 'app/index.php?module=form', 'file', 'consultation', 'fichier', $this->getVal('object_id'));
1048     }
1049     if (isset($val_consultation['om_fichier_consultation']) === true
1050     && $val_consultation['om_fichier_consultation'] !== '') {
1051     //
1052     $val_consultation['path_om_fichier_consultation'] = sprintf('%s&snippet=%s&obj=%s&champ=%s&id=%s', 'app/index.php?module=form', 'file', 'consultation', 'om_fichier_consultation', $this->getVal('object_id'));
1053     }
1054 softime 10032 return $val_consultation;
1055     }
1056    
1057     // XXX WIP
1058     protected function get_service_data(string $service) {
1059     $val_service = array();
1060     $inst_service = $this->f->get_inst__om_dbform(array(
1061     "obj" => "service",
1062     "idx" => $service,
1063     ));
1064     $val_service = $inst_service->get_json_data();
1065     return $val_service;
1066     }
1067    
1068 gmalvolti 9604 protected function view_form_json($in_field = false) {
1069 softime 9395 //
1070 softime 9402 if ($this->f->get_submitted_post_value('valid') === null) {
1071     // Liste des valeurs à afficher
1072     $val = array();
1073 softime 9395 //
1074 softime 9402 $val_task = array_combine($this->champs, $this->val);
1075 softime 9405 foreach ($val_task as $key => $value) {
1076     $val_task[$key] = strip_tags($value);
1077     }
1078 softime 9404 $val_task['timestamp_log'] = json_decode($val_task['timestamp_log'], true);
1079 softime 9402 $val['task'] = $val_task;
1080     //
1081     if ($this->getVal('type') === 'creation_DA') {
1082     $val['dossier_autorisation'] = $this->get_dossier_autorisation_data($this->getVal('object_id'));
1083     $val['donnees_techniques'] = $this->get_donnees_techniques_data($this->getVal('object_id'), 'dossier_autorisation');
1084     $val['dossier_autorisation_parcelle'] = $this->get_parcelles_data('dossier_autorisation', $val['dossier_autorisation']['dossier_autorisation']);
1085     $val_external_uid = array();
1086     $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier_autorisation']['dossier_autorisation'], 'dossier_autorisation');
1087 gmalvolti 9751 $val['external_uids'] = $val_external_uid;
1088 softime 9402 }
1089     //
1090     if ($this->getVal('type') === 'creation_DI'
1091 softime 9417 || $this->getVal('type') === 'modification_DI'
1092     || $this->getVal('type') === 'depot_DI') {
1093 softime 9402 //
1094     $val['dossier'] = $this->get_dossier_data($this->getVal('object_id'));
1095     $val['donnees_techniques'] = $this->get_donnees_techniques_data($this->getVal('object_id'), 'dossier_instruction');
1096     $val['demandeur'] = $this->get_demandeurs_data($val['dossier']['dossier']);
1097 softime 9403 $architecte = isset($val['donnees_techniques']['architecte']) === true ? $val['donnees_techniques']['architecte'] : null;
1098     $val['architecte'] = $this->get_architecte_data($architecte);
1099 softime 9402 $val['dossier_parcelle'] = $this->get_parcelles_data('dossier', $val['dossier']['dossier']);
1100     $val_external_uid = array();
1101     $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');
1102     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');
1103 gmalvolti 9751 $val['external_uids'] = $val_external_uid;
1104 softime 9402 }
1105     //
1106     if ($this->getVal('type') === 'qualification_DI') {
1107     $val['dossier'] = $this->get_dossier_data($this->getVal('object_id'));
1108     $val_external_uid = array();
1109     $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');
1110     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');
1111 gmalvolti 9751 $val['external_uids'] = $val_external_uid;
1112 softime 9402 }
1113     //
1114     if ($this->getVal('type') === 'ajout_piece') {
1115     $val['document_numerise'] = $this->get_document_numerise_data($this->getVal('object_id'));
1116     $val['dossier'] = $this->get_dossier_data($val['document_numerise']['dossier']);
1117     $val_external_uid = array();
1118     $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');
1119     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');
1120     $val_external_uid['document_numerise'] = $this->get_external_uid($val['document_numerise']['document_numerise'], 'document_numerise');
1121 gmalvolti 9751 $val['external_uids'] = $val_external_uid;
1122 softime 9402 }
1123 softime 9414 //
1124     if ($this->getVal('type') === 'decision_DI') {
1125 softime 9853 $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
1126     $val['instruction'] = $this->get_instruction_data($val['dossier']['dossier'], 'with-id', array('with-id' => $this->getVal('object_id')));
1127 softime 9414 $val_external_uid = array();
1128     $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');
1129     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');
1130 gmalvolti 9751 $val['external_uids'] = $val_external_uid;
1131 softime 9414 }
1132 softime 9457 //
1133     if ($this->getVal('type') === 'incompletude_DI') {
1134 softime 9853 $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
1135     $val['instruction'] = $this->get_instruction_data($val['dossier']['dossier'], 'with-id', array('with-id' => $this->getVal('object_id')));
1136 softime 9457 $val_external_uid = array();
1137     $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');
1138     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');
1139 gmalvolti 9751 $val['external_uids'] = $val_external_uid;
1140 softime 9457 }
1141 softime 9479 //
1142 softime 9458 if ($this->getVal('type') === 'completude_DI') {
1143 softime 9853 $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
1144     $val['instruction'] = $this->get_instruction_data($val['dossier']['dossier'], 'with-id', array('with-id' => $this->getVal('object_id')));
1145 softime 9458 $val_external_uid = array();
1146     $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');
1147     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');
1148 gmalvolti 9751 $val['external_uids'] = $val_external_uid;
1149 softime 9458 }
1150 softime 9838 //
1151     if ($this->getVal('type') === 'pec_metier_consultation') {
1152     $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
1153     $val['instruction'] = $this->get_instruction_data($this->getVal('dossier'), 'with-id', array('with-id' => $this->getVal('object_id')));
1154     $val_external_uid = array();
1155     $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');
1156     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');
1157 softime 9950 $val_external_uid['dossier_consultation'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier_consultation');
1158 softime 9838 $val['external_uids'] = $val_external_uid;
1159     }
1160 softime 9853 //
1161     if ($this->getVal('type') === 'avis_consultation') {
1162     $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
1163     $val['instruction'] = $this->get_instruction_data($this->getVal('dossier'), 'with-id', array('with-id' => $this->getVal('object_id')));
1164     $val['avis_decision'] = $this->get_avis_decision_data($this->getVal('dossier'));
1165     if (isset($val['instruction']['signataire_arrete']) === true) {
1166     $val['signataire_arrete'] = $this->get_signataire_arrete_data($val['instruction']['signataire_arrete']);
1167     }
1168     $val_external_uid = array();
1169     $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');
1170     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');
1171 softime 9950 $val_external_uid['dossier_consultation'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier_consultation');
1172 softime 9853 $val['external_uids'] = $val_external_uid;
1173     }
1174 softime 10032 // XXX WIP
1175     if ($this->getVal('type') === 'creation_consultation') {
1176     //
1177     $val['dossier'] = $this->get_dossier_data($this->getVal('dossier'));
1178     $val['consultation'] = $this->get_consultation_data($this->getVal('object_id'));
1179     $val['service'] = $this->get_service_data($val['consultation']['service']);
1180     $val_external_uid = array();
1181     $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');
1182     $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');
1183     $val['external_uids'] = $val_external_uid;
1184     }
1185 softime 9402
1186 gmalvolti 9604 if ($in_field === true) {
1187 gmalvolti 9746 return json_encode($val, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
1188 gmalvolti 9604 } else {
1189     // Liste des valeurs affichée en JSON
1190     printf(json_encode($val, JSON_UNESCAPED_SLASHES));
1191     }
1192 softime 9395 }
1193 softime 9293 }
1194 softime 9385
1195 gmalvolti 9765 function post_update_task() {
1196 gmalvolti 9721 // Mise à jour des valeurs
1197 softime 9973
1198     // Modification de l'état de la tâche
1199     if ($this->f->get_submitted_post_value('state') !== null) {
1200     $params = array(
1201     'val' => array(
1202     'state' => $this->f->get_submitted_post_value('state')
1203     ),
1204 gmalvolti 9721 );
1205 softime 9973 $update = $this->update_task($params);
1206     $message_class = "valid";
1207     $message = $this->msg;
1208     if ($update === false) {
1209     $this->addToLog($this->msg, DEBUG_MODE);
1210     $message_class = "error";
1211     $message = sprintf(
1212     '%s %s',
1213     __('Impossible de mettre à jour la tâche.'),
1214     __('Veuillez contacter votre administrateur.')
1215     );
1216     }
1217     $this->f->displayMessage($message_class, $message);
1218 gmalvolti 9721 }
1219 softime 9950
1220 softime 9973 // Sauvegarde de l'uid externe retourné
1221     if ($this->f->get_submitted_post_value('external_uid') !== null) {
1222 softime 9950 //
1223 softime 10032 $objects = $this->get_objects_by_task_type($this->getVal('type'), $this->getVal('stream'));
1224 softime 9973 foreach ($objects as $object) {
1225     $inst_lien = $this->f->get_inst__om_dbform(array(
1226     "obj" => "lien_id_interne_uid_externe",
1227     "idx" => ']',
1228     ));
1229     if ($inst_lien->is_exists($object, $this->getVal('object_id'), $this->f->get_submitted_post_value('external_uid'), $this->getVal('dossier')) === false) {
1230     $valF = array(
1231     'lien_id_interne_uid_externe' => '',
1232     'object' => $object,
1233     'object_id' => $this->getVal('object_id'),
1234     'external_uid' => $this->f->get_submitted_post_value('external_uid'),
1235     'dossier' => $this->getVal('dossier'),
1236     );
1237     $add = $inst_lien->ajouter($valF);
1238     $message_class = "valid";
1239     $message = $inst_lien->msg;
1240     if ($add === false) {
1241     $this->addToLog($inst_lien->msg, DEBUG_MODE);
1242     $message_class = "error";
1243     $message = sprintf(
1244     '%s %s',
1245     __("Impossible de mettre à jour le lien entre l'identifiant interne et l'identifiant de l'application externe."),
1246     __('Veuillez contacter votre administrateur.')
1247 softime 9950 );
1248     }
1249 softime 9973 $this->f->displayMessage($message_class, $message);
1250 softime 9950 }
1251 gmalvolti 9840 }
1252 gmalvolti 9721 }
1253     }
1254    
1255 gmalvolti 9765 function post_add_task() {
1256 mbroquet 9776 // TODO Tester de remplacer la ligne de json_payload par un $_POST
1257 gmalvolti 9765 $result = $this->add_task(array(
1258     'val' => array(
1259     'stream' => 'input',
1260     'json_payload' => html_entity_decode($this->f->get_submitted_post_value('json_payload')),
1261     'type' => $this->f->get_submitted_post_value('type'),
1262     )
1263     ));
1264 mbideau 9955 $message = sprintf(
1265     __("Tâche %s ajoutée avec succès"),
1266     $this->getVal($this->clePrimaire)).
1267     '<br/><br/>'.
1268     $this->msg;
1269 gmalvolti 9751 $message_class = "valid";
1270     if ($result === false){
1271     $this->addToLog($this->msg, DEBUG_MODE);
1272     $message_class = "error";
1273     $message = sprintf(
1274     '%s %s',
1275     __('Impossible d\'ajouter la tâche.'),
1276     __('Veuillez contacter votre administrateur.')
1277 gmalvolti 9746 );
1278     }
1279 gmalvolti 9751 $this->f->displayMessage($message_class, $message);
1280 gmalvolti 9721 }
1281    
1282 gmalvolti 9604 function setLayout(&$form, $maj) {
1283 mbideau 9813
1284     // Récupération du mode de l'action
1285     $crud = $this->get_action_crud($maj);
1286    
1287     // MODE different de CREER
1288     if ($maj != 0 || $crud != 'create') {
1289     $form->setBloc('json_payload', 'D', '', 'col_6');
1290     $form->setFieldset('json_payload', 'DF', __("json_payload"), "collapsible, startClosed");
1291     $form->setBloc('json_payload', 'F');
1292     }
1293 gmalvolti 9604 $form->setBloc('timestamp_log', 'DF', '', 'col_9');
1294     }
1295    
1296 softime 9950 /**
1297     * [get_objects_by_task_type description]
1298     * @param [type] $type [description]
1299     * @return [type] [description]
1300     */
1301 softime 10032 function get_objects_by_task_type($type, $stream = 'all') {
1302 softime 9950 $objects = array();
1303     if (in_array($type, array('creation_DA', )) === true) {
1304     $objects = array('dossier_autorisation', );
1305     }
1306     if (in_array($type, array('creation_DI', 'depot_DI', 'notification_DI', 'qualification_DI', )) === true) {
1307     $objects = array('dossier', );
1308     }
1309     if (in_array($type, array('create_DI_for_consultation', )) === true) {
1310     $objects = array('dossier', 'dossier_consultation', );
1311     }
1312 gmalvolti 10317 if (in_array($type, array('create_DI', )) === true
1313     && $stream === 'input') {
1314     $objects = array('dossier', 'dossier_autorisation', );
1315     }
1316 softime 9950 if (in_array($type, array('decision_DI', 'incompletude_DI', 'completude_DI', )) === true) {
1317     $objects = array('instruction', );
1318     }
1319 softime 10032 if (in_array($type, array('pec_metier_consultation', )) === true
1320     && $stream === 'output') {
1321 softime 9950 $objects = array('pec_dossier_consultation', );
1322     }
1323 softime 10032 if (in_array($type, array('avis_consultation', )) === true
1324     && $stream === 'output') {
1325 softime 9950 $objects = array('avis_dossier_consultation', );
1326     }
1327     if (in_array($type, array('ajout_piece', 'add_piece', )) === true) {
1328     $objects = array('piece', );
1329     }
1330 softime 10032 if (in_array($type, array('creation_consultation', )) === true) {
1331     $objects = array('consultation', );
1332     }
1333 softime 10043 if (in_array($type, array('pec_metier_consultation', )) === true
1334 softime 10032 && $stream === 'input') {
1335 softime 10043 $objects = array('pec_metier_consultation', );
1336 softime 10032 }
1337 softime 10043 if (in_array($type, array('avis_consultation', )) === true
1338     && $stream === 'input') {
1339     $objects = array('avis_consultation', );
1340     }
1341 softime 9950 return $objects;
1342     }
1343    
1344 softime 9293 }

Properties

Name Value
svn:executable *

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26