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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

Properties

Name Value
svn:executable *

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26