Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16785 | | 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
 
16927 efrain 156
 
16785 efrain 157
                if(empty($objective_id)) {
158
                    $planningObjective = null;
159
 
160
 
161
                    $records = $planningObjectiveMapper->fetchAllActiveByCompanyIdAndPeriodId($planningPeriod->company_id, $planningPeriod->id);
162
                    foreach($records as $record)
163
                    {
164
                        if(empty($planningObjective)) {
165
                            $planningObjective = $record;
166
                        }
167
 
168
                        $objectives[ $record->uuid ] = $record->title;
169
                    }
170
 
16766 efrain 171
 
16785 efrain 172
                } else {
16766 efrain 173
 
174
 
16785 efrain 175
                    $planningObjective = $planningObjectiveMapper->fetchOneByUuid($objective_id);
176
 
177
                    if (!$planningObjective) {
178
                        $data = [
179
                            'success' => false,
180
                            'data' => 'ERROR_RECORD_NOT_FOUND'
181
                        ];
16766 efrain 182
 
16785 efrain 183
                        return new JsonModel($data);
184
                    }
185
 
186
                    if ($planningObjective->period_id != $planningPeriod->id) {
187
                        return new JsonModel([
188
                            'success' => false,
189
                            'data' => 'ERROR_UNAUTHORIZED'
190
                        ]);
191
                    }
192
 
193
                }
194
 
195
                if(empty($planningObjective)) {
196
                    return new JsonModel([
197
                        'success' => true,
198
                        'data' => [
199
                            'items'         => [],
200
                            'total'         => 0,
201
                            'link_add'      => '',
202
                            'objectives'    => $objectives,
203
                            'goals'         => $goals,
204
                        ]
205
                    ]);
206
                }
207
 
208
                $planningGoalMapper = PlanningGoalMapper::getInstance($this->adapter);
209
 
210
                if(empty($goal_id)) {
211
                    $planningGoal = null;
212
 
213
 
214
                    $records = $planningGoalMapper->fetchAllActiveByCompanyIdAndObjectiveId($planningPeriod->company_id, $planningObjective->id);
215
                    foreach($records as $record)
216
                    {
217
                        if(empty($planningGoal)) {
218
                            $planningGoal = $record;
16766 efrain 219
                        }
16785 efrain 220
 
221
                        $goals[ $record->uuid ] = $record->title;
222
                    }
223
 
224
                } else {
225
 
226
 
227
                    $planningGoal = $planningGoalMapper->fetchOneByUuid($goal_id);
228
 
229
                    if (!$planningGoal) {
16766 efrain 230
                        $data = [
231
                            'success' => false,
16785 efrain 232
                            'data' => 'ERROR_RECORD_NOT_FOUND'
16766 efrain 233
                        ];
16785 efrain 234
 
235
                        return new JsonModel($data);
236
                    }
16766 efrain 237
 
16785 efrain 238
                    if ($planningGoal->objective_id != $planningObjective->id) {
239
                        return new JsonModel([
240
                            'success' => false,
241
                            'data' => 'ERROR_UNAUTHORIZED'
242
                        ]);
16766 efrain 243
                    }
244
 
245
                }
16785 efrain 246
 
247
                if(empty($planningGoal)) {
248
                    return new JsonModel([
249
                        'success' => true,
250
                        'data' => [
251
                            'items'         => [],
252
                            'total'         => 0,
253
                            'link_add'      => '',
254
                            'objectives'    => $objectives,
255
                            'goals'         => $goals,
256
                        ]
257
                    ]);
258
                }
259
 
260
 
261
 
262
                $link_add = $this->url()->fromRoute('planning/tasks/add', ['goal_id' => $planningGoal->uuid ]);
263
 
264
 
265
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
266
                $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'planning/tasks/add');
267
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'planning/tasks/edit');
268
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'planning/tasks/delete');
269
 
270
                $search = $this->params()->fromQuery('search', []);
271
                $search = empty($search['value']) ? '' :  Functions::sanitizeFilterString($search['value']);
272
 
273
 
274
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
275
                $page               = (intval($this->params()->fromQuery('start', 1), 10)/$records_x_page)+1;
276
                $order =  $this->params()->fromQuery('order', []);
277
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
278
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(Functions::sanitizeFilterString($order[0]['dir']));
279
 
280
                $fields =  ['title', 'start', 'end', 'progress'];
281
 
282
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'title';
283
 
284
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
285
                    $order_direction = 'ASC';
286
                }
287
 
16766 efrain 288
                $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
16785 efrain 289
                $paginator = $planningTaskMapper->fetchAllDataTableByCompanyIdAndGoalId($planningGoal->company_id, $planningGoal->id, $search, $page, $records_x_page, $order_field, $order_direction);
16766 efrain 290
 
16785 efrain 291
 
16766 efrain 292
                $items = [];
293
                $records = $paginator->getCurrentItems();
16927 efrain 294
 
16766 efrain 295
 
296
                foreach($records as $record)
297
                {
16785 efrain 298
                    $dtStart = \DateTime::createFromFormat('Y-m-d', $record->start);
299
                    $dtEnd = \DateTime::createFromFormat('Y-m-d', $record->end);
300
 
16766 efrain 301
                    $item = [
16785 efrain 302
                        'title'         => $record->title,
303
                        'description'   => $record->description,
304
                        'status'        => $record->status,
305
                        'start'         => $dtStart->format('d/m/Y'),
306
                        'end'           => $dtEnd->format('d/m/Y'),
307
                        'progress'      => $record->progress ? $record->progress : 0,
16766 efrain 308
                        'actions' => [
16785 efrain 309
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('planning/tasks/edit', ['id' => $record->uuid]) : '',
310
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('planning/tasks/delete', ['id' => $record->uuid]) : '',
311
                            //'link_goal' => $allowTask ? $this->url()->fromRoute('planning/tasks/tasks', ['goal_id' => $record->uuid]) : '',
312
                            //'link_goal_report' => $allowTaskReport ? $this->url()->fromRoute('planning/tasks/report', ['id' => $record->uuid]) : '',
313
                        ]
16766 efrain 314
                    ];
315
                    array_push($items, $item);
316
                }
16785 efrain 317
 
16766 efrain 318
 
319
                return new JsonModel([
320
                    'success' => true,
321
                    'data' => [
16785 efrain 322
                        'items'         => $items,
323
                        'objectives'    => $objectives,
324
                        'goals'         => $goals,
325
                        'total'         => $paginator->getTotalItemCount(),
326
                        'link_add'      => $allowAdd ? $link_add : '',
327
 
16766 efrain 328
                    ]
329
                ]);
16785 efrain 330
 
16766 efrain 331
            } else  {
16785 efrain 332
                $form = new PlanningTaskForm($this->adapter, $currentCompany->id);
333
                $formFilter = new PlanningTaskHeaderForm($this->adapter, $currentCompany->id);
334
 
16766 efrain 335
                $this->layout()->setTemplate('layout/layout-backend');
336
                $viewModel = new ViewModel();
16785 efrain 337
                $viewModel->setTemplate('leaders-linked/planning/tasks');
16766 efrain 338
                $viewModel->setVariables([
16785 efrain 339
                    'form' => $form,
340
                    'formFilter' => $formFilter,
16766 efrain 341
                ]);
342
                return $viewModel ;
343
            }
344
        } else {
345
            return new JsonModel([
346
                'success' => false,
347
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
348
            ]);
349
        }
350
    }
16785 efrain 351
 
352
 
353
 
16766 efrain 354
    public function addAction()
355
    {
16785 efrain 356
 
357
        $currentUserPlugin = $this->plugin('currentUserPlugin');
16766 efrain 358
        $currentUser = $currentUserPlugin->getUser();
359
        $currentCompany = $currentUserPlugin->getCompany();
16785 efrain 360
 
16766 efrain 361
        $request = $this->getRequest();
16785 efrain 362
        if($request->isPost()) {
363
            $goal_id = Functions::sanitizeFilterString($this->params()->fromRoute('goal_id'));
16766 efrain 364
 
16785 efrain 365
            $planningGoalMapper = PlanningGoalMapper::getInstance($this->adapter);
366
            $planningGoal = $planningGoalMapper->fetchOneByUuid($goal_id);
367
 
368
            if (!$planningGoal) {
16766 efrain 369
                $data = [
370
                    'success' => false,
16785 efrain 371
                    'data' => 'ERROR_RECORD_NOT_FOUND'
16766 efrain 372
                ];
16785 efrain 373
 
374
                return new JsonModel($data);
375
            }
16766 efrain 376
 
16785 efrain 377
            if ($planningGoal->company_id != $currentCompany->id) {
378
                return new JsonModel([
379
                    'success' => false,
380
                    'data' => 'ERROR_UNAUTHORIZED'
381
                ]);
382
            }
16766 efrain 383
 
16785 efrain 384
 
385
 
16766 efrain 386
            $form = new  PlanningTaskForm($this->adapter, $currentCompany->id);
387
            $dataPost = $request->getPost()->toArray();
16785 efrain 388
 
389
            if(!empty($dataPost['date_range'])) {
390
                $s = explode('-', $dataPost['date_range']);
391
                $start = trim($s[0]);
392
                $end = trim($s[1]);
393
 
394
                $dtStart = \DateTime::createFromFormat('d/m/Y', $start);
395
                $dtEnd  = \DateTime::createFromFormat('d/m/Y', $end);
396
                if(!$dtStart &&  !$dtEnd) {
397
                    $dataPost['date_range'] = '';
398
                }
16766 efrain 399
            }
16785 efrain 400
 
401
 
402
 
16766 efrain 403
            $form->setData($dataPost);
16785 efrain 404
 
16766 efrain 405
            if($form->isValid()) {
406
                $dataPost = (array) $form->getData();
16785 efrain 407
                $dataPost['status'] =  empty($dataPost['status']) ? PlanningTask::STATUS_INACTIVE : $dataPost['status'];
408
 
409
 
16766 efrain 410
                $hydrator = new ObjectPropertyHydrator();
411
                $planningTask = new PlanningTask();
16785 efrain 412
                $planningTask->company_id = $planningGoal->company_id;
413
                $planningTask->period_id = $planningGoal->period_id;
414
                $planningTask->objective_id = $planningGoal->objective_id;
415
                $planningTask->goal_id = $planningGoal->id;
416
 
16766 efrain 417
                $hydrator->hydrate($dataPost, $planningTask);
16785 efrain 418
 
419
 
420
 
16766 efrain 421
                $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
422
                $result = $planningTaskMapper->insert($planningTask);
423
 
424
                if($result) {
425
                    $userMapper = UserMapper::getInstance($this->adapter);
16785 efrain 426
                    $planningTaskUserMapper = PlanningTaskUserMapper::getInstance($this->adapter);
427
 
428
 
429
                    $user_ids = empty($dataPost['user_id']) ? [] : $dataPost['user_id'];
430
                    foreach($user_ids as $user_id)
431
                    {
432
                        $user = $userMapper->fetchOneByUuid($user_id);
433
                        if($user) {
434
                            $planningTaskUser = new PlanningTaskUser();
435
                            $planningTaskUser->company_id = $planningTask->company_id;
436
                            $planningTaskUser->period_id = $planningTask->period_id;
437
                            $planningTaskUser->objective_id = $planningTask->objective_id;
438
                            $planningTaskUser->goal_id = $planningTask->goal_id;
439
                            $planningTaskUser->task_id = $planningTask->id;
440
                            $planningTaskUser->user_id = $user->id;
441
 
442
                            $planningTaskUserMapper->insert($planningTaskUser);
443
                        }
16766 efrain 444
                    }
445
 
446
 
16785 efrain 447
 
448
                    $this->logger->info('Se agrego el tarea la planificación : ' . $planningTask->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
449
 
16766 efrain 450
                    $data = [
451
                        'success'   => true,
452
                        'data'   => 'LABEL_RECORD_ADDED'
453
                    ];
454
                } else {
455
                    $data = [
456
                        'success'   => false,
457
                        'data'      => $planningTaskMapper->getError()
458
                    ];
459
 
460
                }
461
 
462
                return new JsonModel($data);
463
 
464
            } else {
465
                $messages = [];
466
                $form_messages = (array) $form->getMessages();
467
                foreach($form_messages  as $fieldname => $field_messages)
468
                {
469
 
470
                    $messages[$fieldname] = array_values($field_messages);
471
                }
472
 
473
                return new JsonModel([
474
                    'success'   => false,
475
                    'data'   => $messages
476
                ]);
477
            }
478
 
479
        } else {
480
            $data = [
481
                'success' => false,
482
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
483
            ];
484
 
485
            return new JsonModel($data);
486
        }
487
 
488
        return new JsonModel($data);
16785 efrain 489
 
490
 
491
    }
16766 efrain 492
 
16785 efrain 493
 
494
 
495
    public function editAction()
496
    {
16766 efrain 497
 
498
        $currentUserPlugin = $this->plugin('currentUserPlugin');
499
        $currentUser = $currentUserPlugin->getUser();
500
        $currentCompany = $currentUserPlugin->getCompany();
16785 efrain 501
 
502
 
16766 efrain 503
        $request = $this->getRequest();
504
        $uuid = $this->params()->fromRoute('id');
505
 
16785 efrain 506
 
16766 efrain 507
        if(!$uuid) {
508
            $data = [
509
                'success'   => false,
510
                'data'   => 'ERROR_INVALID_PARAMETER'
511
            ];
512
 
513
            return new JsonModel($data);
514
        }
515
 
516
        $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
16785 efrain 517
        $planningTask = $planningTaskMapper->fetchOneByUuid($uuid);
518
 
519
        if (!$planningTask) {
16766 efrain 520
            $data = [
521
                'success' => false,
522
                'data' => 'ERROR_RECORD_NOT_FOUND'
523
            ];
16785 efrain 524
 
16766 efrain 525
            return new JsonModel($data);
526
        }
527
 
16785 efrain 528
        if ($planningTask->company_id != $currentCompany->id) {
529
            return new JsonModel([
530
                'success' => false,
531
                'data' => 'ERROR_UNAUTHORIZED'
532
            ]);
533
        }
534
 
16766 efrain 535
        if($request->isPost()) {
536
            $form = new  PlanningTaskForm($this->adapter, $currentCompany->id);
537
            $dataPost = $request->getPost()->toArray();
16785 efrain 538
            $dataPost['status'] =  empty($dataPost['status']) ? PlanningTask::STATUS_INACTIVE : $dataPost['status'];
539
            if(empty($dataPost['date_range'])) {
540
                $dataPost['start'] = date('Y-m-d');
541
                $dataPost['end'] = date('Y-m-d');
542
            } else {
543
 
544
                $s = explode('-', $dataPost['date_range']);
545
                $start = trim($s[0]);
546
                $end = trim($s[1]);
547
 
548
                $dtStart = \DateTime::createFromFormat('d/m/Y', $start);
549
                $dtEnd  = \DateTime::createFromFormat('d/m/Y', $end);
550
                if($dtStart && $dtEnd) {
551
                    $dataPost['start'] = $dtStart->format('Y-m-d');
552
                    $dataPost['end'] = $dtEnd->format('Y-m-d');
553
 
554
                } else {
555
                    $dataPost['start'] = date('Y-m-d');
556
                    $dataPost['end'] = date('Y-m-d');
557
                }
558
            }
559
 
560
 
16766 efrain 561
            $form->setData($dataPost);
562
 
563
            if($form->isValid()) {
564
                $dataPost = (array) $form->getData();
565
 
566
                $hydrator = new ObjectPropertyHydrator();
16785 efrain 567
                $hydrator->hydrate($dataPost, $planningTask);
568
                $result = $planningTaskMapper->update($planningTask);
16766 efrain 569
 
570
                if($result) {
571
                    $userMapper = UserMapper::getInstance($this->adapter);
16785 efrain 572
                    $planningTaskUserMapper = PlanningTaskUserMapper::getInstance($this->adapter);
573
                    $planningTaskUserMapper->deleteAllByTaskId($planningTask->id);
574
 
575
 
576
                    $user_ids = empty($dataPost['user_id']) ? [] : $dataPost['user_id'];
577
                    foreach($user_ids as $user_id)
578
                    {
579
                        $user = $userMapper->fetchOneByUuid($user_id);
580
                        if($user) {
581
                            $planningTaskUser = new PlanningTaskUser();
582
                            $planningTaskUser->company_id = $planningTask->company_id;
583
                            $planningTaskUser->period_id = $planningTask->period_id;
584
                            $planningTaskUser->objective_id = $planningTask->objective_id;
585
                            $planningTaskUser->goal_id = $planningTask->goal_id;
586
                            $planningTaskUser->task_id = $planningTask->id;
587
                            $planningTaskUser->user_id = $user->id;
588
 
589
                            $planningTaskUserMapper->insert($planningTaskUser);
590
                        }
16766 efrain 591
                    }
592
 
16785 efrain 593
 
594
                    $this->logger->info('Se actualizo el tarea la planificación : ' . $planningTask->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
595
 
16766 efrain 596
                    $data = [
597
                        'success' => true,
598
                        'data' => 'LABEL_RECORD_UPDATED'
599
                    ];
600
                } else {
601
                    $data = [
602
                        'success'   => false,
603
                        'data'      => $planningTaskMapper->getError()
604
                    ];
605
                }
606
 
607
                return new JsonModel($data);
608
 
609
            } else {
610
                $messages = [];
611
                $form_messages = (array) $form->getMessages();
612
                foreach($form_messages  as $fieldname => $field_messages)
613
                {
614
                    $messages[$fieldname] = array_values($field_messages);
615
                }
616
 
617
                return new JsonModel([
618
                    'success'   => false,
619
                    'data'   => $messages
620
                ]);
621
            }
16785 efrain 622
        } else if ($request->isGet()) {
623
 
624
            $user_ids = [];
625
 
16766 efrain 626
            $userMapper = UserMapper::getInstance($this->adapter);
16785 efrain 627
            $planningTaskUserMapper = PlanningTaskUserMapper::getInstance($this->adapter);
16766 efrain 628
 
16785 efrain 629
            $records = $planningTaskUserMapper->fetchAllByTaskId($planningTask->id);
630
            foreach($records as $record)
631
            {
632
                $user = $userMapper->fetchOne($record->user_id);
633
                if($user) {
634
                    array_push($user_ids, $user->uuid);
635
                }
16766 efrain 636
            }
16785 efrain 637
 
638
 
639
 
16766 efrain 640
            $data = [
641
                'success' => true,
16785 efrain 642
                'data' => [
643
                    'title' => $planningTask->title,
644
                    'description' => $planningTask->description,
645
                    'start' => $planningTask->start,
646
                    'end' => $planningTask->end,
647
                    'status' => $planningTask->status,
648
                    'progress' => $planningTask->progress,
649
                    'cost' => $planningTask->cost,
650
                    'place' => $planningTask->place,
651
                    'how' => $planningTask->how,
652
                    'detour' => $planningTask->detour,
653
                    'evaluation' => $planningTask->evaluation,
654
                    'priority' => $planningTask->priority,
655
                    'urgent' => $planningTask->urgent,
656
                    'user_id' => $user_ids,
657
                    'hours' => $planningTask->hours,
658
 
659
                ]
16766 efrain 660
            ];
661
 
662
            return new JsonModel($data);
663
        } else {
664
            $data = [
665
                'success' => false,
666
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
667
            ];
668
 
669
            return new JsonModel($data);
670
        }
671
 
672
        return new JsonModel($data);
16785 efrain 673
 
16766 efrain 674
    }
16785 efrain 675
 
676
 
677
 
678
 
679
    public function deleteAction()
680
    {
16766 efrain 681
        $currentUserPlugin = $this->plugin('currentUserPlugin');
682
        $currentCompany = $currentUserPlugin->getCompany();
683
        $currentUser = $currentUserPlugin->getUser();
16785 efrain 684
 
16766 efrain 685
        $request = $this->getRequest();
686
        $uuid = $this->params()->fromRoute('id');
687
 
16785 efrain 688
 
689
        if(!$uuid) {
16766 efrain 690
            $data = [
16785 efrain 691
                'success'   => false,
692
                'data'   => 'ERROR_INVALID_PARAMETER'
16766 efrain 693
            ];
16785 efrain 694
 
16766 efrain 695
            return new JsonModel($data);
696
        }
16785 efrain 697
 
698
        $planningTaskMapper = PlanningTaskMapper::getInstance($this->adapter);
699
        $planningTask = $planningTaskMapper->fetchOneByUuid($uuid);
700
 
701
        if (!$planningTask) {
16766 efrain 702
            $data = [
703
                'success' => false,
704
                'data' => 'ERROR_RECORD_NOT_FOUND'
705
            ];
706
 
16785 efrain 707
            return new JsonModel($data);
16766 efrain 708
        }
16785 efrain 709
 
710
        if ($planningTask->company_id != $currentCompany->id) {
711
            return new JsonModel([
16766 efrain 712
                'success' => false,
16785 efrain 713
                'data' => 'ERROR_UNAUTHORIZED'
714
            ]);
16766 efrain 715
        }
716
 
16785 efrain 717
 
16766 efrain 718
        if ($request->isPost()) {
16785 efrain 719
 
720
 
721
            $result = $planningTaskMapper->delete($planningTask);
16766 efrain 722
            if ($result) {
16785 efrain 723
                $this->logger->info('Se borro el tarea de la planificación :' . $planningTask->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
724
 
16766 efrain 725
                $data = [
726
                    'success' => true,
727
                    'data' => 'LABEL_RECORD_DELETED'
728
                ];
729
            } else {
16785 efrain 730
 
16766 efrain 731
                $data = [
732
                    'success' => false,
733
                    'data' => $planningTaskMapper->getError()
734
                ];
16785 efrain 735
 
16766 efrain 736
                return new JsonModel($data);
737
            }
738
        } else {
739
            $data = [
740
                'success' => false,
741
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
742
            ];
16785 efrain 743
 
16766 efrain 744
            return new JsonModel($data);
745
        }
16785 efrain 746
 
16766 efrain 747
        return new JsonModel($data);
748
    }
749
}