Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
16766 efrain 1
<?php
16785 efrain 2
 
16766 efrain 3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Controller;
6
 
7
use Laminas\Db\Adapter\AdapterInterface;
16768 efrain 8
 
16766 efrain 9
use Laminas\Mvc\Controller\AbstractActionController;
10
use Laminas\Log\LoggerInterface;
16785 efrain 11
use Laminas\View\Model\JsonModel;
16766 efrain 12
use Laminas\View\Model\ViewModel;
16785 efrain 13
use LeadersLinked\Library\Functions;
14
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
15
use LeadersLinked\Mapper\PlanningTaskMapper;
16766 efrain 16
use LeadersLinked\Model\PlanningTask;
17
use LeadersLinked\Form\Planning\PlanningTaskForm;
16785 efrain 18
use LeadersLinked\Form\Planning\PlanningTaskHeaderForm;
19
use LeadersLinked\Mapper\PlanningPeriodMapper;
20
use LeadersLinked\Model\PlanningObjective;
21
use LeadersLinked\Mapper\PlanningObjectiveMapper;
22
use LeadersLinked\Mapper\PlanningGoalMapper;
23
use LeadersLinked\Mapper\PlanningTaskUserMapper;
16766 efrain 24
use LeadersLinked\Mapper\UserMapper;
16785 efrain 25
use LeadersLinked\Model\PlanningTaskUser;
16766 efrain 26
 
16785 efrain 27
class PlanningTaskController extends AbstractActionController {
28
 
16766 efrain 29
    /**
30
     *
16769 efrain 31
     * @var \Laminas\Db\Adapter\AdapterInterface
16766 efrain 32
     */
33
    private $adapter;
34
 
35
    /**
36
     *
16769 efrain 37
     * @var \LeadersLinked\Cache\CacheInterface
16766 efrain 38
     */
16769 efrain 39
    private $cache;
40
 
41
 
42
    /**
43
     *
44
     * @var \Laminas\Log\LoggerInterface
45
     */
16766 efrain 46
    private $logger;
47
 
48
    /**
49
     *
50
     * @var array
51
     */
52
    private $config;
53
 
16769 efrain 54
 
16766 efrain 55
    /**
56
     *
16769 efrain 57
     * @var \Laminas\Mvc\I18n\Translator
58
     */
59
    private $translator;
60
 
61
 
62
    /**
63
     *
64
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
65
     * @param \LeadersLinked\Cache\CacheInterface $cache
66
     * @param \Laminas\Log\LoggerInterface LoggerInterface $logger
16766 efrain 67
     * @param array $config
16769 efrain 68
     * @param \Laminas\Mvc\I18n\Translator $translator
16766 efrain 69
     */
16769 efrain 70
    public function __construct($adapter, $cache, $logger, $config, $translator)
16766 efrain 71
    {
16769 efrain 72
        $this->adapter      = $adapter;
73
        $this->cache        = $cache;
74
        $this->logger       = $logger;
75
        $this->config       = $config;
76
        $this->translator   = $translator;
16766 efrain 77
    }
78
 
16785 efrain 79
    public function indexAction() {
16766 efrain 80
 
16785 efrain 81
 
16766 efrain 82
        $currentUserPlugin = $this->plugin('currentUserPlugin');
83
        $currentUser = $currentUserPlugin->getUser();
84
        $currentCompany = $currentUserPlugin->getCompany();
85
 
86
 
87
        $request = $this->getRequest();
88
        if($request->isGet()) {
89
 
90
 
91
            $headers  = $request->getHeaders();
92
 
93
            $isJson = false;
94
            if($headers->has('Accept')) {
95
                $accept = $headers->get('Accept');
96
 
97
                $prioritized = $accept->getPrioritized();
98
 
99
                foreach($prioritized as $key => $value) {
100
                    $raw = trim($value->getRaw());
101
 
102
                    if(!$isJson) {
103
                        $isJson = strpos($raw, 'json');
104
                    }
105
 
106
                }
107
            }
16785 efrain 108
 
16766 efrain 109
            if($isJson) {
16785 efrain 110
                $link_add = '';
16766 efrain 111
 
16785 efrain 112
                $period_id = Functions::sanitizeFilterString($this->params()->fromQuery('period_id'));
113
                $objective_id = Functions::sanitizeFilterString($this->params()->fromQuery('objective_id'));
114
                $goal_id = Functions::sanitizeFilterString($this->params()->fromQuery('goal_id'));
115
 
116
                if(empty($period_id)) {
117
 
118
                    return new JsonModel([
119
                        'success' => true,
120
                        'data' => [
121
                            'items' => [],
122
                            'total' => 0,
123
                            'link_add' => '',
124
                        ]
125
                    ]);
126
 
127
                }
128
 
16766 efrain 129
 
16785 efrain 130
                $planningPeriodMapper = PlanningPeriodMapper::getInstance($this->adapter);
131
                $planningPeriod = $planningPeriodMapper->fetchOneByUuid($period_id);
16766 efrain 132
 
16785 efrain 133
                if (!$planningPeriod) {
16766 efrain 134
                    $data = [
135
                        'success' => false,
136
                        'data' => 'ERROR_RECORD_NOT_FOUND'
137
                    ];
16785 efrain 138
 
139
                    return new JsonModel($data);
140
                }
141
 
142
                if ($planningPeriod->company_id != $currentCompany->id) {
143
                    return new JsonModel([
144
                        'success' => false,
145
                        'data' => 'ERROR_UNAUTHORIZED'
146
                    ]);
147
                }
148
 
149
 
150
 
151
 
152
                $objectives = [];
153
                $goals = [];
154
                $planningObjectiveMapper = PlanningObjectiveMapper::getInstance($this->adapter);
155
 
156
                if(empty($objective_id)) {
157
                    $planningObjective = null;
158
 
159
 
160
                    $records = $planningObjectiveMapper->fetchAllActiveByCompanyIdAndPeriodId($planningPeriod->company_id, $planningPeriod->id);
161
                    foreach($records as $record)
162
                    {
163
                        if(empty($planningObjective)) {
164
                            $planningObjective = $record;
165
                        }
166
 
167
                        $objectives[ $record->uuid ] = $record->title;
168
                    }
169
 
16766 efrain 170
 
16785 efrain 171
                } else {
16766 efrain 172
 
173
 
16785 efrain 174
                    $planningObjective = $planningObjectiveMapper->fetchOneByUuid($objective_id);
175
 
176
                    if (!$planningObjective) {
177
                        $data = [
178
                            'success' => false,
179
                            'data' => 'ERROR_RECORD_NOT_FOUND'
180
                        ];
16766 efrain 181
 
16785 efrain 182
                        return new JsonModel($data);
183
                    }
184
 
185
                    if ($planningObjective->period_id != $planningPeriod->id) {
186
                        return new JsonModel([
187
                            'success' => false,
188
                            'data' => 'ERROR_UNAUTHORIZED'
189
                        ]);
190
                    }
191
 
192
                }
193
 
194
                if(empty($planningObjective)) {
195
                    return new JsonModel([
196
                        'success' => true,
197
                        'data' => [
198
                            'items'         => [],
199
                            'total'         => 0,
200
                            'link_add'      => '',
201
                            'objectives'    => $objectives,
202
                            'goals'         => $goals,
203
                        ]
204
                    ]);
205
                }
206
 
207
                $planningGoalMapper = PlanningGoalMapper::getInstance($this->adapter);
208
 
209
                if(empty($goal_id)) {
210
                    $planningGoal = null;
211
 
212
 
213
                    $records = $planningGoalMapper->fetchAllActiveByCompanyIdAndObjectiveId($planningPeriod->company_id, $planningObjective->id);
214
                    foreach($records as $record)
215
                    {
216
                        if(empty($planningGoal)) {
217
                            $planningGoal = $record;
16766 efrain 218
                        }
16785 efrain 219
 
220
                        $goals[ $record->uuid ] = $record->title;
221
                    }
222
 
223
                } else {
224
 
225
 
226
                    $planningGoal = $planningGoalMapper->fetchOneByUuid($goal_id);
227
 
228
                    if (!$planningGoal) {
16766 efrain 229
                        $data = [
230
                            'success' => false,
16785 efrain 231
                            'data' => 'ERROR_RECORD_NOT_FOUND'
16766 efrain 232
                        ];
16785 efrain 233
 
234
                        return new JsonModel($data);
235
                    }
16766 efrain 236
 
16785 efrain 237
                    if ($planningGoal->objective_id != $planningObjective->id) {
238
                        return new JsonModel([
239
                            'success' => false,
240
                            'data' => 'ERROR_UNAUTHORIZED'
241
                        ]);
16766 efrain 242
                    }
243
 
244
                }
16785 efrain 245
 
246
                if(empty($planningGoal)) {
247
                    return new JsonModel([
248
                        'success' => true,
249
                        'data' => [
250
                            'items'         => [],
251
                            'total'         => 0,
252
                            'link_add'      => '',
253
                            'objectives'    => $objectives,
254
                            'goals'         => $goals,
255
                        ]
256
                    ]);
257
                }
258
 
259
 
260
 
261
                $link_add = $this->url()->fromRoute('planning/tasks/add', ['goal_id' => $planningGoal->uuid ]);
262
 
263
 
264
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
265
                $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'planning/tasks/add');
266
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'planning/tasks/edit');
267
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'planning/tasks/delete');
268
 
269
                $search = $this->params()->fromQuery('search', []);
270
                $search = empty($search['value']) ? '' :  Functions::sanitizeFilterString($search['value']);
271
 
272
 
273
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
274
                $page               = (intval($this->params()->fromQuery('start', 1), 10)/$records_x_page)+1;
275
                $order =  $this->params()->fromQuery('order', []);
276
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
277
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(Functions::sanitizeFilterString($order[0]['dir']));
278
 
279
                $fields =  ['title', 'start', 'end', 'progress'];
280
 
281
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'title';
282
 
283
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
284
                    $order_direction = 'ASC';
285
                }
286
 
16766 efrain 287
                $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
16785 efrain 288
                $paginator = $planningTaskMapper->fetchAllDataTableByCompanyIdAndGoalId($planningGoal->company_id, $planningGoal->id, $search, $page, $records_x_page, $order_field, $order_direction);
16766 efrain 289
 
16785 efrain 290
 
16766 efrain 291
                $items = [];
292
                $records = $paginator->getCurrentItems();
293
 
294
                foreach($records as $record)
295
                {
16785 efrain 296
                    $dtStart = \DateTime::createFromFormat('Y-m-d', $record->start);
297
                    $dtEnd = \DateTime::createFromFormat('Y-m-d', $record->end);
298
 
16766 efrain 299
                    $item = [
16785 efrain 300
                        'title'         => $record->title,
301
                        'description'   => $record->description,
302
                        'status'        => $record->status,
303
                        'start'         => $dtStart->format('d/m/Y'),
304
                        'end'           => $dtEnd->format('d/m/Y'),
305
                        'progress'      => $record->progress ? $record->progress : 0,
16766 efrain 306
                        'actions' => [
16785 efrain 307
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('planning/tasks/edit', ['id' => $record->uuid]) : '',
308
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('planning/tasks/delete', ['id' => $record->uuid]) : '',
309
                            //'link_goal' => $allowTask ? $this->url()->fromRoute('planning/tasks/tasks', ['goal_id' => $record->uuid]) : '',
310
                            //'link_goal_report' => $allowTaskReport ? $this->url()->fromRoute('planning/tasks/report', ['id' => $record->uuid]) : '',
311
                        ]
16766 efrain 312
                    ];
313
                    array_push($items, $item);
314
                }
16785 efrain 315
 
16766 efrain 316
 
317
                return new JsonModel([
318
                    'success' => true,
319
                    'data' => [
16785 efrain 320
                        'items'         => $items,
321
                        'objectives'    => $objectives,
322
                        'goals'         => $goals,
323
                        'total'         => $paginator->getTotalItemCount(),
324
                        'link_add'      => $allowAdd ? $link_add : '',
325
 
16766 efrain 326
                    ]
327
                ]);
16785 efrain 328
 
16766 efrain 329
            } else  {
16785 efrain 330
                $form = new PlanningTaskForm($this->adapter, $currentCompany->id);
331
                $formFilter = new PlanningTaskHeaderForm($this->adapter, $currentCompany->id);
332
 
16766 efrain 333
                $this->layout()->setTemplate('layout/layout-backend');
334
                $viewModel = new ViewModel();
16785 efrain 335
                $viewModel->setTemplate('leaders-linked/planning/tasks');
16766 efrain 336
                $viewModel->setVariables([
16785 efrain 337
                    'form' => $form,
338
                    'formFilter' => $formFilter,
16766 efrain 339
                ]);
340
                return $viewModel ;
341
            }
342
        } else {
343
            return new JsonModel([
344
                'success' => false,
345
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
346
            ]);
347
        }
348
    }
16785 efrain 349
 
350
 
351
 
16766 efrain 352
    public function addAction()
353
    {
16785 efrain 354
 
355
        $currentUserPlugin = $this->plugin('currentUserPlugin');
16766 efrain 356
        $currentUser = $currentUserPlugin->getUser();
357
        $currentCompany = $currentUserPlugin->getCompany();
16785 efrain 358
 
16766 efrain 359
        $request = $this->getRequest();
16785 efrain 360
        if($request->isPost()) {
361
            $goal_id = Functions::sanitizeFilterString($this->params()->fromRoute('goal_id'));
16766 efrain 362
 
16785 efrain 363
            $planningGoalMapper = PlanningGoalMapper::getInstance($this->adapter);
364
            $planningGoal = $planningGoalMapper->fetchOneByUuid($goal_id);
365
 
366
            if (!$planningGoal) {
16766 efrain 367
                $data = [
368
                    'success' => false,
16785 efrain 369
                    'data' => 'ERROR_RECORD_NOT_FOUND'
16766 efrain 370
                ];
16785 efrain 371
 
372
                return new JsonModel($data);
373
            }
16766 efrain 374
 
16785 efrain 375
            if ($planningGoal->company_id != $currentCompany->id) {
376
                return new JsonModel([
377
                    'success' => false,
378
                    'data' => 'ERROR_UNAUTHORIZED'
379
                ]);
380
            }
16766 efrain 381
 
16785 efrain 382
 
383
 
16766 efrain 384
            $form = new  PlanningTaskForm($this->adapter, $currentCompany->id);
385
            $dataPost = $request->getPost()->toArray();
16785 efrain 386
 
387
            if(!empty($dataPost['date_range'])) {
388
                $s = explode('-', $dataPost['date_range']);
389
                $start = trim($s[0]);
390
                $end = trim($s[1]);
391
 
392
                $dtStart = \DateTime::createFromFormat('d/m/Y', $start);
393
                $dtEnd  = \DateTime::createFromFormat('d/m/Y', $end);
394
                if(!$dtStart &&  !$dtEnd) {
395
                    $dataPost['date_range'] = '';
396
                }
16766 efrain 397
            }
16785 efrain 398
 
399
 
400
 
16766 efrain 401
            $form->setData($dataPost);
16785 efrain 402
 
16766 efrain 403
            if($form->isValid()) {
404
                $dataPost = (array) $form->getData();
16785 efrain 405
                $dataPost['status'] =  empty($dataPost['status']) ? PlanningTask::STATUS_INACTIVE : $dataPost['status'];
406
 
407
 
16766 efrain 408
                $hydrator = new ObjectPropertyHydrator();
409
                $planningTask = new PlanningTask();
16785 efrain 410
                $planningTask->company_id = $planningGoal->company_id;
411
                $planningTask->period_id = $planningGoal->period_id;
412
                $planningTask->objective_id = $planningGoal->objective_id;
413
                $planningTask->goal_id = $planningGoal->id;
414
 
16766 efrain 415
                $hydrator->hydrate($dataPost, $planningTask);
16785 efrain 416
 
417
 
418
 
16766 efrain 419
                $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
420
                $result = $planningTaskMapper->insert($planningTask);
421
 
422
                if($result) {
423
                    $userMapper = UserMapper::getInstance($this->adapter);
16785 efrain 424
                    $planningTaskUserMapper = PlanningTaskUserMapper::getInstance($this->adapter);
425
 
426
 
427
                    $user_ids = empty($dataPost['user_id']) ? [] : $dataPost['user_id'];
428
                    foreach($user_ids as $user_id)
429
                    {
430
                        $user = $userMapper->fetchOneByUuid($user_id);
431
                        if($user) {
432
                            $planningTaskUser = new PlanningTaskUser();
433
                            $planningTaskUser->company_id = $planningTask->company_id;
434
                            $planningTaskUser->period_id = $planningTask->period_id;
435
                            $planningTaskUser->objective_id = $planningTask->objective_id;
436
                            $planningTaskUser->goal_id = $planningTask->goal_id;
437
                            $planningTaskUser->task_id = $planningTask->id;
438
                            $planningTaskUser->user_id = $user->id;
439
 
440
                            $planningTaskUserMapper->insert($planningTaskUser);
441
                        }
16766 efrain 442
                    }
443
 
444
 
16785 efrain 445
 
446
                    $this->logger->info('Se agrego el tarea la planificación : ' . $planningTask->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
447
 
16766 efrain 448
                    $data = [
449
                        'success'   => true,
450
                        'data'   => 'LABEL_RECORD_ADDED'
451
                    ];
452
                } else {
453
                    $data = [
454
                        'success'   => false,
455
                        'data'      => $planningTaskMapper->getError()
456
                    ];
457
 
458
                }
459
 
460
                return new JsonModel($data);
461
 
462
            } else {
463
                $messages = [];
464
                $form_messages = (array) $form->getMessages();
465
                foreach($form_messages  as $fieldname => $field_messages)
466
                {
467
 
468
                    $messages[$fieldname] = array_values($field_messages);
469
                }
470
 
471
                return new JsonModel([
472
                    'success'   => false,
473
                    'data'   => $messages
474
                ]);
475
            }
476
 
477
        } else {
478
            $data = [
479
                'success' => false,
480
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
481
            ];
482
 
483
            return new JsonModel($data);
484
        }
485
 
486
        return new JsonModel($data);
16785 efrain 487
 
488
 
489
    }
16766 efrain 490
 
16785 efrain 491
 
492
 
493
    public function editAction()
494
    {
16766 efrain 495
 
496
        $currentUserPlugin = $this->plugin('currentUserPlugin');
497
        $currentUser = $currentUserPlugin->getUser();
498
        $currentCompany = $currentUserPlugin->getCompany();
16785 efrain 499
 
500
 
16766 efrain 501
        $request = $this->getRequest();
502
        $uuid = $this->params()->fromRoute('id');
503
 
16785 efrain 504
 
16766 efrain 505
        if(!$uuid) {
506
            $data = [
507
                'success'   => false,
508
                'data'   => 'ERROR_INVALID_PARAMETER'
509
            ];
510
 
511
            return new JsonModel($data);
512
        }
513
 
514
        $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
16785 efrain 515
        $planningTask = $planningTaskMapper->fetchOneByUuid($uuid);
516
 
517
        if (!$planningTask) {
16766 efrain 518
            $data = [
519
                'success' => false,
520
                'data' => 'ERROR_RECORD_NOT_FOUND'
521
            ];
16785 efrain 522
 
16766 efrain 523
            return new JsonModel($data);
524
        }
525
 
16785 efrain 526
        if ($planningTask->company_id != $currentCompany->id) {
527
            return new JsonModel([
528
                'success' => false,
529
                'data' => 'ERROR_UNAUTHORIZED'
530
            ]);
531
        }
532
 
16766 efrain 533
        if($request->isPost()) {
534
            $form = new  PlanningTaskForm($this->adapter, $currentCompany->id);
535
            $dataPost = $request->getPost()->toArray();
16785 efrain 536
            $dataPost['status'] =  empty($dataPost['status']) ? PlanningTask::STATUS_INACTIVE : $dataPost['status'];
537
            if(empty($dataPost['date_range'])) {
538
                $dataPost['start'] = date('Y-m-d');
539
                $dataPost['end'] = date('Y-m-d');
540
            } else {
541
 
542
                $s = explode('-', $dataPost['date_range']);
543
                $start = trim($s[0]);
544
                $end = trim($s[1]);
545
 
546
                $dtStart = \DateTime::createFromFormat('d/m/Y', $start);
547
                $dtEnd  = \DateTime::createFromFormat('d/m/Y', $end);
548
                if($dtStart && $dtEnd) {
549
                    $dataPost['start'] = $dtStart->format('Y-m-d');
550
                    $dataPost['end'] = $dtEnd->format('Y-m-d');
551
 
552
                } else {
553
                    $dataPost['start'] = date('Y-m-d');
554
                    $dataPost['end'] = date('Y-m-d');
555
                }
556
            }
557
 
558
 
16766 efrain 559
            $form->setData($dataPost);
560
 
561
            if($form->isValid()) {
562
                $dataPost = (array) $form->getData();
563
 
564
                $hydrator = new ObjectPropertyHydrator();
16785 efrain 565
                $hydrator->hydrate($dataPost, $planningTask);
566
                $result = $planningTaskMapper->update($planningTask);
16766 efrain 567
 
568
                if($result) {
569
                    $userMapper = UserMapper::getInstance($this->adapter);
16785 efrain 570
                    $planningTaskUserMapper = PlanningTaskUserMapper::getInstance($this->adapter);
571
                    $planningTaskUserMapper->deleteAllByTaskId($planningTask->id);
572
 
573
 
574
                    $user_ids = empty($dataPost['user_id']) ? [] : $dataPost['user_id'];
575
                    foreach($user_ids as $user_id)
576
                    {
577
                        $user = $userMapper->fetchOneByUuid($user_id);
578
                        if($user) {
579
                            $planningTaskUser = new PlanningTaskUser();
580
                            $planningTaskUser->company_id = $planningTask->company_id;
581
                            $planningTaskUser->period_id = $planningTask->period_id;
582
                            $planningTaskUser->objective_id = $planningTask->objective_id;
583
                            $planningTaskUser->goal_id = $planningTask->goal_id;
584
                            $planningTaskUser->task_id = $planningTask->id;
585
                            $planningTaskUser->user_id = $user->id;
586
 
587
                            $planningTaskUserMapper->insert($planningTaskUser);
588
                        }
16766 efrain 589
                    }
590
 
16785 efrain 591
 
592
                    $this->logger->info('Se actualizo el tarea la planificación : ' . $planningTask->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
593
 
16766 efrain 594
                    $data = [
595
                        'success' => true,
596
                        'data' => 'LABEL_RECORD_UPDATED'
597
                    ];
598
                } else {
599
                    $data = [
600
                        'success'   => false,
601
                        'data'      => $planningTaskMapper->getError()
602
                    ];
603
                }
604
 
605
                return new JsonModel($data);
606
 
607
            } else {
608
                $messages = [];
609
                $form_messages = (array) $form->getMessages();
610
                foreach($form_messages  as $fieldname => $field_messages)
611
                {
612
                    $messages[$fieldname] = array_values($field_messages);
613
                }
614
 
615
                return new JsonModel([
616
                    'success'   => false,
617
                    'data'   => $messages
618
                ]);
619
            }
16785 efrain 620
        } else if ($request->isGet()) {
621
 
622
            $user_ids = [];
623
 
16766 efrain 624
            $userMapper = UserMapper::getInstance($this->adapter);
16785 efrain 625
            $planningTaskUserMapper = PlanningTaskUserMapper::getInstance($this->adapter);
16766 efrain 626
 
16785 efrain 627
            $records = $planningTaskUserMapper->fetchAllByTaskId($planningTask->id);
628
            foreach($records as $record)
629
            {
630
                $user = $userMapper->fetchOne($record->user_id);
631
                if($user) {
632
                    array_push($user_ids, $user->uuid);
633
                }
16766 efrain 634
            }
16785 efrain 635
 
636
 
637
 
16766 efrain 638
            $data = [
639
                'success' => true,
16785 efrain 640
                'data' => [
641
                    'title' => $planningTask->title,
642
                    'description' => $planningTask->description,
643
                    'start' => $planningTask->start,
644
                    'end' => $planningTask->end,
645
                    'status' => $planningTask->status,
646
                    'progress' => $planningTask->progress,
647
                    'cost' => $planningTask->cost,
648
                    'place' => $planningTask->place,
649
                    'how' => $planningTask->how,
650
                    'detour' => $planningTask->detour,
651
                    'evaluation' => $planningTask->evaluation,
652
                    'priority' => $planningTask->priority,
653
                    'urgent' => $planningTask->urgent,
654
                    'user_id' => $user_ids,
655
                    'hours' => $planningTask->hours,
656
 
657
                ]
16766 efrain 658
            ];
659
 
660
            return new JsonModel($data);
661
        } else {
662
            $data = [
663
                'success' => false,
664
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
665
            ];
666
 
667
            return new JsonModel($data);
668
        }
669
 
670
        return new JsonModel($data);
16785 efrain 671
 
16766 efrain 672
    }
16785 efrain 673
 
674
 
675
 
676
 
677
    public function deleteAction()
678
    {
16766 efrain 679
        $currentUserPlugin = $this->plugin('currentUserPlugin');
680
        $currentCompany = $currentUserPlugin->getCompany();
681
        $currentUser = $currentUserPlugin->getUser();
16785 efrain 682
 
16766 efrain 683
        $request = $this->getRequest();
684
        $uuid = $this->params()->fromRoute('id');
685
 
16785 efrain 686
 
687
        if(!$uuid) {
16766 efrain 688
            $data = [
16785 efrain 689
                'success'   => false,
690
                'data'   => 'ERROR_INVALID_PARAMETER'
16766 efrain 691
            ];
16785 efrain 692
 
16766 efrain 693
            return new JsonModel($data);
694
        }
16785 efrain 695
 
696
        $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
697
        $planningTask = $planningTaskMapper->fetchOneByUuid($uuid);
698
 
699
        if (!$planningTask) {
16766 efrain 700
            $data = [
701
                'success' => false,
702
                'data' => 'ERROR_RECORD_NOT_FOUND'
703
            ];
704
 
16785 efrain 705
            return new JsonModel($data);
16766 efrain 706
        }
16785 efrain 707
 
708
        if ($planningTask->company_id != $currentCompany->id) {
709
            return new JsonModel([
16766 efrain 710
                'success' => false,
16785 efrain 711
                'data' => 'ERROR_UNAUTHORIZED'
712
            ]);
16766 efrain 713
        }
714
 
16785 efrain 715
 
16766 efrain 716
        if ($request->isPost()) {
16785 efrain 717
 
718
 
719
            $result = $planningTaskMapper->delete($planningTask);
16766 efrain 720
            if ($result) {
16785 efrain 721
                $this->logger->info('Se borro el tarea de la planificación :' . $planningTask->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
722
 
16766 efrain 723
                $data = [
724
                    'success' => true,
725
                    'data' => 'LABEL_RECORD_DELETED'
726
                ];
727
            } else {
16785 efrain 728
 
16766 efrain 729
                $data = [
730
                    'success' => false,
731
                    'data' => $planningTaskMapper->getError()
732
                ];
16785 efrain 733
 
16766 efrain 734
                return new JsonModel($data);
735
            }
736
        } else {
737
            $data = [
738
                'success' => false,
739
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
740
            ];
16785 efrain 741
 
16766 efrain 742
            return new JsonModel($data);
743
        }
16785 efrain 744
 
16766 efrain 745
        return new JsonModel($data);
746
    }
747
}