Blame view

src/Controller/SuivisController.php 19.5 KB
6c4edfa3   Alexandre   First Commit LabI...
1
2
3
4
<?php
namespace App\Controller;

use App\Controller\AppController;
19798ef9   Alexandre   Mode_install, maj...
5
use Cake\ORM\TableRegistry;
6c4edfa3   Alexandre   First Commit LabI...
6
7
8
9
10
11

/**
 * Suivis Controller
 *
 * @property \App\Model\Table\SuivisTable $Suivis
 */
63c3cb16   epallier   Nombreux petits b...
12
13
class SuivisController extends AppController
{
2389dbd8   Thibaud Ajas   bugfixes lies au ...
14
15
16
17
18
19
20

    /**
     *
     * @param $user Give
     *            authorization for suivis
     * @return boolean
     */
63c3cb16   epallier   Nombreux petits b...
21
22
23
    public function isAuthorized($user)
    {
        // $configuration = $this->confLabinvent;
f084c88b   Etienne Pallier   Gros bugfix + sim...
24
        /*
63c3cb16   epallier   Nombreux petits b...
25
26
27
28
29
30
31
         * $role = TableRegistry::get('Users')->find()
         * ->where([
         * 'username' => $user[$configuration->authentificationType_ldap][0]
         * ])
         * ->first()['role'];
         * $action = $this->request->getAttribute('params')['action'];
         */
f084c88b   Etienne Pallier   Gros bugfix + sim...
32
33
34
        $action = $this->getActionPassed();
        $role = $this->getUserRole($user);
        
63c3cb16   epallier   Nombreux petits b...
35
36
37
        // if ($this->userHasRoleAtLeast('Administration'))
        if ($this->USER_IS_ADMIN_AT_LEAST())
            return true;
f084c88b   Etienne Pallier   Gros bugfix + sim...
38
        
2389dbd8   Thibaud Ajas   bugfixes lies au ...
39
40
41
42
43
        // Pour un "utilisateur"
        if (in_array($action, [
            'edit',
            'delete'
        ])) {
63c3cb16   epallier   Nombreux petits b...
44
            // $id = (int) $this->request->getAttribute('params')['pass'][0];
f084c88b   Etienne Pallier   Gros bugfix + sim...
45
            $id = $this->getIdPassed();
2389dbd8   Thibaud Ajas   bugfixes lies au ...
46
47
            if ($this->isOwnedBy($id, $user['sn'][0] . ' ' . $user['givenname'][0]))
                return true;
a5276c81   Etienne Pallier   ajout du mode lda...
48
            if ($role == 'Responsable' && $this->isRespGroup($id, $user[$configuration->ldap_authenticationType][0]))
2389dbd8   Thibaud Ajas   bugfixes lies au ...
49
50
                return true;
        }
2389dbd8   Thibaud Ajas   bugfixes lies au ...
51
52
53
        return parent::isAuthorized($user);
    }

63c3cb16   epallier   Nombreux petits b...
54
55
    public function isOwnedBy($id, $nomCreateur)
    {
2389dbd8   Thibaud Ajas   bugfixes lies au ...
56
57
58
59
60
61
        return $this->Suivis->exists([
            'id' => $id,
            'nom_createur' => $nomCreateur
        ]);
    }

63c3cb16   epallier   Nombreux petits b...
62
63
    public function isRespGroup($id, $loginResponsable)
    {
2389dbd8   Thibaud Ajas   bugfixes lies au ...
64
65
66
67
68
        $u = TableRegistry::get('Users')->find()
            ->where([
            'username' => $loginResponsable
        ])
            ->first();
63c3cb16   epallier   Nombreux petits b...
69
        if ($u['groupes_metier_id'] !== null && $u['groupes_metier_id'] != TableRegistry::get('GroupesMetiers')->find()
2389dbd8   Thibaud Ajas   bugfixes lies au ...
70
71
72
73
74
75
76
77
            ->where([
            'nom =' => 'N/A'
        ])
            ->first()['id']) {
            return ($this->Suivis->exists([
                'id' => $id,
                'groupes_metier_id' => $u['groupes_metier_id']
            ]));
63c3cb16   epallier   Nombreux petits b...
78
        } else if ($u['groupe_thematique_id'] !== null && $u['groupe_thematique_id'] != TableRegistry::get('GroupesThematiques')->find()
2389dbd8   Thibaud Ajas   bugfixes lies au ...
79
80
81
82
83
84
85
86
87
88
89
90
91
            ->where([
            'nom =' => 'N/A'
        ])
            ->first()['id']) {
            return ($this->Suivis->exists([
                'id' => $id,
                'groupes_thematique_id' => $u['groupe_thematique_id']
            ]));
        } else {
            return false;
        }
    }

6c4edfa3   Alexandre   First Commit LabI...
92
93
94
95
96
    /**
     * Index method
     *
     * @return \Cake\Network\Response|null
     */
63c3cb16   epallier   Nombreux petits b...
97
98
    public function index()
    {
2389dbd8   Thibaud Ajas   bugfixes lies au ...
99
        $condition = '';
a0fefb3d   Thibaud Ajas   bugfixes suite au...
100
101
102
103
        $GM = $this->request->getQuery('GM');
        $GT = $this->request->getQuery('GT');
        if ($GM !== null || $GT !== null) {
            if ($GM !== null && $GM != TableRegistry::get('GroupesMetiers')->find()
2389dbd8   Thibaud Ajas   bugfixes lies au ...
104
105
106
107
108
109
110
                ->where([
                'nom =' => 'N/A'
            ])
                ->first()['id']) {
                $condition = [
                    'Suivis.groupes_metier_id =' => $GM
                ];
63c3cb16   epallier   Nombreux petits b...
111
            } else if ($GT !== null && $GT != TableRegistry::get('GroupesThematiques')->find()
2389dbd8   Thibaud Ajas   bugfixes lies au ...
112
113
114
115
116
117
118
119
120
121
122
123
124
                ->where([
                'nom =' => 'N/A'
            ])
                ->first()['id']) {
                $condition = [
                    'Suivis.groupes_thematique_id =' => $GT
                ];
            } else {
                $condition = [
                    'Suivis.id =' => 0
                ];
            }
        }
6c4edfa3   Alexandre   First Commit LabI...
125
        $this->paginate = [
2389dbd8   Thibaud Ajas   bugfixes lies au ...
126
127
128
129
            'contain' => [
                'Materiels',
                'TypeSuivis'
            ]
6c4edfa3   Alexandre   First Commit LabI...
130
        ];
2389dbd8   Thibaud Ajas   bugfixes lies au ...
131
132
133
        $suivis = $this->paginate($this->Suivis->find('all', [
            'conditions' => $condition
        ]));
2389dbd8   Thibaud Ajas   bugfixes lies au ...
134
135
136
137
        $this->set('nbSuivis', $this->Suivis->find('all', [
            'conditions' => $condition
        ])
            ->count());
6c4edfa3   Alexandre   First Commit LabI...
138
        $this->set(compact('suivis'));
2389dbd8   Thibaud Ajas   bugfixes lies au ...
139
140
141
        $this->set('_serialize', [
            'suivis'
        ]);
6c4edfa3   Alexandre   First Commit LabI...
142
143
144
145
146
    }

    /**
     * View method
     *
2389dbd8   Thibaud Ajas   bugfixes lies au ...
147
148
     * @param string|null $id
     *            Suivi id.
6c4edfa3   Alexandre   First Commit LabI...
149
150
151
     * @return \Cake\Network\Response|null
     * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
     */
63c3cb16   epallier   Nombreux petits b...
152
153
    public function view($id = null)
    {
6c4edfa3   Alexandre   First Commit LabI...
154
        $suivi = $this->Suivis->get($id, [
2389dbd8   Thibaud Ajas   bugfixes lies au ...
155
156
157
158
159
160
161
162
163
            'contain' => [
                'Materiels',
                'Documents',
                'TypeSuivis',
                'GroupesThematiques',
                'GroupesMetiers',
                'Unites',
                'Fichemetrologiques'
            ]
6c4edfa3   Alexandre   First Commit LabI...
164
        ]);
9b4da83b   Alexandre   Version: 2.5.0.0
165
        $typeDocuments = TableRegistry::get('TypeDocuments');
2389dbd8   Thibaud Ajas   bugfixes lies au ...
166
167
        $fichemet = TableRegistry::get('Fichemetrologiques')->find('all', [
            'conditions' => [
a0fefb3d   Thibaud Ajas   bugfixes suite au...
168
                'suivi_id' => $this->request->getAttribute('params')['pass'][0]
2389dbd8   Thibaud Ajas   bugfixes lies au ...
169
170
171
            ],
            'order' => ('id DESC')
        ]);
a0fefb3d   Thibaud Ajas   bugfixes suite au...
172
        if ($fichemet === null)
2389dbd8   Thibaud Ajas   bugfixes lies au ...
173
174
175
            $fiche = $fichemet->first();
        else
            $fiche = null;
9b4da83b   Alexandre   Version: 2.5.0.0
176
        $this->set('typeDocuments', $typeDocuments);
6c4edfa3   Alexandre   First Commit LabI...
177
        $this->set('suivi', $suivi);
2389dbd8   Thibaud Ajas   bugfixes lies au ...
178
179
180
        $this->set('fiche', $fiche);
        $this->set('_serialize', [
            'suivi'
6c4edfa3   Alexandre   First Commit LabI...
181
        ]);
6c4edfa3   Alexandre   First Commit LabI...
182
183
184
185
186
187
188
    }

    /**
     * Add method
     *
     * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise.
     */
63c3cb16   epallier   Nombreux petits b...
189
190
    public function add()
    {
6c4edfa3   Alexandre   First Commit LabI...
191
192
193
        $suivi = $this->Suivis->newEntity();
        if ($this->request->is('post')) {
            $suivi = $this->Suivis->patchEntity($suivi, $this->request->data);
a0fefb3d   Thibaud Ajas   bugfixes suite au...
194
            if ($this->request->getData('typemesure') !== null && $this->request->getData('typemesure') == "1")
2389dbd8   Thibaud Ajas   bugfixes lies au ...
195
                $suivi->typemesure = "Indirect";
3ef8f907   Alexandre   Version: 2.4.5.0
196
            $suivi->panne_resolu = false;
6c4edfa3   Alexandre   First Commit LabI...
197
            if ($this->Suivis->save($suivi)) {
3601f4f5   Alexandre   Traduction messag...
198
                $this->Flash->success(__('Le suivi a bien été ajouté.'));
2389dbd8   Thibaud Ajas   bugfixes lies au ...
199
200
201
                return $this->redirect([
                    'controller' => 'Materiels',
                    'action' => 'view',
a0fefb3d   Thibaud Ajas   bugfixes suite au...
202
                    $this->request->getAttribute('params')['pass'][0]
2389dbd8   Thibaud Ajas   bugfixes lies au ...
203
                ]);
6c4edfa3   Alexandre   First Commit LabI...
204
            } else {
3601f4f5   Alexandre   Traduction messag...
205
                $this->Flash->error(__('Le suivi n\'a pas pu être ajouté.'));
2389dbd8   Thibaud Ajas   bugfixes lies au ...
206
207
208
                return $this->redirect([
                    'controller' => 'Materiels',
                    'action' => 'view',
a0fefb3d   Thibaud Ajas   bugfixes suite au...
209
                    $this->request->getAttribute('params')['pass'][0]
2389dbd8   Thibaud Ajas   bugfixes lies au ...
210
                ]);
6c4edfa3   Alexandre   First Commit LabI...
211
212
            }
        }
19798ef9   Alexandre   Mode_install, maj...
213
        $materiels = $this->Suivis->Materiels->find('list');
2389dbd8   Thibaud Ajas   bugfixes lies au ...
214
215
216
217
218
219
220
221
222
223
224
225
226
        $unite = TableRegistry::get('Unites')->find('list', [
            'keyfield' => 'id',
            'valueField' => 'nom'
        ]);
        $formule = TableRegistry::get('Formules')->find('list', [
            'keyfield' => 'id',
            'valueField' => 'formule'
        ]);
        $formules = TableRegistry::get('Formules')->find('all');
        // Le materiel est-il suivi en métrologie ou non ?
        $metro = TableRegistry::get('Materiels')->find()
            ->select('metrologie')
            ->where([
a0fefb3d   Thibaud Ajas   bugfixes suite au...
227
            'id =' => $this->request->getAttribute('params')['pass'][0]
2389dbd8   Thibaud Ajas   bugfixes lies au ...
228
229
        ])
            ->first()['metrologie'];
5973ba4e   Alexis Proust   mise a jour fichier
230
        $variables = TableRegistry::get('Variables')->find('list')->toArray();
2389dbd8   Thibaud Ajas   bugfixes lies au ...
231
232
        $materiel = $this->Suivis->Materiels->find()
            ->where([
a0fefb3d   Thibaud Ajas   bugfixes suite au...
233
            'id =' => $this->request->getAttribute('params')['pass'][0]
2389dbd8   Thibaud Ajas   bugfixes lies au ...
234
235
236
        ])
            ->first();
        // $domaineresp= TableRegistry::get('Users')->find()->select('sur_categorie_id')->where(['username =' => $this->LdapAuth->user($this->request->session()->read('authType'))[0]])->first()['sur_categorie_id'];
2389dbd8   Thibaud Ajas   bugfixes lies au ...
237
238
239
240
241
242
243
244
245
246
247
        if ($metro == 1) {
            $typeSuivis = $this->Suivis->TypeSuivis->find('list', [
                'keyField' => 'id',
                'valueField' => 'nom'
            ]);
        } else {
            $typeSuivis = $this->Suivis->TypeSuivis->find('list', [
                'keyField' => 'id',
                'valueField' => 'nom',
                'conditions' => [
                    'AND' => [
e7797d3d   Thibaud Ajas   fin des bugfixes ...
248
                        'nom !=' => 'Vérification métrologique'
2389dbd8   Thibaud Ajas   bugfixes lies au ...
249
250
251
                    ]
                ]
            ]);
5973ba4e   Alexis Proust   mise a jour fichier
252
        }
2389dbd8   Thibaud Ajas   bugfixes lies au ...
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
        $dom = TableRegistry::get('Materiels')->find()
            ->select('sur_categorie_id')
            ->where([
            'id =' => $materiel->id
        ])
            ->first()['sur_categorie_id'];
        $domaines = TableRegistry::get('Users')->find()
            ->select('sur_categorie_id')
            ->where([
            'username =' => $this->LdapAuth->user($this->request->session()
                ->read('authType'))[0]
        ])
            ->first()['sur_categorie_id'];
        if ($dom == $domaines)
            $domaineresp = true;
        else
            $domaineresp = false;
2389dbd8   Thibaud Ajas   bugfixes lies au ...
270
271
272
273
274
275
276
277
278
279
        $groupesThematiques = $this->Suivis->GroupesThematiques->find('list', [
            'keyField' => 'id',
            'valueField' => 'nom',
            'order' => 'GroupesThematiques.nom'
        ]);
        $groupesMetiers = $this->Suivis->GroupesMetiers->find('list', [
            'keyField' => 'id',
            'valueField' => 'nom',
            'order' => 'GroupesMetiers.nom'
        ]);
2389dbd8   Thibaud Ajas   bugfixes lies au ...
280
281
282
283
        $this->set(compact('variables', 'formule', 'formules', 'unite', 'domaineresp', 'suivi', 'materiels', 'typeSuivis', 'materiel', 'groupesThematiques', 'groupesMetiers'));
        $this->set('_serialize', [
            'suivi'
        ]);
6c4edfa3   Alexandre   First Commit LabI...
284
285
286
287
288
    }

    /**
     * Edit method
     *
2389dbd8   Thibaud Ajas   bugfixes lies au ...
289
290
     * @param string|null $id
     *            Suivi id.
6c4edfa3   Alexandre   First Commit LabI...
291
292
293
     * @return \Cake\Network\Response|void Redirects on successful edit, renders view otherwise.
     * @throws \Cake\Network\Exception\NotFoundException When record not found.
     */
63c3cb16   epallier   Nombreux petits b...
294
295
    public function edit($id = null)
    {
6c4edfa3   Alexandre   First Commit LabI...
296
297
298
        $suivi = $this->Suivis->get($id, [
            'contain' => []
        ]);
2389dbd8   Thibaud Ajas   bugfixes lies au ...
299
300
301
302
303
        if ($this->request->is([
            'patch',
            'post',
            'put'
        ])) {
6c4edfa3   Alexandre   First Commit LabI...
304
305
            $suivi = $this->Suivis->patchEntity($suivi, $this->request->data);
            if ($this->Suivis->save($suivi)) {
3601f4f5   Alexandre   Traduction messag...
306
                $this->Flash->success(__('Le suivi a bien été édité.'));
2389dbd8   Thibaud Ajas   bugfixes lies au ...
307
308
309
310
                return $this->redirect([
                    'action' => 'index',
                    $id
                ]);
6c4edfa3   Alexandre   First Commit LabI...
311
            } else {
3601f4f5   Alexandre   Traduction messag...
312
                $this->Flash->error(__('Le suivi n\'a pas pu être édité.'));
6c4edfa3   Alexandre   First Commit LabI...
313
314
            }
        }
19798ef9   Alexandre   Mode_install, maj...
315
        $materiels = $this->Suivis->Materiels->find('list');
2389dbd8   Thibaud Ajas   bugfixes lies au ...
316
317
318
319
320
321
322
323
324
        $materiel = $this->Suivis->Materiels->find()
            ->where([
            'id =' => $suivi->materiel_id
        ])
            ->first();
        $unite = TableRegistry::get('Unites')->find('list', [
            'keyfield' => 'id',
            'valueField' => 'nom'
        ]);
2389dbd8   Thibaud Ajas   bugfixes lies au ...
325
326
327
328
329
330
331
332
333
334
335
336
        $numMateriel = $this->Suivis->Materiels->find()
            ->select('numero_laboratoire')
            ->where([
            'id =' => $suivi->get('materiel_id')
        ])
            ->first()['numero_laboratoire'];
        $metro = TableRegistry::get('Materiels')->find()
            ->select('metrologie')
            ->where([
            'id =' => $suivi->materiel_id
        ])
            ->first()['metrologie'];
2389dbd8   Thibaud Ajas   bugfixes lies au ...
337
338
339
340
        $typeSuivis = $this->Suivis->TypeSuivis->find('list', [
            'keyField' => 'id',
            'valueField' => 'nom'
        ]);
2389dbd8   Thibaud Ajas   bugfixes lies au ...
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
        $groupesThematiques = $this->Suivis->GroupesThematiques->find('list', [
            'keyField' => 'id',
            'valueField' => 'nom',
            'order' => 'GroupesThematiques.nom'
        ]);
        $groupesMetiers = $this->Suivis->GroupesMetiers->find('list', [
            'keyField' => 'id',
            'valueField' => 'nom',
            'order' => 'GroupesMetiers.nom'
        ]);
        if ($metro == 1) {
            $typeSuivis = $this->Suivis->TypeSuivis->find('list', [
                'keyField' => 'id',
                'valueField' => 'nom'
            ]);
        } else {
            $typeSuivis = $this->Suivis->TypeSuivis->find('list', [
                'keyField' => 'id',
                'valueField' => 'nom',
                'conditions' => [
                    'AND' => [
                        [
                            'id !=' => '4'
                        ],
                        [
                            'id !=' => '5'
                        ],
                        [
                            'id !=' => '6'
                        ]
                    ]
                ]
            ]);
5973ba4e   Alexis Proust   mise a jour fichier
374
        }
2389dbd8   Thibaud Ajas   bugfixes lies au ...
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
        $dom = TableRegistry::get('Materiels')->find()
            ->select('sur_categorie_id')
            ->where([
            'id =' => $suivi->materiel_id
        ])
            ->first()['sur_categorie_id'];
        $domaines = TableRegistry::get('Users')->find()
            ->select('sur_categorie_id')
            ->where([
            'username =' => $this->LdapAuth->user($this->request->session()
                ->read('authType'))[0]
        ])
            ->first()['sur_categorie_id'];
        if ($dom == $domaines)
            $domaineresp = true;
        else
            $domaineresp = false;
2389dbd8   Thibaud Ajas   bugfixes lies au ...
392
393
394
395
        $this->set(compact('unite', 'metro', 'domaineresp', 'suivi', 'materiel', 'materiels', 'typeSuivis', 'numMateriel', 'groupesThematiques', 'groupesMetiers'));
        $this->set('_serialize', [
            'suivi'
        ]);
6c4edfa3   Alexandre   First Commit LabI...
396
397
398
399
400
    }

    /**
     * Delete method
     *
2389dbd8   Thibaud Ajas   bugfixes lies au ...
401
402
     * @param string|null $id
     *            Suivi id.
6c4edfa3   Alexandre   First Commit LabI...
403
404
405
     * @return \Cake\Network\Response|null Redirects to index.
     * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
     */
63c3cb16   epallier   Nombreux petits b...
406
407
    public function delete($id = null)
    {
2389dbd8   Thibaud Ajas   bugfixes lies au ...
408
409
410
411
        $this->request->allowMethod([
            'post',
            'delete'
        ]);
6c4edfa3   Alexandre   First Commit LabI...
412
        $suivi = $this->Suivis->get($id);
5b54a286   mimelhaine   Version master pe...
413
        $id=$suivi->materiel_id;
6c4edfa3   Alexandre   First Commit LabI...
414
        if ($this->Suivis->delete($suivi)) {
3601f4f5   Alexandre   Traduction messag...
415
            $this->Flash->success(__('Le suivi a bien été supprimé.'));
6c4edfa3   Alexandre   First Commit LabI...
416
        } else {
3601f4f5   Alexandre   Traduction messag...
417
            $this->Flash->error(__('Le suivi n\'a pas pu être supprimé.'));
6c4edfa3   Alexandre   First Commit LabI...
418
        }
2389dbd8   Thibaud Ajas   bugfixes lies au ...
419
        return $this->redirect([
5b54a286   mimelhaine   Version master pe...
420
421
422
        	'controller' => 'materiels',
            'action' => 'view',
        		$id
2389dbd8   Thibaud Ajas   bugfixes lies au ...
423
        ]);
6c4edfa3   Alexandre   First Commit LabI...
424
    }
2389dbd8   Thibaud Ajas   bugfixes lies au ...
425

e9a0cc56   Alexandre   Version: 2.4.6.0
426
427
428
429
430
431
    /**
     * GetConditionForField method
     *
     * @param unknown $fieldName
     * @return string[]|NULL
     */
63c3cb16   epallier   Nombreux petits b...
432
433
    private function getConditionForField($fieldName)
    {
2389dbd8   Thibaud Ajas   bugfixes lies au ...
434
        $searchFieldName = 's_' . $fieldName;
a0fefb3d   Thibaud Ajas   bugfixes suite au...
435
        if ($this->request->getData($searchFieldName) !== null && ($this->request->getData($searchFieldName) != ''))
2389dbd8   Thibaud Ajas   bugfixes lies au ...
436
            return [
a0fefb3d   Thibaud Ajas   bugfixes suite au...
437
                "Suivis.$fieldName LIKE" => '%' . $this->request->getData($searchFieldName) . '%'
2389dbd8   Thibaud Ajas   bugfixes lies au ...
438
439
            ];
        return NULL;
e9a0cc56   Alexandre   Version: 2.4.6.0
440
    }
2389dbd8   Thibaud Ajas   bugfixes lies au ...
441

e9a0cc56   Alexandre   Version: 2.4.6.0
442
443
444
445
446
447
    /**
     * GetConditionForFieldNumber method
     *
     * @param unknown $fieldName
     * @return $string[]|NULL
     */
63c3cb16   epallier   Nombreux petits b...
448
449
    private function getConditionForFieldNumber($fieldName)
    {
2389dbd8   Thibaud Ajas   bugfixes lies au ...
450
        $searchFieldName = 's_' . $fieldName;
a0fefb3d   Thibaud Ajas   bugfixes suite au...
451
        if ($this->request->getData($searchFieldName) !== null && ($this->request->getData($searchFieldName) != ''))
2389dbd8   Thibaud Ajas   bugfixes lies au ...
452
            return [
a0fefb3d   Thibaud Ajas   bugfixes suite au...
453
                "Suivis.$fieldName =" => $this->request->getData($searchFieldName)
2389dbd8   Thibaud Ajas   bugfixes lies au ...
454
455
            ];
        return NULL;
e9a0cc56   Alexandre   Version: 2.4.6.0
456
    }
2389dbd8   Thibaud Ajas   bugfixes lies au ...
457

e9a0cc56   Alexandre   Version: 2.4.6.0
458
459
460
    /**
     * Find method
     */
63c3cb16   epallier   Nombreux petits b...
461
462
    public function find()
    {
2389dbd8   Thibaud Ajas   bugfixes lies au ...
463
464
465
466
467
468
469
470
471
472
473
474
        $s_groupes_thematiques = $this->Suivis->GroupesThematiques->find('list', [
            'keyField' => 'id',
            'valueField' => 'nom',
            'order' => 'GroupesThematiques.nom'
        ]);
        $s_groupes_metiers = $this->Suivis->GroupesMetiers->find('list', [
            'keyField' => 'id',
            'valueField' => 'nom',
            'order' => 'GroupesMetiers.nom'
        ]);
        $s_type_suivis = $this->Suivis->TypeSuivis;
        $materiels = $this->Suivis->Materiels;
2389dbd8   Thibaud Ajas   bugfixes lies au ...
475
        $this->set(compact('s_groupes_thematiques', 's_groupes_metiers', 's_type_suivis', 'materiels'));
2389dbd8   Thibaud Ajas   bugfixes lies au ...
476
        $resultTri = $this->request->session()->read("resultTri");
2389dbd8   Thibaud Ajas   bugfixes lies au ...
477
478
        if ($this->request->is('post')) {
            $specificFieldsConditions = NULL;
2389dbd8   Thibaud Ajas   bugfixes lies au ...
479
480
            $periode_interventionRequest = NULL;
            $date_intervention = NULL;
a0fefb3d   Thibaud Ajas   bugfixes suite au...
481
482
483
484
485
486
            if ($this->request->getData('s_periode_controle1') != '')
                $periode_interventionRequest['Suivis.date_controle >='] = date('Y-m-d', strtotime(str_replace('/', '-', $this->request->getData('s_periode_controle1'))));
            if ($this->request->getData('s_periode_controle2') != '')
                $periode_interventionRequest['Suivis.date_controle <='] = date('Y-m-d', strtotime(str_replace('/', '-', $this->request->getData('s_periode_controle2'))));
            if ($this->request->getData('s_date_controle') != '')
                $date_intervention['Suivis.date_controle ='] = date('Y-m-d', strtotime(str_replace('/', '-', $this->request->getData('s_date_controle'))));
2389dbd8   Thibaud Ajas   bugfixes lies au ...
487
488
489
490
491
492
493
494
495
            $specificFieldsConditions = [
                $date_intervention,
                $periode_interventionRequest,
                $this->getConditionForFieldNumber('type_suivi_id'),
                $this->getConditionForField('organisme'),
                $this->getConditionForField('statut'),
                $this->getConditionForFieldNumber('groupes_metier_id'),
                $this->getConditionForFieldNumber('groupes_thematique_id')
            ];
2389dbd8   Thibaud Ajas   bugfixes lies au ...
496
497
498
499
500
            // CONSTRUCTION DE LA REQUETE SQL COMPLETE = $specificFieldsConditions
            // by default, no sort
            $lastResults = $this->Suivis->find('all', [
                'conditions' => $specificFieldsConditions
            ]);
2389dbd8   Thibaud Ajas   bugfixes lies au ...
501
502
503
504
505
506
            $this->paginate = [
                'limit' => 1000
            ];
            $_results = $this->paginate($lastResults);
            $this->set(compact('_results'));
        } // end if()
a0fefb3d   Thibaud Ajas   bugfixes suite au...
507
        else if ($resultTri !== null && strstr($this->request->here(), 'sort') != false && strstr($this->request->here(), 'direction') != false) {
2389dbd8   Thibaud Ajas   bugfixes lies au ...
508
            $findedSuivis = [];
2389dbd8   Thibaud Ajas   bugfixes lies au ...
509
510
511
512
513
514
515
516
517
518
519
            foreach ($resultTri as $r) {
                array_push($findedSuivis, $r->id);
            }
            $res = $this->Suivis->find('all', [
                'limit' => 1000
            ]);
            for ($i = 0; $i < sizeof($findedSuivis); $i ++) {
                $res->orWhere([
                    'id =' => $findedSuivis[$i]
                ]);
            }
2389dbd8   Thibaud Ajas   bugfixes lies au ...
520
521
522
523
524
525
            $this->paginate = [
                'limit' => 1000
            ];
            $_results = $this->paginate($res);
            $this->set(compact('_results'));
        }
e9a0cc56   Alexandre   Version: 2.4.6.0
526
    }
2389dbd8   Thibaud Ajas   bugfixes lies au ...
527

3ab8435b   Alexandre   Version: 2.4.6.4
528
    // called from Javascript (Ajax)
63c3cb16   epallier   Nombreux petits b...
529
530
    public function getNextDate($dateORjour, $frequenceORmois, $typeFrequenceORannee, $frequence = null, $typeFrequence = null)
    {
2389dbd8   Thibaud Ajas   bugfixes lies au ...
531
532
533
534
535
536
537
        if ($frequence != null && $typeFrequence != null) {
            $date = $dateORjour . '-' . $frequenceORmois . '-' . $typeFrequenceORannee;
        } else {
            $date = $dateORjour;
            $frequence = $frequenceORmois;
            $typeFrequence = $typeFrequenceORannee;
        }
2389dbd8   Thibaud Ajas   bugfixes lies au ...
538
        $date_next = date_create_from_format('d-m-Y', $date);
2389dbd8   Thibaud Ajas   bugfixes lies au ...
539
        switch ($typeFrequence) {
63c3cb16   epallier   Nombreux petits b...
540
            case "Jours":
2389dbd8   Thibaud Ajas   bugfixes lies au ...
541
542
                date_add($date_next, date_interval_create_from_date_string($frequence . ' days'));
                break;
63c3cb16   epallier   Nombreux petits b...
543
            case "Semaines":
2389dbd8   Thibaud Ajas   bugfixes lies au ...
544
545
                date_add($date_next, date_interval_create_from_date_string((7 * $frequence) . ' days'));
                break;
63c3cb16   epallier   Nombreux petits b...
546
            case "Mois":
2389dbd8   Thibaud Ajas   bugfixes lies au ...
547
548
                date_add($date_next, date_interval_create_from_date_string($frequence . ' months'));
                break;
63c3cb16   epallier   Nombreux petits b...
549
            case "Ans":
2389dbd8   Thibaud Ajas   bugfixes lies au ...
550
551
552
                date_add($date_next, date_interval_create_from_date_string($frequence . ' years'));
                break;
        }
2389dbd8   Thibaud Ajas   bugfixes lies au ...
553
        $this->set('date', date_format($date_next, 'd-m-Y'));
2389dbd8   Thibaud Ajas   bugfixes lies au ...
554
        $this->viewBuilder()->layout = 'ajax';
3ab8435b   Alexandre   Version: 2.4.6.4
555
    }
6c4edfa3   Alexandre   First Commit LabI...
556
}