Proyectos de Subversion LeadersLinked - Services

Rev

Rev 309 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
302 www 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
use Laminas\Db\Adapter\AdapterInterface;
7
 
8
use Laminas\Mvc\Controller\AbstractActionController;
9
use Laminas\View\Model\ViewModel;
10
use Laminas\View\Model\JsonModel;
11
 
12
use LeadersLinked\Library\Functions;
13
use LeadersLinked\Model\HabitParadigm;
14
use LeadersLinked\Mapper\HabitParadigmMapper;
15
use LeadersLinked\Form\Habit\HabitParadigmForm;
16
 
17
 
18
class HabitParadigmController extends AbstractActionController
19
{
20
    /**
21
     *
22
     * @var \Laminas\Db\Adapter\AdapterInterface
23
     */
24
    private $adapter;
25
 
26
    /**
27
     *
28
     * @var \LeadersLinked\Cache\CacheInterface
29
     */
30
    private $cache;
31
 
32
 
33
    /**
34
     *
35
     * @var \Laminas\Log\LoggerInterface
36
     */
37
    private $logger;
38
 
39
    /**
40
     *
41
     * @var array
42
     */
43
    private $config;
44
 
45
 
46
    /**
47
     *
48
     * @var \Laminas\Mvc\I18n\Translator
49
     */
50
    private $translator;
51
 
52
 
53
    /**
54
     *
55
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
56
     * @param \LeadersLinked\Cache\CacheInterface $cache
57
     * @param \Laminas\Log\LoggerInterface LoggerInterface $logger
58
     * @param array $config
59
     * @param \Laminas\Mvc\I18n\Translator $translator
60
     */
61
    public function __construct($adapter, $cache, $logger, $config, $translator)
62
    {
63
        $this->adapter      = $adapter;
64
        $this->cache        = $cache;
65
        $this->logger       = $logger;
66
        $this->config       = $config;
67
        $this->translator   = $translator;
68
    }
69
 
70
    public function indexAction()
71
    {
72
 
73
 
74
 
75
        $request = $this->getRequest();
76
 
77
 
78
        $request = $this->getRequest();
79
        if($request->isGet()) {
80
            $currentUserPlugin = $this->plugin('currentUserPlugin');
81
            $currentUser = $currentUserPlugin->getUser();
82
 
83
            $acl = $this->getEvent()->getViewModel()->getVariable('acl');
84
            $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'habits/paradigms/add');
85
            $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'habits/paradigms/edit');
86
            $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'habits/paradigms/delete');
87
 
88
 
89
                $search = $this->params()->fromQuery('search');
90
                $search = empty($search['value']) ? '' :  Functions::sanitizeFilterString($search['value']);
91
 
92
                $page               = intval($this->params()->fromQuery('start', 1), 10);
93
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
94
                $order              =  $this->params()->fromQuery('order', []);
95
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
96
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(Functions::sanitizeFilterString($order[0]['dir']));
97
 
98
                $fields =  ['name'];
99
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
100
 
101
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
102
                    $order_direction = 'ASC';
103
                }
104
 
105
                $habitParadigmMapper = HabitParadigmMapper::getInstance($this->adapter);
106
                $paginator = $habitParadigmMapper->fetchAllDataTable($currentUser->id, $search,  $page, $records_x_page, $order_field, $order_direction);
107
 
108
                $items = [];
109
                $records = $paginator->getCurrentItems();
110
                foreach($records as $record)
111
                {
112
                    $item = [
113
                        'id' => $record->id,
114
                        'name' => $record->name,
303 www 115
                        'description' => $record->description,
302 www 116
                        'actions' => [
117
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('habits/paradigms/edit', ['id' => $record->uuid ], ['force_canonical' => true]) : '',
118
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('habits/paradigms/delete', ['id' =>$record->uuid ],  ['force_canonical' => true]) : '',
119
                        ]
120
                    ];
121
 
122
                    array_push($items, $item);
123
                }
124
 
125
                return new JsonModel([
126
                    'success' => true,
127
                    'data' => [
128
                        'items' => $items,
129
                        'total' => $paginator->getTotalItemCount(),
130
                        'link_add' => $allowAdd ? $this->url()->fromRoute('habits/paradigms/add', [], ['force_canonical' => true]) : '',
131
                    ]
132
                ]);
133
 
134
 
135
        } else {
136
            return new JsonModel([
137
                'success' => false,
138
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
139
            ]);;
140
        }
141
    }
142
 
143
 
144
    public function addAction()
145
    {
146
        $request = $this->getRequest();
147
 
148
 
149
        if($request->isPost()) {
150
            $form = new  HabitParadigmForm($this->adapter);
151
            $dataPost = $request->getPost()->toArray();
152
 
153
            $form->setData($dataPost);
154
 
155
            if($form->isValid()) {
156
 
157
 
158
                $currentUserPlugin = $this->plugin('currentUserPlugin');
159
                $currentUser = $currentUserPlugin->getUser();
160
 
161
                $dataPost = (array) $form->getData();
162
 
163
 
164
                $habitParadigm = new HabitParadigm();
165
                $habitParadigm->network_id = $currentUser->network_id;
166
                $habitParadigm->name       = $dataPost['name'];
304 www 167
                $habitParadigm->description = $dataPost['description'];
302 www 168
                $habitParadigm->user_id    = $currentUser->id;
169
 
170
                $habitParadigmMapper = HabitParadigmMapper::getInstance($this->adapter);
171
                $result = $habitParadigmMapper->insert($habitParadigm );
172
 
173
                if($result) {
174
                    $this->logger->info('Se agrego el valor : ' . $habitParadigm->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
175
 
309 www 176
 
177
                    $habitParadigm = $habitParadigmMapper->fetchOne($habitParadigm->id);
178
 
179
                    $acl            = $this->getEvent()->getViewModel()->getVariable('acl');
180
                    $allowEdit      = $acl->isAllowed($currentUser->usertype_id, 'habits/paradigms/edit');
181
                    $allowDelete    = $acl->isAllowed($currentUser->usertype_id, 'habits/paradigms/delete');
182
 
302 www 183
                    $data = [
184
                        'success'   => true,
309 www 185
                        'message'   => 'LABEL_RECORD_ADDED',
186
                        'data'      => [
310 www 187
                            'id' => $habitParadigm->uuid,
309 www 188
                            'name' => $habitParadigm->name,
189
                            'description' => $habitParadigm->description,
190
 
191
                            'actions' => [
192
                                'link_edit' => $allowEdit ? $this->url()->fromRoute('habits/paradigms/edit', ['id' => $habitParadigm->uuid ], ['force_canonical' => true]) : '',
193
                                'link_delete' => $allowDelete ? $this->url()->fromRoute('habits/paradigms/delete', ['id' => $habitParadigm->uuid ],  ['force_canonical' => true]) : '',
194
                            ]
195
                        ]
302 www 196
                    ];
309 www 197
 
302 www 198
                } else {
199
                    $data = [
200
                        'success'   => false,
201
                        'data'      => $habitParadigmMapper->getError()
202
                    ];
203
 
204
                }
205
 
206
                return new JsonModel($data);
207
 
208
            } else {
209
                $messages = [];
210
                $form_messages = (array) $form->getMessages();
211
                foreach($form_messages  as $fieldname => $field_messages)
212
                {
213
 
214
                    $messages[$fieldname] = array_values($field_messages);
215
                }
216
 
217
                return new JsonModel([
218
                    'success'   => false,
219
                    'data'   => $messages
220
                ]);
221
            }
222
 
223
        } else {
224
            return new JsonModel([
225
                'success' => false,
226
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
227
            ]);
228
        }
229
    }
230
 
231
    public function editAction()
232
    {
233
        $currentUserPlugin = $this->plugin('currentUserPlugin');
234
        $currentUser = $currentUserPlugin->getUser();
235
 
236
 
237
        $request = $this->getRequest();
238
        $id = $this->params()->fromRoute('id');
239
 
240
 
241
        if(!$id) {
242
            return new JsonModel([
243
                'success'   => false,
244
                'data'   => 'ERROR_INVALID_PARAMETER'
245
            ]);
246
 
247
        }
248
 
249
 
250
 
251
        $habitParadigmMapper = HabitParadigmMapper::getInstance($this->adapter);
252
        $habitParadigm = $habitParadigmMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);
253
        if(!$habitParadigm) {
254
            return new JsonModel([
255
                'success'   => false,
256
                'data'   => 'ERROR_RECORD_NOT_FOUND'
257
            ]);
258
 
259
 
260
        }
261
 
262
 
263
        if($currentUser->id != $habitParadigm->user_id) {
264
            return new JsonModel([
265
                'success'   => false,
266
                'data'   => 'ERROR_UNAUTHORIZED'
267
            ]);
268
 
269
        }
270
 
271
        if($request->isGet()) {
272
            return new JsonModel([
273
                'success'   => true,
274
                'data'   => [
275
                    'name' => $habitParadigm->name,
303 www 276
                    'description' => $habitParadigm->description,
302 www 277
                ]
278
            ]);
279
        } else if($request->isPost()) {
280
            $form = new  HabitParadigmForm($this->adapter);
281
            $dataPost = $request->getPost()->toArray();
282
 
283
            $form->setData($dataPost);
284
 
285
            if($form->isValid()) {
286
 
287
                $dataPost = (array) $form->getData();
288
 
289
                $habitParadigm->name = $dataPost['name'];
304 www 290
                $habitParadigm->description = $dataPost['description'];
302 www 291
 
292
                $result = $habitParadigmMapper->update($habitParadigm);
293
 
294
                if($result) {
295
                    $this->logger->info('Se edito el valor : ' . $habitParadigm->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
296
 
309 www 297
                    $acl            = $this->getEvent()->getViewModel()->getVariable('acl');
298
                    $allowEdit      = $acl->isAllowed($currentUser->usertype_id, 'habits/paradigms/edit');
299
                    $allowDelete    = $acl->isAllowed($currentUser->usertype_id, 'habits/paradigms/delete');
300
 
302 www 301
                    $data = [
302
                        'success'   => true,
309 www 303
                        'message'   => 'LABEL_RECORD_UPDATED',
304
                        'data'      => [
310 www 305
                            'id' => $habitParadigm->uuid,
309 www 306
                            'name' => $habitParadigm->name,
307
                            'description' => $habitParadigm->description,
308
 
309
                            'actions' => [
310
                                'link_edit' => $allowEdit ? $this->url()->fromRoute('habits/paradigms/edit', ['id' => $habitParadigm->uuid ], ['force_canonical' => true]) : '',
311
                                'link_delete' => $allowDelete ? $this->url()->fromRoute('habits/paradigms/delete', ['id' => $habitParadigm->uuid ],  ['force_canonical' => true]) : '',
312
                            ]
313
                        ]
314
                    ];
315
 
302 www 316
                } else {
317
                    $data = [
318
                        'success'   => false,
319
                        'data'      => $habitParadigmMapper->getError()
320
                    ];
321
 
322
                }
323
 
324
                return new JsonModel($data);
325
 
326
 
327
            } else {
328
                $messages = [];
329
                $form_messages = (array) $form->getMessages();
330
                foreach($form_messages  as $fieldname => $field_messages)
331
                {
332
 
333
                    $messages[$fieldname] = array_values($field_messages);
334
                }
335
 
336
                return new JsonModel([
337
                    'success'   => false,
338
                    'data'   => $messages
339
                ]);
340
            }
341
 
342
        } else {
343
            return new JsonModel([
344
                'success' => false,
345
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
346
            ]);
347
        }
348
    }
349
 
350
 
351
    public function deleteAction()
352
    {
353
        $currentUserPlugin = $this->plugin('currentUserPlugin');
354
        $currentUser = $currentUserPlugin->getUser();
355
 
356
        $request = $this->getRequest();
357
        $id = $this->params()->fromRoute('id');
358
 
359
        if(!$id) {
360
            return new JsonModel([
361
                'success'   => false,
362
                'data'   => 'ERROR_INVALID_PARAMETER'
363
            ]);
364
        }
365
 
366
 
367
 
368
        $habitParadigmMapper = HabitParadigmMapper::getInstance($this->adapter);
369
        $habitParadigm = $habitParadigmMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);
370
        if(!$habitParadigm) {
371
            return new JsonModel([
372
                'success'   => false,
373
                'data'   => 'ERROR_RECORD_NOT_FOUND'
374
            ]);
375
        }
376
 
377
 
378
        if($currentUser->id != $habitParadigm->user_id) {
379
            $response = [
380
                'success' => false,
381
                'data' => 'ERROR_UNAUTHORIZED'
382
            ];
383
 
384
            return new JsonModel($response);
385
        }
386
 
387
 
388
        if($request->isPost()) {
389
            $result = $habitParadigmMapper->delete($habitParadigm);
390
            if($result) {
391
                $this->logger->info('Se borro el valor : ' .  $habitParadigm->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
392
 
393
                return new JsonModel([
394
                    'success' => true,
395
                    'data' => 'LABEL_RECORD_DELETED'
396
                ]);
397
            } else {
398
 
399
                return new JsonModel([
400
                    'success'   => false,
401
                    'data'      => $habitParadigmMapper->getError()
402
                ]);
403
 
404
            }
405
 
406
        } else {
407
            return new JsonModel([
408
                'success' => false,
409
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
410
            ]);
411
 
412
        }
413
 
414
 
415
    }
416
}