Proyectos de Subversion LeadersLinked - Services

Rev

Rev 303 | Ir a la última revisión | | 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,
115
                        'actions' => [
116
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('habits/paradigms/edit', ['id' => $record->uuid ], ['force_canonical' => true]) : '',
117
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('habits/paradigms/delete', ['id' =>$record->uuid ],  ['force_canonical' => true]) : '',
118
                        ]
119
                    ];
120
 
121
                    array_push($items, $item);
122
                }
123
 
124
                return new JsonModel([
125
                    'success' => true,
126
                    'data' => [
127
                        'items' => $items,
128
                        'total' => $paginator->getTotalItemCount(),
129
                        'link_add' => $allowAdd ? $this->url()->fromRoute('habits/paradigms/add', [], ['force_canonical' => true]) : '',
130
                    ]
131
                ]);
132
 
133
 
134
        } else {
135
            return new JsonModel([
136
                'success' => false,
137
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
138
            ]);;
139
        }
140
    }
141
 
142
 
143
    public function addAction()
144
    {
145
        $request = $this->getRequest();
146
 
147
 
148
        if($request->isPost()) {
149
            $form = new  HabitParadigmForm($this->adapter);
150
            $dataPost = $request->getPost()->toArray();
151
 
152
            $form->setData($dataPost);
153
 
154
            if($form->isValid()) {
155
 
156
 
157
                $currentUserPlugin = $this->plugin('currentUserPlugin');
158
                $currentUser = $currentUserPlugin->getUser();
159
 
160
                $dataPost = (array) $form->getData();
161
 
162
 
163
                $habitParadigm = new HabitParadigm();
164
                $habitParadigm->network_id = $currentUser->network_id;
165
                $habitParadigm->name       = $dataPost['name'];
166
                $habitParadigm->user_id    = $currentUser->id;
167
 
168
                $habitParadigmMapper = HabitParadigmMapper::getInstance($this->adapter);
169
                $result = $habitParadigmMapper->insert($habitParadigm );
170
 
171
                if($result) {
172
                    $this->logger->info('Se agrego el valor : ' . $habitParadigm->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
173
 
174
                    $data = [
175
                        'success'   => true,
176
                        'data'   => 'LABEL_RECORD_ADDED'
177
                    ];
178
                } else {
179
                    $data = [
180
                        'success'   => false,
181
                        'data'      => $habitParadigmMapper->getError()
182
                    ];
183
 
184
                }
185
 
186
                return new JsonModel($data);
187
 
188
            } else {
189
                $messages = [];
190
                $form_messages = (array) $form->getMessages();
191
                foreach($form_messages  as $fieldname => $field_messages)
192
                {
193
 
194
                    $messages[$fieldname] = array_values($field_messages);
195
                }
196
 
197
                return new JsonModel([
198
                    'success'   => false,
199
                    'data'   => $messages
200
                ]);
201
            }
202
 
203
        } else {
204
            return new JsonModel([
205
                'success' => false,
206
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
207
            ]);
208
        }
209
    }
210
 
211
    public function editAction()
212
    {
213
        $currentUserPlugin = $this->plugin('currentUserPlugin');
214
        $currentUser = $currentUserPlugin->getUser();
215
 
216
 
217
        $request = $this->getRequest();
218
        $id = $this->params()->fromRoute('id');
219
 
220
 
221
        if(!$id) {
222
            return new JsonModel([
223
                'success'   => false,
224
                'data'   => 'ERROR_INVALID_PARAMETER'
225
            ]);
226
 
227
        }
228
 
229
 
230
 
231
        $habitParadigmMapper = HabitParadigmMapper::getInstance($this->adapter);
232
        $habitParadigm = $habitParadigmMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);
233
        if(!$habitParadigm) {
234
            return new JsonModel([
235
                'success'   => false,
236
                'data'   => 'ERROR_RECORD_NOT_FOUND'
237
            ]);
238
 
239
 
240
        }
241
 
242
 
243
        if($currentUser->id != $habitParadigm->user_id) {
244
            return new JsonModel([
245
                'success'   => false,
246
                'data'   => 'ERROR_UNAUTHORIZED'
247
            ]);
248
 
249
        }
250
 
251
        if($request->isGet()) {
252
            return new JsonModel([
253
                'success'   => true,
254
                'data'   => [
255
                    'name' => $habitParadigm->name,
256
                ]
257
            ]);
258
        } else if($request->isPost()) {
259
            $form = new  HabitParadigmForm($this->adapter);
260
            $dataPost = $request->getPost()->toArray();
261
 
262
            $form->setData($dataPost);
263
 
264
            if($form->isValid()) {
265
 
266
                $dataPost = (array) $form->getData();
267
 
268
                $habitParadigm->name = $dataPost['name'];
269
 
270
                $result = $habitParadigmMapper->update($habitParadigm);
271
 
272
                if($result) {
273
                    $this->logger->info('Se edito el valor : ' . $habitParadigm->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
274
 
275
                    $data = [
276
                        'success'   => true,
277
                        'data'   => 'LABEL_RECORD_UPDATED'
278
                    ];
279
                } else {
280
                    $data = [
281
                        'success'   => false,
282
                        'data'      => $habitParadigmMapper->getError()
283
                    ];
284
 
285
                }
286
 
287
                return new JsonModel($data);
288
 
289
 
290
            } else {
291
                $messages = [];
292
                $form_messages = (array) $form->getMessages();
293
                foreach($form_messages  as $fieldname => $field_messages)
294
                {
295
 
296
                    $messages[$fieldname] = array_values($field_messages);
297
                }
298
 
299
                return new JsonModel([
300
                    'success'   => false,
301
                    'data'   => $messages
302
                ]);
303
            }
304
 
305
        } else {
306
            return new JsonModel([
307
                'success' => false,
308
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
309
            ]);
310
        }
311
    }
312
 
313
 
314
    public function deleteAction()
315
    {
316
        $currentUserPlugin = $this->plugin('currentUserPlugin');
317
        $currentUser = $currentUserPlugin->getUser();
318
 
319
        $request = $this->getRequest();
320
        $id = $this->params()->fromRoute('id');
321
 
322
        if(!$id) {
323
            return new JsonModel([
324
                'success'   => false,
325
                'data'   => 'ERROR_INVALID_PARAMETER'
326
            ]);
327
        }
328
 
329
 
330
 
331
        $habitParadigmMapper = HabitParadigmMapper::getInstance($this->adapter);
332
        $habitParadigm = $habitParadigmMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);
333
        if(!$habitParadigm) {
334
            return new JsonModel([
335
                'success'   => false,
336
                'data'   => 'ERROR_RECORD_NOT_FOUND'
337
            ]);
338
        }
339
 
340
 
341
        if($currentUser->id != $habitParadigm->user_id) {
342
            $response = [
343
                'success' => false,
344
                'data' => 'ERROR_UNAUTHORIZED'
345
            ];
346
 
347
            return new JsonModel($response);
348
        }
349
 
350
 
351
        if($request->isPost()) {
352
            $result = $habitParadigmMapper->delete($habitParadigm);
353
            if($result) {
354
                $this->logger->info('Se borro el valor : ' .  $habitParadigm->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
355
 
356
                return new JsonModel([
357
                    'success' => true,
358
                    'data' => 'LABEL_RECORD_DELETED'
359
                ]);
360
            } else {
361
 
362
                return new JsonModel([
363
                    'success'   => false,
364
                    'data'      => $habitParadigmMapper->getError()
365
                ]);
366
 
367
            }
368
 
369
        } else {
370
            return new JsonModel([
371
                'success' => false,
372
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
373
            ]);
374
 
375
        }
376
 
377
 
378
    }
379
}