Proyectos de Subversion LeadersLinked - Backend

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
4388 nelberth 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
use Laminas\Authentication\AuthenticationService;
7
use Laminas\Authentication\Result as AuthResult;
8
use Laminas\Db\Adapter\AdapterInterface;
9
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
10
use Laminas\Mvc\Controller\AbstractActionController;
11
use Laminas\Mvc\I18n\Translator;
12
use Laminas\Log\LoggerInterface;
13
use Laminas\View\Model\ViewModel;
14
use Laminas\View\Model\JsonModel;
4511 nelberth 15
use LeadersLinked\Model\HighPerformanceTeamsMyGroups;
4553 nelberth 16
use LeadersLinked\Model\HighPerformanceTeamsMyGroupsMembers;
4388 nelberth 17
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
4511 nelberth 18
use LeadersLinked\Form\HighPerformanceTeamsMyGroupsForm;
4469 nelberth 19
use LeadersLinked\Library\Functions;
4547 nelberth 20
use LeadersLinked\Mapper\QueryMapper;
4511 nelberth 21
use LeadersLinked\Mapper\HighPerformanceTeamsMyGroupsMapper;
4547 nelberth 22
use LeadersLinked\Mapper\HighPerformanceTeamsMyGroupsMembersMapper;
4509 nelberth 23
use LeadersLinked\Mapper\CompanyMapper;
4401 nelberth 24
 
4511 nelberth 25
class HighPerformanceTeamsMyGroupsController extends AbstractActionController
4388 nelberth 26
{
27
    /**
28
     *
29
     * @var AdapterInterface
30
     */
31
    private $adapter;
32
 
33
 
34
    /**
35
     *
36
     * @var AbstractAdapter
37
     */
38
    private $cache;
39
 
40
    /**
41
     *
42
     * @var  LoggerInterface
43
     */
44
    private $logger;
45
 
46
    /**
47
     *
48
     * @var array
49
     */
50
    private $config;
51
 
52
 
53
 
54
    /**
55
     *
56
     * @param AdapterInterface $adapter
57
     * @param AbstractAdapter $cache
58
     * @param LoggerInterface $logger
59
     * @param array $config
60
     */
61
    public function __construct($adapter, $cache , $logger, $config)
62
    {
63
        $this->adapter      = $adapter;
64
        $this->cache        = $cache;
65
        $this->logger       = $logger;
66
        $this->config       = $config;
67
 
68
 
69
    }
4509 nelberth 70
 
71
 
72
 
73
 
4388 nelberth 74
    public function indexAction()
75
    {
4396 nelberth 76
        $currentUserPlugin = $this->plugin('currentUserPlugin');
77
        $currentUser = $currentUserPlugin->getUser();
4447 nelberth 78
        $currentCompany = $currentUserPlugin->getCompany();
4388 nelberth 79
 
4509 nelberth 80
 
4388 nelberth 81
        $request = $this->getRequest();
82
        if($request->isGet()) {
83
 
84
 
4396 nelberth 85
            $headers  = $request->getHeaders();
4388 nelberth 86
 
4396 nelberth 87
            $isJson = false;
88
            if($headers->has('Accept')) {
89
                $accept = $headers->get('Accept');
90
 
91
                $prioritized = $accept->getPrioritized();
92
 
93
                foreach($prioritized as $key => $value) {
94
                    $raw = trim($value->getRaw());
95
 
96
                    if(!$isJson) {
97
                        $isJson = strpos($raw, 'json');
98
                    }
99
 
100
                }
101
            }
102
 
103
            if($isJson) {
104
 
4509 nelberth 105
 
4396 nelberth 106
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
4439 nelberth 107
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'high-performance-teams/my-groups/edit');
108
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'high-performance-teams/my-groups/delete');
4570 nelberth 109
                $allowGroup = $acl->isAllowed($currentUser->usertype_id, 'high-performance-teams/my-groups/group');
4509 nelberth 110
 
111
                $search = $this->params()->fromQuery('search', []);
112
                $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
113
 
114
 
115
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
116
                $page               = (intval($this->params()->fromQuery('start', 1), 10)/$records_x_page)+1;
117
                $order =  $this->params()->fromQuery('order', []);
118
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
119
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var( $order[0]['dir'], FILTER_SANITIZE_STRING));
120
 
121
                $fields =  ['title', 'date'];
122
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'title';
123
 
124
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
125
                    $order_direction = 'ASC';
4396 nelberth 126
                }
4550 nelberth 127
 
128
 
129
                $HighPerformanceTeamsMyGroupsMembersMapper = HighPerformanceTeamsMyGroupsMembersMapper::getInstance($this->adapter);
4556 nelberth 130
 
131
                $paginator = $HighPerformanceTeamsMyGroupsMembersMapper->fetchAllDataTableInnerJoin($search, $page, $records_x_page, $order_field, $order_direction,$currentUser->id,HighPerformanceTeamsMyGroupsMapper::_TABLE);
132
 
133
                $items = [];
4557 nelberth 134
 
135
                $records = $paginator->getCurrentItems();
4559 nelberth 136
 
4396 nelberth 137
                foreach($records as $record)
138
                {
4509 nelberth 139
 
4396 nelberth 140
                    $item = [
4509 nelberth 141
                        'title' => $record->title,
142
                        'description' => $record->description,
143
                        'status'=> $record->status,
144
                        'actions' => [
145
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('high-performance-teams/my-groups/edit', ['id' => $record->uuid]) : '',
146
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('high-performance-teams/my-groups/delete', ['id' => $record->uuid]) : '',
4570 nelberth 147
                            'link_group' => $allowDelete ? $this->url()->fromRoute('high-performance-teams/my-groups/group', ['id' => $record->uuid]) : '',
4509 nelberth 148
 
149
                        ]
150
 
4547 nelberth 151
                    ];
152
                    array_push($items, $item);
4396 nelberth 153
                }
4509 nelberth 154
 
4396 nelberth 155
 
4509 nelberth 156
                return new JsonModel([
4396 nelberth 157
                    'success' => true,
4509 nelberth 158
                    'data' => [
159
                        'items' => $items,
160
                        'total' => $paginator->getTotalItemCount(),
161
                    ]
162
                ]);
4396 nelberth 163
 
4509 nelberth 164
            } else  {
4511 nelberth 165
                $formAdd = new HighPerformanceTeamsMyGroupsForm();
4396 nelberth 166
                $this->layout()->setTemplate('layout/layout-backend');
167
                $viewModel = new ViewModel();
168
                $viewModel->setTemplate('leaders-linked/high-performance-teams-my-groups/index.phtml');
169
                $viewModel->setVariables([
4509 nelberth 170
                    'formAdd' => $formAdd,
4396 nelberth 171
                ]);
172
                return $viewModel ;
173
            }
4388 nelberth 174
        } else {
175
            return new JsonModel([
176
                'success' => false,
177
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
4396 nelberth 178
            ]);
4388 nelberth 179
        }
180
    }
4448 nelberth 181
    public function addAction()
182
    {
4545 nelberth 183
        $currentUserPlugin = $this->plugin('currentUserPlugin');
4509 nelberth 184
        $currentUser = $currentUserPlugin->getUser();
185
        $currentCompany = $currentUserPlugin->getCompany();
4545 nelberth 186
 
4448 nelberth 187
        $request = $this->getRequest();
188
        if($request->isPost()) {
4511 nelberth 189
            $form = new  HighPerformanceTeamsMyGroupsForm();
4448 nelberth 190
            $dataPost = $request->getPost()->toArray();
191
 
4541 nelberth 192
            $form->setData($dataPost);
4545 nelberth 193
 
4540 nelberth 194
            if($form->isValid()) {
4554 nelberth 195
 
4540 nelberth 196
                $dataPost = (array) $form->getData();
197
                $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : HighPerformanceTeamsMyGroups::STATUS_INACTIVE;
4545 nelberth 198
 
4509 nelberth 199
                $hydrator = new ObjectPropertyHydrator();
4511 nelberth 200
                $HighPerformanceTeamsMyGroups = new HighPerformanceTeamsMyGroups();
201
                $hydrator->hydrate($dataPost, $HighPerformanceTeamsMyGroups);
4448 nelberth 202
 
4511 nelberth 203
                $HighPerformanceTeamsMyGroupsMapper = HighPerformanceTeamsMyGroupsMapper::getInstance($this->adapter);
204
                $result = $HighPerformanceTeamsMyGroupsMapper->insert($HighPerformanceTeamsMyGroups);
4448 nelberth 205
 
206
                if($result) {
4553 nelberth 207
 
4554 nelberth 208
                    $HighPerformanceTeamsMyGroupsMembers = new HighPerformanceTeamsMyGroupsMembers();
209
                    $HighPerformanceTeamsMyGroupsMembers->group_id = $HighPerformanceTeamsMyGroups->id;
210
                    $HighPerformanceTeamsMyGroupsMembers->user_id = $currentUser->id;
211
                    $HighPerformanceTeamsMyGroupsMembers->status = HighPerformanceTeamsMyGroupsMembers::STATUS_ACTIVE;
212
 
213
                    $HighPerformanceTeamsMyGroupsMembersMapper = HighPerformanceTeamsMyGroupsMembersMapper::getInstance($this->adapter);
214
                    $result2=$HighPerformanceTeamsMyGroupsMembersMapper->insert($HighPerformanceTeamsMyGroupsMembers);
4553 nelberth 215
 
4554 nelberth 216
                    if($result2){
217
                        $this->logger->info('Se agrego el objetivo ' . $HighPerformanceTeamsMyGroups->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
218
 
219
                        $data = [
220
                            'success'   => true,
221
                            'data'   => 'LABEL_RECORD_ADDED'
222
                        ];
223
                    }else{
224
                        $data = [
225
                            'success'   => false,
226
                            'data'      => $HighPerformanceTeamsMyGroupsMembersMapper->getError()
227
                        ];
228
                    }
4553 nelberth 229
 
4554 nelberth 230
 
4448 nelberth 231
                } else {
232
                    $data = [
233
                        'success'   => false,
4511 nelberth 234
                        'data'      => $HighPerformanceTeamsMyGroupsMapper->getError()
4448 nelberth 235
                    ];
236
 
237
                }
238
 
239
                return new JsonModel($data);
240
 
241
            } else {
242
                $messages = [];
243
                $form_messages = (array) $form->getMessages();
244
                foreach($form_messages  as $fieldname => $field_messages)
245
                {
246
 
247
                    $messages[$fieldname] = array_values($field_messages);
248
                }
249
 
250
                return new JsonModel([
251
                    'success'   => false,
252
                    'data'   => $messages
253
                ]);
254
            }
4509 nelberth 255
 
4448 nelberth 256
        } else {
257
            $data = [
258
                'success' => false,
259
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
260
            ];
261
 
262
            return new JsonModel($data);
263
        }
264
 
265
        return new JsonModel($data);
4509 nelberth 266
 
267
 
4545 nelberth 268
 
4448 nelberth 269
    }
4509 nelberth 270
 
271
 
4531 nelberth 272
    public function editAction(){
4537 nelberth 273
 
274
 
275
        $currentUserPlugin = $this->plugin('currentUserPlugin');
276
        $currentUser = $currentUserPlugin->getUser();
277
        $currentCompany = $currentUserPlugin->getCompany();
4536 nelberth 278
        $request = $this->getRequest();
4537 nelberth 279
        $uuid = $this->params()->fromRoute('id');
4538 nelberth 280
 
4533 nelberth 281
 
4528 nelberth 282
        if(!$uuid) {
283
            $data = [
284
                'success'   => false,
285
                'data'   => 'ERROR_INVALID_PARAMETER'
286
            ];
4470 nelberth 287
 
4528 nelberth 288
            return new JsonModel($data);
289
        }
4531 nelberth 290
 
4528 nelberth 291
        $HighPerformanceTeamsMyGroupsMapper = HighPerformanceTeamsMyGroupsMapper::getInstance($this->adapter);
292
        $groups = $HighPerformanceTeamsMyGroupsMapper->fetchOneByUuid($uuid);
4567 nelberth 293
 
294
 
295
        $HighPerformanceTeamsMyGroupsMembers = HighPerformanceTeamsMyGroupsMembersMapper::getInstance($this->adapter);
296
        $member = $HighPerformanceTeamsMyGroupsMembers->fetchOneByGroupId($groups->id);
4568 nelberth 297
 
4528 nelberth 298
        if (!$groups) {
299
            $data = [
300
                'success' => false,
301
                'data' => 'ERROR_RECORD_NOT_FOUND'
302
            ];
303
 
304
            return new JsonModel($data);
305
        }
306
 
4568 nelberth 307
        if ($member->user_id != $currentUser->id) {
4528 nelberth 308
            return new JsonModel([
309
                'success' => false,
310
                'data' => 'ERROR_UNAUTHORIZED'
311
            ]);
312
        }
313
 
314
        if($request->isPost()) {
315
            $form = new  HighPerformanceTeamsMyGroupsForm();
316
            $dataPost = $request->getPost()->toArray();
317
            $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : HighPerformanceTeamsMyGroups::STATUS_INACTIVE;
318
            $form->setData($dataPost);
319
 
320
            if($form->isValid()) {
321
                $dataPost = (array) $form->getData();
322
 
323
                $hydrator = new ObjectPropertyHydrator();
324
                $hydrator->hydrate($dataPost, $groups);
325
                $result = $HighPerformanceTeamsMyGroupsMapper->update($groups);
326
 
327
                if($result) {
4531 nelberth 328
                    $this->logger->info('Se actualizo el objetivo ' . $groups->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
4528 nelberth 329
 
330
                    $data = [
331
                        'success' => true,
332
                        'data' => 'LABEL_RECORD_UPDATED'
333
                    ];
334
                } else {
335
                    $data = [
336
                        'success'   => false,
337
                        'data'      => $HighPerformanceTeamsMyGroupsMapper->getError()
338
                    ];
339
                }
340
 
341
                return new JsonModel($data);
342
 
343
            } else {
344
                $messages = [];
345
                $form_messages = (array) $form->getMessages();
346
                foreach($form_messages  as $fieldname => $field_messages)
347
                {
348
                    $messages[$fieldname] = array_values($field_messages);
349
                }
350
 
351
                return new JsonModel([
352
                    'success'   => false,
353
                    'data'   => $messages
354
                ]);
355
            }
356
        }else if ($request->isGet()) {
357
            $hydrator = new ObjectPropertyHydrator();
358
 
359
            $data = [
360
                'success' => true,
361
                'data' => $hydrator->extract($groups)
362
            ];
363
 
364
            return new JsonModel($data);
365
        } else {
366
            $data = [
367
                'success' => false,
368
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
369
            ];
370
 
371
            return new JsonModel($data);
372
        }
373
 
374
        return new JsonModel($data);
375
 
4470 nelberth 376
    }
4509 nelberth 377
 
378
 
379
 
380
 
381
    public function deleteAction(){
382
        $currentUserPlugin = $this->plugin('currentUserPlugin');
383
        $currentCompany = $currentUserPlugin->getCompany();
384
        $currentUser = $currentUserPlugin->getUser();
385
 
4478 nelberth 386
        $request = $this->getRequest();
4509 nelberth 387
        $uuid = $this->params()->fromRoute('id');
4478 nelberth 388
 
4509 nelberth 389
 
390
        if (!$uuid) {
391
            $data = [
392
                'success' => false,
393
                'data' => 'ERROR_INVALID_PARAMETER'
394
            ];
395
 
396
            return new JsonModel($data);
4478 nelberth 397
        }
4509 nelberth 398
 
399
 
400
 
4511 nelberth 401
        $HighPerformanceTeamsMyGroupsMapper = HighPerformanceTeamsMyGroupsMapper::getInstance($this->adapter);
402
        $groups = $HighPerformanceTeamsMyGroupsMapper->fetchOneByUuid($uuid);
4509 nelberth 403
 
4569 nelberth 404
        $HighPerformanceTeamsMyGroupsMembers = HighPerformanceTeamsMyGroupsMembersMapper::getInstance($this->adapter);
405
        $member = $HighPerformanceTeamsMyGroupsMembers->fetchOneByGroupId($groups->id);
406
 
4509 nelberth 407
        if (!$groups) {
408
            $data = [
409
                'success' => false,
410
                'data' => 'ERROR_RECORD_NOT_FOUND'
4478 nelberth 411
            ];
412
 
4509 nelberth 413
            return new JsonModel($data);
414
        }
415
 
4569 nelberth 416
        if ($member->user_id != $currentUser->id) {
4509 nelberth 417
            return new JsonModel([
418
                'success' => false,
419
                'data' => 'ERROR_UNAUTHORIZED'
420
            ]);
421
        }
422
 
423
        if ($request->isPost()) {
4478 nelberth 424
 
425
 
4511 nelberth 426
            $result = $HighPerformanceTeamsMyGroupsMapper->delete($groups->id);
4509 nelberth 427
            if ($result) {
428
                $this->logger->info('Se borro el grupo de compania con el titulo ' . $groups->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
429
 
430
                $data = [
431
                    'success' => true,
432
                    'data' => 'LABEL_RECORD_DELETED'
433
                ];
434
            } else {
435
 
436
                $data = [
437
                    'success' => false,
4511 nelberth 438
                    'data' => $HighPerformanceTeamsMyGroupsMapper->getError()
4509 nelberth 439
                ];
440
 
441
                return new JsonModel($data);
442
            }
4478 nelberth 443
        } else {
444
            $data = [
445
                'success' => false,
446
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
447
            ];
4509 nelberth 448
 
4478 nelberth 449
            return new JsonModel($data);
450
        }
4509 nelberth 451
 
4478 nelberth 452
        return new JsonModel($data);
453
    }
4431 nelberth 454
 
4478 nelberth 455
 
4431 nelberth 456
 
4534 nelberth 457
 
4388 nelberth 458
}