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

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

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

revision 9297 by softime, Thu Apr 16 13:45:02 2020 UTC revision 9395 by softime, Thu May 28 15:49:28 2020 UTC
# Line 15  class task extends task_gen { Line 15  class task extends task_gen {
15          parent::init_class_actions();          parent::init_class_actions();
16          //          //
17          $this->class_actions[998] = array(          $this->class_actions[998] = array(
18              "identifier" => "view_json",              "identifier" => "json_data",
19              "view" => "view_json",              "view" => "view_json_data",
20              "permission_suffix" => "consulter",              "permission_suffix" => "consulter",
21          );          );
22      }      }
23    
24        protected function task_exists(string $type, string $object_id) {
25            $query = sprintf('
26                SELECT task
27                FROM %1$stask
28                WHERE state != \'%2$s\'
29                AND type = \'%3$s\'
30                AND object_id = \'%4$s\'
31                ',
32                DB_PREFIXE,
33                'done',
34                $type,
35                $object_id
36            );
37            $res = $this->f->get_one_result_from_db_query($query);
38            if ($res['result'] !== null && $res['result'] !== '') {
39                return $res['result'];
40            }
41            return false;
42        }
43    
44      /**      /**
45       * TREATMENT - add_task       * TREATMENT - add_task
46       * Ajoute un enregistrement.       * Ajoute un enregistrement.
# Line 38  class task extends task_gen { Line 58  class task extends task_gen {
58              'task' => '',              'task' => '',
59              'type' => $params['val']['type'],              'type' => $params['val']['type'],
60              'timestamp_log' => $timestamp_log,              'timestamp_log' => $timestamp_log,
61              'state' => 'draft',              'state' => isset($params['val']['state']) === true ? $params['val']['state'] : 'new',
62              'id' => $params['val']['id'],              'object_id' => $params['val']['object_id'],
63          );          );
64            $task_exists = $this->task_exists($valF['type'], $valF['object_id']);
65            if ($task_exists !== false) {
66                $inst_task = $this->f->get_inst__om_dbform(array(
67                    "obj" => "task",
68                    "idx" => $task_exists,
69                ));
70                $update_params = array(
71                    'val' => array(
72                        'state' => $inst_task->getVal('state'),
73                    ),
74                );
75                return $inst_task->update_task($update_params);
76            }
77          $add = $this->ajouter($valF);          $add = $this->ajouter($valF);
78          if ($add === false) {          if ($add === false) {
79              $this->addToLog($this->msg, DEBUG_MODE);              $this->addToLog($this->msg, DEBUG_MODE);
# Line 74  class task extends task_gen { Line 107  class task extends task_gen {
107              'type' => $this->getVal('type'),              'type' => $this->getVal('type'),
108              'timestamp_log' => $timestamp_log,              'timestamp_log' => $timestamp_log,
109              'state' => $params['val']['state'],              'state' => $params['val']['state'],
110              'id' => $this->getVal('id'),              'object_id' => $this->getVal('object_id'),
111          );          );
112          $update = $this->modifier($valF);          $update = $this->modifier($valF);
113          if ($update === false) {          if ($update === false) {
# Line 103  class task extends task_gen { Line 136  class task extends task_gen {
136      }      }
137    
138      /**      /**
139       * VIEW - view_json       * VIEW - view_json_data
140       * Affiche l'enregistrement dans le format JSON.       * Affiche l'enregistrement dans le format JSON.
141       *       *
142       * @return void       * @return void
143       */       */
144      public function view_json() {      public function view_json_data() {
145          $this->checkAccessibility();          $this->checkAccessibility();
146          $val = array_combine($this->champs, $this->val);          $this->f->disableLog();
147          printf(json_encode($val));          if ($this->getParameter('idx') !== ']'
148          if ($this->f->get_submitted_post_value('valid') === 'true'              && $this->getParameter('idx') !== '0') {
149              && $this->f->get_submitted_post_value('state') !== null) {              //
150                $this->view_form_json();
151            }
152            else {
153                $this->view_tab_json();
154            }
155        }
156    
157        protected function view_tab_json() {
158            $where = '';
159            if ($this->f->get_submitted_get_value('state') !== null
160                && $this->f->get_submitted_get_value('state') !== '') {
161                //
162                $where = sprintf(' WHERE state = \'%s\' ', $this->f->get_submitted_get_value('state'));
163            }
164            $query = sprintf('
165                SELECT
166                    *
167                FROM %1$stask
168                %2$s
169                ',
170                DB_PREFIXE,
171                $where
172            );
173            $res = $this->f->get_all_results_from_db_query($query, true);
174            if ($res['code'] === 'KO') {
175                return false;
176            }
177            $list_tasks = array();
178            foreach ($res['result'] as $task) {
179                $list_tasks[$task['task']] = $task;
180            }
181            printf(json_encode($list_tasks));
182        }
183    
184        protected function get_dossier_data(string $dossier) {
185            $val_di = array();
186            $inst_di = $this->f->get_inst__om_dbform(array(
187                "obj" => "dossier",
188                "idx" => $dossier,
189            ));
190            $val_di = json_decode($inst_di->get_json_data(), true);
191            unset($val_di['initial_dt']);
192            unset($val_di['log_instructions']);
193            return $val_di;
194        }
195    
196        protected function get_dossier_autorisation_data(string $da) {
197            $val_da = array();
198            $inst_da = $this->f->get_inst__om_dbform(array(
199                "obj" => "dossier_autorisation",
200                "idx" => $da,
201            ));
202            $val_da = json_decode($inst_da->get_json_data(), true);
203            return $val_da;
204        }
205    
206        protected function get_donnees_techniques_data(string $fk_idx, string $fk_field) {
207            $val_dt = array();
208            $inst_dt = $this->f->get_inst__by_other_idx(array(
209                "obj" => "donnees_techniques",
210                "fk_field" => $fk_field,
211                "fk_idx" => $fk_idx,
212            ));
213            $val_dt = array(
214                'donnees_techniques' => $inst_dt->getVal($inst_dt->clePrimaire),
215                'cerfa' => $inst_dt->getVal('cerfa'),
216            );
217            $val_dt = array_merge($val_dt, $inst_dt->get_donnees_techniques_applicables());
218            return $val_dt;
219        }
220    
221        protected function get_external_uid($fk_idx, string $fk_idx_2) {
222            $inst_external_uid_da = $this->f->get_inst__by_other_idx(array(
223                "obj" => "lien_id_interne_uid_externe",
224                "fk_field" => 'object_id',
225                "fk_idx" => $fk_idx,
226                "fk_field_2" => 'object',
227                "fk_idx_2" => $fk_idx_2,
228            ));
229            return $inst_external_uid_da->getVal('external_uid');
230        }
231    
232        protected function get_demandeurs_data(string $dossier) {
233            $val_demandeur = array();
234            $inst_di = $this->f->get_inst__om_dbform(array(
235                "obj" => "dossier",
236                "idx" => $dossier,
237            ));
238            $list_demandeurs = $inst_di->get_demandeurs();
239            foreach ($list_demandeurs as $demandeur) {
240                $inst_demandeur = $this->f->get_inst__om_dbform(array(
241                    "obj" => "demandeur",
242                    "idx" => $demandeur['demandeur'],
243                ));
244                $val_demandeur[$demandeur['demandeur']] = json_decode($inst_demandeur->get_json_data(), true);
245                $val_demandeur[$demandeur['demandeur']]['petitionnaire_principal'] = $demandeur['petitionnaire_principal'];
246            }
247            return $val_demandeur;
248        }
249    
250        protected function get_architecte_data($architecte = null) {
251            $val_architecte = array();
252            if ($architecte !== null
253                && $architecte !== '') {
254                //
255                $inst_architecte = $this->f->get_inst__om_dbform(array(
256                    "obj" => "architecte",
257                    "idx" => $architecte,
258                ));
259                $val_architecte = json_decode($inst_architecte->get_json_data(), true);
260            }
261            return $val_architecte;
262        }
263    
264        protected function get_instruction_data(string $dossier) {
265            $val_instruction = array();
266            $inst_di = $this->f->get_inst__om_dbform(array(
267                "obj" => "dossier",
268                "idx" => $dossier,
269            ));
270            $inst_instruction = $this->f->get_inst__om_dbform(array(
271                "obj" => "instruction",
272                "idx" => $inst_di->get_last_instruction_decision(),
273            ));
274            if (count($inst_instruction->val) > 0) {
275                $val_instruction = json_decode($inst_instruction->get_json_data(), true);
276            }
277            return $val_instruction;
278        }
279    
280        protected function get_document_numerise_data(string $dn) {
281            $val_dn = array();
282            $inst_dn = $this->f->get_inst__om_dbform(array(
283                "obj" => "document_numerise",
284                "idx" => $dn,
285            ));
286            $val_dn = json_decode($inst_dn->get_json_data(), true);
287            $val_dn['path'] = sprintf('%s/%s&snippet=%s&obj=%s&champ=%s&id=%s', $_SERVER['HTTP_HOST'], 'openads/app/index.php?module=form', 'file', 'document_numerise', 'uid', $this->getVal('object_id'));
288            return $val_dn;
289        }
290    
291        protected function view_form_json() {
292            // Mise à jour des valeurs
293            if ($this->f->get_submitted_get_value('valid') === 'true'
294                && $this->f->get_submitted_get_value('state') !== null) {
295              //              //
296              $params = array(              $params = array(
297                  'val' => array(                  'val' => array(
298                      'state' => $this->f->get_submitted_post_value('state')                      'state' => $this->f->get_submitted_get_value('state')
299                  ),                  ),
300              );              );
301              $update = $this->update_task($params);              $update = $this->update_task($params);
# Line 134  class task extends task_gen { Line 312  class task extends task_gen {
312              }              }
313              $this->f->displayMessage($message_class, $message);              $this->f->displayMessage($message_class, $message);
314          }          }
315            //
316            if ($this->f->get_submitted_get_value('valid') === 'true'
317                && $this->f->get_submitted_get_value('external_uid') !== null) {
318                //
319                $inst_lien = $this->f->get_inst__om_dbform(array(
320                    "obj" => "lien_id_interne_uid_externe",
321                    "idx" => ']',
322                ));
323                $valF = array(
324                    'lien_id_interne_uid_externe' => '',
325                    'object' => $this->get_lien_objet_by_type($this->getVal('type')),
326                    'object_id' => $this->getVal('object_id'),
327                    'external_uid' => $this->f->get_submitted_get_value('external_uid'),
328                );
329                $add = $inst_lien->ajouter($valF);
330                $message_class = "valid";
331                $message = $inst_lien->msg;
332                if ($add === false) {
333                    $this->addToLog($inst_lien->msg, DEBUG_MODE);
334                    $message_class = "error";
335                    $message = sprintf(
336                        '%s %s',
337                        __("Impossible de mettre à jour le lien entre l'identifiant interne et l'identifiant de l'application externe."),
338                        __('Veuillez contacter votre administrateur.')
339                    );
340                }
341                $this->f->displayMessage($message_class, $message);
342            }
343    
344            // Liste des valeurs à afficher
345            $val = array();
346            //
347            $val_task = array_combine($this->champs, $this->val);
348            $val['task'] = $val_task;
349            //
350            if ($this->getVal('type') === 'creation_DA') {
351                $val['dossier_autorisation'] = $this->get_dossier_autorisation_data($this->getVal('object_id'));
352                $val['donnees_techniques'] = $this->get_donnees_techniques_data($this->getVal('object_id'), 'dossier_autorisation');
353                $val_external_uid = array();
354                $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier_autorisation']['dossier_autorisation'], 'dossier_autorisation');
355                $val['external_uid'] = $val_external_uid;
356            }
357            //
358            if ($this->getVal('type') === 'creation_DI'
359                || $this->getVal('type') === 'modification_DI') {
360                //
361                $val['dossier'] = $this->get_dossier_data($this->getVal('object_id'));
362                $val['donnees_techniques'] = $this->get_donnees_techniques_data($this->getVal('object_id'), 'dossier_instruction');
363                $val['demandeur'] = $this->get_demandeurs_data($val['dossier']['dossier']);
364                $val['architecte'] = $this->get_architecte_data($val['donnees_techniques']['architecte']);
365                $val_external_uid = array();
366                $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');
367                $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');
368                $val['external_uid'] = $val_external_uid;
369            }
370            //
371            if ($this->getVal('type') === 'qualification_DI') {
372                $val['dossier'] = $this->get_dossier_data($this->getVal('object_id'));
373                $val['instruction'] = $this->get_instruction_data($val['dossier']['dossier']);
374                $val_external_uid = array();
375                $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');
376                $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');
377                $val['external_uid'] = $val_external_uid;
378            }
379            //
380            if ($this->getVal('type') === 'ajout_piece') {
381                $val['document_numerise'] = $this->get_document_numerise_data($this->getVal('object_id'));
382                $val['dossier'] = $this->get_dossier_data($val['document_numerise']['dossier']);
383                $val_external_uid = array();
384                $val_external_uid['dossier_autorisation'] = $this->get_external_uid($val['dossier']['dossier_autorisation'], 'dossier_autorisation');
385                $val_external_uid['dossier'] = $this->get_external_uid($val['dossier']['dossier'], 'dossier');
386                $val_external_uid['document_numerise'] = $this->get_external_uid($val['document_numerise']['document_numerise'], 'document_numerise');
387                $val['external_uid'] = $val_external_uid;
388            }
389    
390            // Liste des valeurs affichée en JSON
391            printf(json_encode($val));
392        }
393    
394        protected function get_lien_objet_by_type($type) {
395            //
396            $objet = '';
397            if ($type === 'creation_DA') {
398                $objet = 'dossier_autorisation';
399            }
400            if ($type === 'creation_DI' || $type = 'modification_DI') {
401                $objet = 'dossier';
402            }
403            if ($type === 'ajout_piece') {
404                $objet = 'document_numerise';
405            }
406            return $objet;
407      }      }
408  }  }

Legend:
Removed from v.9297  
changed lines
  Added in v.9395

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26