Proyectos de Subversion LeadersLinked - Backend

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
7231 nelberth 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
7233 nelberth 6
use Laminas\Authentication\AuthenticationService;
7
use Laminas\Authentication\Result as AuthResult;
7231 nelberth 8
use Laminas\Db\Adapter\AdapterInterface;
9
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
10
use Laminas\Mvc\Controller\AbstractActionController;
7233 nelberth 11
use Laminas\Mvc\I18n\Translator;
7231 nelberth 12
use Laminas\Log\LoggerInterface;
13
use Laminas\View\Model\ViewModel;
14
use Laminas\View\Model\JsonModel;
7233 nelberth 15
use LeadersLinked\Model\HighPerformanceTeamsGroups;
16
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
17
use LeadersLinked\Form\HighPerformanceTeamsGroupsForm;
7231 nelberth 18
use LeadersLinked\Library\Functions;
7233 nelberth 19
use LeadersLinked\Mapper\UserMapper;
20
use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMapper;
21
use LeadersLinked\Mapper\CompanyMapper;
7231 nelberth 22
 
23
class HighPerformanceTeamsGroupsController extends AbstractActionController
24
{
25
    /**
26
     *
27
     * @var AdapterInterface
28
     */
29
    private $adapter;
30
 
31
 
32
    /**
33
     *
34
     * @var AbstractAdapter
35
     */
36
    private $cache;
37
 
38
    /**
39
     *
40
     * @var  LoggerInterface
41
     */
42
    private $logger;
43
 
44
    /**
45
     *
46
     * @var array
47
     */
48
    private $config;
49
 
7233 nelberth 50
 
51
 
7231 nelberth 52
    /**
53
     *
54
     * @param AdapterInterface $adapter
55
     * @param AbstractAdapter $cache
56
     * @param LoggerInterface $logger
57
     * @param array $config
58
     */
7233 nelberth 59
    public function __construct($adapter, $cache , $logger, $config)
7231 nelberth 60
    {
61
        $this->adapter      = $adapter;
62
        $this->cache        = $cache;
63
        $this->logger       = $logger;
64
        $this->config       = $config;
7233 nelberth 65
 
66
 
7231 nelberth 67
    }
68
 
7233 nelberth 69
 
70
 
71
 
7231 nelberth 72
    public function indexAction()
73
    {
7233 nelberth 74
 
75
 
7231 nelberth 76
        $currentUserPlugin = $this->plugin('currentUserPlugin');
77
        $currentUser = $currentUserPlugin->getUser();
7233 nelberth 78
        $currentCompany = $currentUserPlugin->getCompany();
7231 nelberth 79
 
7233 nelberth 80
 
7231 nelberth 81
        $request = $this->getRequest();
82
        if($request->isGet()) {
83
 
84
 
85
            $headers  = $request->getHeaders();
86
 
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
 
7233 nelberth 105
 
7231 nelberth 106
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
7233 nelberth 107
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'high-performance-teams/groups/edit');
108
                $allowDelete = $acl->isAllowed($currentUser->usertype_id,'high-performance-teams/groups/delete');
7231 nelberth 109
 
110
 
7233 nelberth 111
 
112
                $search = $this->params()->fromQuery('search', []);
113
                $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
7231 nelberth 114
 
115
 
7233 nelberth 116
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
117
                $page               = (intval($this->params()->fromQuery('start', 1), 10)/$records_x_page)+1;
118
                $order =  $this->params()->fromQuery('order', []);
119
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
120
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var( $order[0]['dir'], FILTER_SANITIZE_STRING));
121
 
122
                $fields =  ['title', 'date'];
123
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'title';
124
 
125
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
126
                    $order_direction = 'ASC';
7231 nelberth 127
                }
128
 
7233 nelberth 129
 
7231 nelberth 130
 
7233 nelberth 131
                $paginator = $highPerformanceTeamsGroupsMapper->fetchAllDataTable($search, $page, $records_x_page, $order_field, $order_direction, $currentCompany->id);
132
 
7231 nelberth 133
                $items = [];
7233 nelberth 134
 
135
                $records = $paginator->getCurrentItems();
136
 
7231 nelberth 137
                foreach($records as $record)
138
                {
7233 nelberth 139
 
140
 
141
 
7231 nelberth 142
                    $item = [
7233 nelberth 143
                        'title' => $record->title,
144
                        'description' => $record->description,
145
                        'status'=> $record->status,
146
                        'actions' => [
147
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('high-performance-teams/groups/edit', ['id' => $record->uuid]) : '',
148
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('high-performance-teams/groups/delete', ['id' => $record->uuid]) : '',
149
                            'link_view' => $allowView ? $this->url()->fromRoute('high-performance-teams/groups/view', ['id' => $record->uuid]) : '',
7231 nelberth 150
 
7233 nelberth 151
                        ]
152
 
7231 nelberth 153
                    ];
7233 nelberth 154
 
7231 nelberth 155
 
156
                    array_push($items, $item);
7233 nelberth 157
 
7231 nelberth 158
                }
7233 nelberth 159
 
160
                return new JsonModel([
7231 nelberth 161
                    'success' => true,
7233 nelberth 162
                    'data' => [
163
                        'items' => $items,
164
                        'total' => $paginator->getTotalItemCount(),
165
                    ]
166
                ]);
7231 nelberth 167
 
7233 nelberth 168
            } else  {
169
                $formAdd = new HighPerformanceTeamsGroupsForm();
7231 nelberth 170
                $this->layout()->setTemplate('layout/layout-backend');
171
                $viewModel = new ViewModel();
7233 nelberth 172
                $viewModel->setTemplate('leaders-linked/high-performance-teams-groups/index.phtml');
7231 nelberth 173
                $viewModel->setVariables([
7233 nelberth 174
                    'formAdd' => $formAdd,
7231 nelberth 175
                ]);
176
                return $viewModel ;
177
            }
178
        } else {
179
            return new JsonModel([
180
                'success' => false,
181
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
182
            ]);
183
        }
184
    }
7233 nelberth 185
/*
7231 nelberth 186
    public function addAction()
187
    {
7233 nelberth 188
      $currentUserPlugin = $this->plugin('currentUserPlugin');
189
        $currentUser = $currentUserPlugin->getUser();
190
        $currentCompany = $currentUserPlugin->getCompany();
191
 
7231 nelberth 192
        $request = $this->getRequest();
193
        if($request->isPost()) {
7233 nelberth 194
            $form = new  HighPerformanceTeamsGroupsForm();
7231 nelberth 195
            $dataPost = $request->getPost()->toArray();
196
 
197
            $form->setData($dataPost);
198
 
199
            if($form->isValid()) {
200
                $dataPost = (array) $form->getData();
7233 nelberth 201
                $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : HighPerformanceTeamsGroups::STATUS_INACTIVE;
202
                $dataPost['company_id']=$currentCompany->id;
7231 nelberth 203
 
7233 nelberth 204
                $hydrator = new ObjectPropertyHydrator();
205
                $highPerformanceTeamsGroups = new HighPerformanceTeamsGroups();
206
                $hydrator->hydrate($dataPost, $highPerformanceTeamsGroups);
7231 nelberth 207
 
7233 nelberth 208
                $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
209
                $result = $highPerformanceTeamsGroupsMapper->insert($highPerformanceTeamsGroups);
7231 nelberth 210
 
211
                if($result) {
7233 nelberth 212
                    $this->logger->info('Se agrego el objetivo ' . $highPerformanceTeamsGroups->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
7231 nelberth 213
 
214
                    $data = [
215
                        'success'   => true,
216
                        'data'   => 'LABEL_RECORD_ADDED'
217
                    ];
218
                } else {
219
                    $data = [
220
                        'success'   => false,
7233 nelberth 221
                        'data'      => $highPerformanceTeamsGroupsMapper->getError()
7231 nelberth 222
                    ];
223
 
224
                }
225
 
226
                return new JsonModel($data);
227
 
228
            } else {
229
                $messages = [];
230
                $form_messages = (array) $form->getMessages();
231
                foreach($form_messages  as $fieldname => $field_messages)
232
                {
233
 
234
                    $messages[$fieldname] = array_values($field_messages);
235
                }
236
 
237
                return new JsonModel([
238
                    'success'   => false,
239
                    'data'   => $messages
240
                ]);
241
            }
7233 nelberth 242
 
7231 nelberth 243
        } else {
244
            $data = [
245
                'success' => false,
246
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
247
            ];
248
 
249
            return new JsonModel($data);
250
        }
251
 
252
        return new JsonModel($data);
7233 nelberth 253
 
254
 
7231 nelberth 255
    }
7233 nelberth 256
 
257
 
258
 
259
     public function editAction(){
260
 
261
        $currentUserPlugin = $this->plugin('currentUserPlugin');
262
        $currentUser = $currentUserPlugin->getUser();
263
        $currentCompany = $currentUserPlugin->getCompany();
7231 nelberth 264
        $request = $this->getRequest();
7233 nelberth 265
        $uuid = $this->params()->fromRoute('id');
266
 
7231 nelberth 267
 
7233 nelberth 268
        if(!$uuid) {
7231 nelberth 269
            $data = [
270
                'success'   => false,
271
                'data'   => 'ERROR_INVALID_PARAMETER'
272
            ];
273
 
274
            return new JsonModel($data);
275
        }
276
 
7233 nelberth 277
        $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
278
        $objectives = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($uuid);
279
 
280
        if (!$objectives) {
7231 nelberth 281
            $data = [
282
                'success' => false,
7233 nelberth 283
                'data' => 'ERROR_RECORD_NOT_FOUND'
7231 nelberth 284
            ];
285
 
286
            return new JsonModel($data);
287
        }
7233 nelberth 288
 
289
        if ($objectives->company_id != $currentCompany->id) {
290
            return new JsonModel([
7231 nelberth 291
                'success' => false,
292
                'data' => 'ERROR_UNAUTHORIZED'
7233 nelberth 293
            ]);
294
        }
295
 
296
        if($request->isPost()) {
297
            $form = new  HighPerformanceTeamsGroupsForm();
7231 nelberth 298
            $dataPost = $request->getPost()->toArray();
7233 nelberth 299
            $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : HighPerformanceTeamsGroups::STATUS_INACTIVE;
7231 nelberth 300
            $form->setData($dataPost);
301
 
302
            if($form->isValid()) {
303
                $dataPost = (array) $form->getData();
304
 
305
                $hydrator = new ObjectPropertyHydrator();
7233 nelberth 306
                $hydrator->hydrate($dataPost, $objectives);
307
                $result = $highPerformanceTeamsGroupsMapper->update($objectives);
7231 nelberth 308
 
7233 nelberth 309
                if($result) {
310
                    $this->logger->info('Se actualizo el objetivo ' . $objectives->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
311
 
312
                    $data = [
313
                        'success' => true,
314
                        'data' => 'LABEL_RECORD_UPDATED'
315
                    ];
316
                } else {
317
                    $data = [
318
                        'success'   => false,
319
                        'data'      => $highPerformanceTeamsGroupsMapper->getError()
320
                    ];
321
                }
7231 nelberth 322
 
7233 nelberth 323
                return new JsonModel($data);
7231 nelberth 324
 
325
            } else {
326
                $messages = [];
327
                $form_messages = (array) $form->getMessages();
328
                foreach($form_messages  as $fieldname => $field_messages)
329
                {
330
                    $messages[$fieldname] = array_values($field_messages);
331
                }
332
 
333
                return new JsonModel([
334
                    'success'   => false,
335
                    'data'   => $messages
336
                ]);
337
            }
7233 nelberth 338
        }else if ($request->isGet()) {
339
            $hydrator = new ObjectPropertyHydrator();
340
 
341
            $data = [
342
                'success' => true,
343
                'data' => $hydrator->extract($objectives)
7231 nelberth 344
            ];
345
 
7233 nelberth 346
            return new JsonModel($data);
347
        } else {
348
            $data = [
7231 nelberth 349
                'success' => false,
7233 nelberth 350
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
7231 nelberth 351
            ];
352
 
7233 nelberth 353
            return new JsonModel($data);
7231 nelberth 354
        }
355
 
7233 nelberth 356
        return new JsonModel($data);
7231 nelberth 357
 
7233 nelberth 358
    }
7231 nelberth 359
 
360
 
7233 nelberth 361
 
362
 
363
    public function deleteAction(){
364
        $currentUserPlugin = $this->plugin('currentUserPlugin');
365
        $currentCompany = $currentUserPlugin->getCompany();
366
        $currentUser = $currentUserPlugin->getUser();
367
 
368
        $request = $this->getRequest();
369
        $uuid = $this->params()->fromRoute('id');
7231 nelberth 370
 
371
 
7233 nelberth 372
        if (!$uuid) {
373
            $data = [
7231 nelberth 374
                'success' => false,
375
                'data' => 'ERROR_INVALID_PARAMETER'
376
            ];
7233 nelberth 377
 
378
            return new JsonModel($data);
7231 nelberth 379
        }
380
 
7233 nelberth 381
 
382
 
383
        $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
384
        $objectives = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($uuid);
385
 
386
        if (!$objectives) {
387
            $data = [
7231 nelberth 388
                'success' => false,
389
                'data' => 'ERROR_RECORD_NOT_FOUND'
390
            ];
7233 nelberth 391
 
392
            return new JsonModel($data);
7231 nelberth 393
        }
7233 nelberth 394
 
395
        if ($objectives->company_id != $currentCompany->id) {
396
            return new JsonModel([
7231 nelberth 397
                'success' => false,
398
                'data' => 'ERROR_UNAUTHORIZED'
7233 nelberth 399
            ]);
400
        }
401
 
402
        if ($request->isPost()) {
7231 nelberth 403
 
404
 
7233 nelberth 405
            $result = $highPerformanceTeamsGroupsMapper->delete($objectives->id);
406
            if ($result) {
407
                $this->logger->info('Se borro el objetivo con el titulo ' . $objectives->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
408
 
409
                $data = [
410
                    'success' => true,
411
                    'data' => 'LABEL_RECORD_DELETED'
412
                ];
7231 nelberth 413
            } else {
7233 nelberth 414
 
415
                $data = [
416
                    'success' => false,
417
                    'data' => $highPerformanceTeamsGroupsMapper->getError()
418
                ];
419
 
420
                return new JsonModel($data);
7231 nelberth 421
            }
7233 nelberth 422
        } else {
423
            $data = [
7231 nelberth 424
                'success' => false,
7233 nelberth 425
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
7231 nelberth 426
            ];
7233 nelberth 427
 
7231 nelberth 428
            return new JsonModel($data);
429
        }
7233 nelberth 430
 
7231 nelberth 431
        return new JsonModel($data);
432
    }
433
 
7233 nelberth 434
 
435
 
436
    public function reportAction() {
7231 nelberth 437
        $currentUserPlugin = $this->plugin('currentUserPlugin');
438
        $currentUser = $currentUserPlugin->getUser();
7233 nelberth 439
        $currentCompany = $currentUserPlugin->getCompany();
440
 
7231 nelberth 441
        $request = $this->getRequest();
7233 nelberth 442
        $uuid = $this->params()->fromRoute('id');
443
 
444
 
445
        if (!$uuid) {
7231 nelberth 446
            $data = [
447
                'success' => false,
448
                'data' => 'ERROR_INVALID_PARAMETER'
449
            ];
7233 nelberth 450
 
451
            return new JsonModel($data);
7231 nelberth 452
        }
7233 nelberth 453
 
454
        $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
455
        $recordsObjectives = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($uuid);
7231 nelberth 456
 
7233 nelberth 457
        if (!$recordsObjectives) {
458
            $data = [
7231 nelberth 459
                'success' => false,
7233 nelberth 460
                'data' => 'Objetivo ERROR_RECORD_NOT_FOUND'
7231 nelberth 461
            ];
7233 nelberth 462
 
463
            return new JsonModel($data);
7231 nelberth 464
        }
7233 nelberth 465
 
466
        if ($recordsObjectives->company_id != $currentCompany->id) {
467
            return new JsonModel([
7231 nelberth 468
                'success' => false,
469
                'data' => 'ERROR_UNAUTHORIZED'
7233 nelberth 470
            ]);
471
        }
472
        $planningObjectivesAndGoalsGoalsMapper = PlanningObjectivesAndGoalsGoalsMapper::getInstance($this->adapter);
473
        $recordsGoals = $planningObjectivesAndGoalsGoalsMapper->fetchAll($recordsObjectives->id);
7231 nelberth 474
 
7233 nelberth 475
        $planningObjectivesAndGoalsTaskMapper = PlanningObjectivesAndGoalsTaskMapper::getInstance($this->adapter);
476
        $userMapper = UserMapper::getInstance($this->adapter);
477
        $PlanningObjectivesAndGoalsTaskMemberMapper = PlanningObjectivesAndGoalsTaskMembersMapper::getInstance($this->adapter);
7231 nelberth 478
 
7233 nelberth 479
            foreach($recordsGoals as $record2){
7231 nelberth 480
 
7233 nelberth 481
                $recordsTask = $planningObjectivesAndGoalsTaskMapper->fetchAll($record2->id);
7231 nelberth 482
 
7233 nelberth 483
 
484
                foreach($recordsTask as $record3){
485
                    $recordsTaskMembers =  $PlanningObjectivesAndGoalsTaskMemberMapper->fetchAll($record3->id);
486
                    $usersName=[];
487
                    foreach($recordsTaskMembers as $record4){
488
                        $datosUser = $userMapper->fetchOne($record4->user_id);
489
                        $usersName[$record4->id]=$datosUser->first_name.' '.$datosUser->last_name;
490
                    }
491
                    $record3->who=$usersName;
7231 nelberth 492
                }
493
 
7233 nelberth 494
 
495
 
496
 
497
                $record2->task = $recordsTask;
7231 nelberth 498
            }
7233 nelberth 499
           $items=[
500
            'objetives' => [
501
                'title'=>$recordsObjectives->title,
502
                'description' =>$recordsObjectives->description,
503
                'date'=>$recordsObjectives->date,
504
                'status'=>$recordsObjectives->status,
505
                'goals'=>$recordsGoals
506
            ]
7231 nelberth 507
            ];
7233 nelberth 508
 
7231 nelberth 509
 
7233 nelberth 510
 
7231 nelberth 511
 
512
 
7233 nelberth 513
        if ($request->isGet()) {
514
 
515
 
516
            return $this->renderPdf($currentCompany,$items);
517
        } else {
518
            $data = [
7231 nelberth 519
                'success' => false,
7233 nelberth 520
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
7231 nelberth 521
            ];
7233 nelberth 522
 
7231 nelberth 523
            return new JsonModel($data);
524
        }
7233 nelberth 525
 
7231 nelberth 526
        return new JsonModel($data);
527
    }
7233 nelberth 528
*/
529
}