Proyectos de Subversion LeadersLinked - Backend

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
9623 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\Log\LoggerInterface;
12
use Laminas\View\Model\ViewModel;
13
use Laminas\View\Model\JsonModel;
14
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
9672 nelberth 15
use LeadersLinked\Model\Topic;
9659 nelberth 16
use LeadersLinked\Mapper\TopicMapper;
9623 nelberth 17
use LeadersLinked\Model\HighPerformanceTeamsGroupsMembers;
18
use LeadersLinked\Model\HighPerformanceTeamsGroups;
19
use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMembersMapper;
20
use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMapper;
21
use LeadersLinked\Mapper\UserMapper;
22
 
9632 nelberth 23
use LeadersLinked\Form\TopicForm;
9623 nelberth 24
use LeadersLinked\Library\Functions;
25
 
26
 
27
class HighPerformanceTeamsGroupsViewForoCategoriesController extends AbstractActionController
28
{
29
    /**
30
     *
31
     * @var AdapterInterface
32
     */
33
    private $adapter;
34
 
35
 
36
    /**
37
     *
38
     * @var AbstractAdapter
39
     */
40
    private $cache;
41
 
42
    /**
43
     *
44
     * @var  LoggerInterface
45
     */
46
    private $logger;
47
 
48
    /**
49
     *
50
     * @var array
51
     */
52
    private $config;
53
 
54
 
55
 
56
    /**
57
     *
58
     * @param AdapterInterface $adapter
59
     * @param AbstractAdapter $cache
60
     * @param LoggerInterface $logger
61
     * @param array $config
62
     */
63
    public function __construct($adapter, $cache , $logger, $config)
64
    {
65
        $this->adapter      = $adapter;
66
        $this->cache        = $cache;
67
        $this->logger       = $logger;
68
        $this->config       = $config;
69
 
70
 
71
    }
72
 
73
 
74
    public function indexAction()
75
    {
76
 
77
 
78
        $currentUserPlugin = $this->plugin('currentUserPlugin');
79
        $currentUser = $currentUserPlugin->getUser();
80
        $currentCompany = $currentUserPlugin->getCompany();
81
        $group_uuid =  $this->params()->fromRoute('group_uuid');
82
 
9772 nelberth 83
 
9623 nelberth 84
        $request = $this->getRequest();
85
        if($request->isGet()) {
86
 
87
 
88
            $headers  = $request->getHeaders();
9724 nelberth 89
            $isJson = false;
9623 nelberth 90
            if($headers->has('Accept')) {
91
                $accept = $headers->get('Accept');
92
 
93
                $prioritized = $accept->getPrioritized();
94
 
95
                foreach($prioritized as $key => $value) {
96
                    $raw = trim($value->getRaw());
97
 
98
                    if(!$isJson) {
99
                        $isJson = strpos($raw, 'json');
100
                    }
101
 
102
                }
103
            }
104
 
105
            $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
106
            $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
107
 
108
            if (!$highPerformanceTeamsGroups) {
109
                $data = [
110
                    'success' => false,
111
                    'data' => 'ERROR_RECORD_NOT_FOUND'
112
                ];
113
 
114
                return new JsonModel($data);
115
            }
116
 
117
            if($highPerformanceTeamsGroups->status != HighPerformanceTeamsGroups::STATUS_ACTIVE) {
118
 
119
                return new JsonModel([
120
                    'success' => false,
121
                    'data' => 'ERROR_UNAUTHORIZED'
122
                ]);
123
 
124
            }
9679 nelberth 125
 
10374 nelberth 126
            $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
127
            $highPerformanceTeamsGroupsMember = $highPerformanceTeamsGroupsMembersMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id, $currentUser->id);
128
            if(!$highPerformanceTeamsGroupsMember) {
129
                return new JsonModel([
130
                    'success' => false,
131
                    'data' => 'ERROR_RECORD_NOT_FOUND'
132
                ]);
133
            }
134
            if(!($highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ACCEPTED || $highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN) ){
135
                return new JsonModel([
136
                    'success' => false,
137
                    'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS'
138
                ]);
139
            }
140
            $addTopicBoton=true;
141
            if($highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_MODERATOR||$highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_USER){
142
                $addTopicBoton=false;
143
            }
144
 
10373 nelberth 145
 
146
 
9623 nelberth 147
                $this->layout()->setTemplate('layout/layout-backend');
148
                $viewModel = new ViewModel();
149
 
9632 nelberth 150
                $formTopic = new TopicForm();
151
                $viewModel->setTemplate('leaders-linked/high-performance-teams-groups-view-foro-categories/index.phtml');
9623 nelberth 152
                $viewModel->setVariables([
153
                    'group_uuid'  =>  $group_uuid,
154
                    'group_title'=>$highPerformanceTeamsGroups->title,
155
                    'group_description'=>$highPerformanceTeamsGroups->description,
156
                    'formTopic'=> $formTopic,
10374 nelberth 157
                    'addTopicBoton'=>$addTopicBoton
9623 nelberth 158
                ]);
159
                return $viewModel ;
160
 
161
 
162
 
9721 nelberth 163
 
9623 nelberth 164
        } else {
165
            return new JsonModel([
166
                'success' => false,
167
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
168
            ]);
169
        }
170
    }
9720 nelberth 171
 
172
    public function viewAction(){
173
        $currentUserPlugin = $this->plugin('currentUserPlugin');
174
        $currentUser = $currentUserPlugin->getUser();
175
        $currentCompany = $currentUserPlugin->getCompany();
176
        $group_uuid =  $this->params()->fromRoute('group_uuid');
177
 
9772 nelberth 178
 
9720 nelberth 179
        $request = $this->getRequest();
180
        if($request->isGet()) {
181
 
182
 
183
            $headers  = $request->getHeaders();
184
            $isJson = false;
185
            if($headers->has('Accept')) {
186
                $accept = $headers->get('Accept');
187
 
188
                $prioritized = $accept->getPrioritized();
189
 
190
                foreach($prioritized as $key => $value) {
191
                    $raw = trim($value->getRaw());
192
 
193
                    if(!$isJson) {
194
                        $isJson = strpos($raw, 'json');
195
                    }
196
 
197
                }
198
            }
199
 
200
            $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
201
                $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
202
 
203
                if (!$highPerformanceTeamsGroups) {
204
                    $data = [
205
                        'success' => false,
206
                        'data' => 'ERROR_RECORD_NOT_FOUND'
207
                    ];
208
 
209
                    return new JsonModel($data);
210
                }
10374 nelberth 211
                if($highPerformanceTeamsGroups->status != HighPerformanceTeamsGroups::STATUS_ACTIVE) {
212
 
213
                    return new JsonModel([
214
                        'success' => false,
215
                        'data' => 'ERROR_UNAUTHORIZED'
216
                    ]);
217
 
218
                }
219
                $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
220
                $highPerformanceTeamsGroupsMember = $highPerformanceTeamsGroupsMembersMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id, $currentUser->id);
9720 nelberth 221
                if(!$highPerformanceTeamsGroupsMember) {
222
                    return new JsonModel([
223
                        'success' => false,
224
                        'data' => 'ERROR_RECORD_NOT_FOUND'
225
                    ]);
226
                }
227
                if(!($highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ACCEPTED || $highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN) ){
228
                    return new JsonModel([
229
                        'success' => false,
230
                        'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS'
231
                    ]);
232
                }
10374 nelberth 233
 
9720 nelberth 234
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
235
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'high-performance-teams/groups/view/foro/categories/edit');
236
                $allowDelete = $acl->isAllowed($currentUser->usertype_id,'high-performance-teams/groups/view/foro/categories/delete');
237
                $allowView = $acl->isAllowed($currentUser->usertype_id,'high-performance-teams/groups/view');
10374 nelberth 238
 
239
                if($highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_MODERATOR||$highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_USER){
10376 nelberth 240
                    $allowDelete=false;
10374 nelberth 241
                    $allowEdit=false;
242
                }
243
 
244
 
245
            if($isJson) {
9720 nelberth 246
 
10374 nelberth 247
                $group_uuid = $this->params()->fromRoute('group_uuid');
248
                if(!$group_uuid) {
249
                    $data = [
250
                        'success'   => false,
251
                        'data'   => 'ERROR_INVALID_PARAMETER'
252
                    ];
253
 
254
                    return new JsonModel($data);
255
                }
9720 nelberth 256
 
257
 
10374 nelberth 258
 
259
 
260
 
261
 
262
 
9720 nelberth 263
                $topicMapper = TopicMapper::getInstance($this->adapter);
264
 
265
                $paginator = $topicMapper->fetchAllHighPerfromanceTeamsGroupForo($highPerformanceTeamsGroups->id);
266
 
267
                $items = [];
268
 
269
 
270
 
271
                foreach($paginator as $record)
272
                {
273
 
274
 
275
                    $item = [
276
                        'title' => $record->title,
277
                        'description'=>$record->description,
278
                        'status'=> $record->status,
279
                        'actions' => [
9730 nelberth 280
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('high-performance-teams/groups/view/foro/categories/edit', ['group_uuid' => $highPerformanceTeamsGroups->uuid, 'category_uuid' => $record->uuid]) : '',
281
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('high-performance-teams/groups/view/foro/categories/delete', ['group_uuid' => $highPerformanceTeamsGroups->uuid,'category_uuid' => $record->uuid]) : '',
9763 nelberth 282
                            'link_view' => $allowView ? $this->url()->fromRoute('high-performance-teams/groups/view/foro/categories/articles', ['group_uuid' => $highPerformanceTeamsGroups->uuid,'category_uuid' => $record->uuid]) : '',
9720 nelberth 283
                        ]
284
 
285
                    ];
286
 
287
                    array_push($items, $item);
288
 
289
                }
290
 
291
                return new JsonModel([
292
                    'success' => true,
293
                    'data' => [
294
                        'items' => $items
295
                    ]
296
                ]);
297
 
298
            }
299
        } else {
300
            return new JsonModel([
301
                'success' => false,
302
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
303
            ]);
304
        }
305
    }
306
 
9656 nelberth 307
    public function addAction()
308
    {
9623 nelberth 309
 
9656 nelberth 310
        $group_uuid = $this->params()->fromRoute('group_uuid');
311
        if(!$group_uuid) {
312
            $data = [
313
                'success'   => false,
314
                'data'   => 'ERROR_INVALID_PARAMETER'
315
            ];
316
 
317
            return new JsonModel($data);
318
        }
9732 nelberth 319
 
9661 nelberth 320
 
9656 nelberth 321
        $currentUserPlugin = $this->plugin('currentUserPlugin');
322
        $currentUser = $currentUserPlugin->getUser();
323
        $currentCompany = $currentUserPlugin->getCompany();
324
 
325
        $request = $this->getRequest();
9662 nelberth 326
 
9666 nelberth 327
 
328
 
9656 nelberth 329
        if($request->isPost()) {
9665 nelberth 330
 
9664 nelberth 331
            $form = new  TopicForm();
9663 nelberth 332
            $dataPost = $request->getPost()->toArray();
9666 nelberth 333
            $form->setData($dataPost);
9667 nelberth 334
 
9656 nelberth 335
            if($form->isValid()) {
336
                $dataPost = (array) $form->getData();
9659 nelberth 337
                $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : Topic::STATUS_INACTIVE;
9656 nelberth 338
 
339
 
340
                $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
341
                $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
342
 
343
                if (!$highPerformanceTeamsGroups) {
344
                    $data = [
345
                        'success' => false,
346
                        'data' => 'ERROR_RECORD_NOT_FOUND'
347
                    ];
348
 
349
                    return new JsonModel($data);
350
                }
10373 nelberth 351
                if($highPerformanceTeamsGroups->status != HighPerformanceTeamsGroups::STATUS_ACTIVE) {
352
 
353
                    return new JsonModel([
354
                        'success' => false,
355
                        'data' => 'ERROR_UNAUTHORIZED'
356
                    ]);
357
 
358
                }
359
                $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
360
                $highPerformanceTeamsGroupsMember = $highPerformanceTeamsGroupsMembersMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id, $currentUser->id);
9656 nelberth 361
                if(!$highPerformanceTeamsGroupsMember) {
362
                    return new JsonModel([
363
                        'success' => false,
364
                        'data' => 'ERROR_RECORD_NOT_FOUND'
365
                    ]);
366
                }
367
                if(!($highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ACCEPTED || $highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN) ){
368
                    return new JsonModel([
369
                        'success' => false,
370
                        'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS'
371
                    ]);
372
                }
9671 nelberth 373
 
10373 nelberth 374
                if($highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_MODERATOR||$highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_USER){
375
                    return new JsonModel([
376
                        'success' => false,
377
                        'data' => 'ERROR_METHOD_NOT_ALLOWED'
378
                    ]);
379
                }
380
 
9671 nelberth 381
                $hydrator = new ObjectPropertyHydrator();
382
                $topic = new Topic();
9676 nelberth 383
 
384
 
385
                $hydrator->hydrate($dataPost, $topic);
9677 nelberth 386
                $topic->type='hptgf';
9676 nelberth 387
                $topic->high_performance_group_id=$highPerformanceTeamsGroups->id;
388
                $topicMapper = TopicMapper::getInstance($this->adapter);
9656 nelberth 389
                $result = $topicMapper->insert($topic);
390
 
391
                if($result) {
392
 
393
                    $this->logger->info('Se agrego la categoria del foro con el titulo ' . $topic->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
394
 
395
                    $data = [
396
                        'success'   => true,
397
                        'data'   => 'LABEL_RECORD_ADDED'
398
                    ];
399
                } else {
400
                    $data = [
401
                        'success'   => false,
402
                        'data'      => $topicMapper->getError()
403
                    ];
404
 
405
                }
406
 
407
                return new JsonModel($data);
408
 
409
            } else {
410
                $messages = [];
411
                $form_messages = (array) $form->getMessages();
412
                foreach($form_messages  as $fieldname => $field_messages)
413
                {
414
 
415
                    $messages[$fieldname] = array_values($field_messages);
416
                }
417
 
418
                return new JsonModel([
419
                    'success'   => false,
420
                    'data'   => $messages
421
                ]);
422
            }
423
 
424
        } else {
425
            $data = [
426
                'success' => false,
427
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
428
            ];
429
 
430
            return new JsonModel($data);
431
        }
432
 
433
        return new JsonModel($data);
434
 
435
 
9640 nelberth 436
    }
9727 nelberth 437
 
9640 nelberth 438
    public function editAction(){
9725 nelberth 439
 
440
        $currentUserPlugin = $this->plugin('currentUserPlugin');
441
        $currentUser = $currentUserPlugin->getUser();
442
        $currentCompany = $currentUserPlugin->getCompany();
443
        $request = $this->getRequest();
444
        $group_uuid = $this->params()->fromRoute('group_uuid');
9640 nelberth 445
 
9732 nelberth 446
        $category_uuid = $this->params()->fromRoute('category_uuid');
9725 nelberth 447
 
448
 
449
        if(!$group_uuid) {
450
            $data = [
451
                'success'   => false,
452
                'data'   => 'ERROR_INVALID_PARAMETER'
453
            ];
454
 
455
            return new JsonModel($data);
456
        }
9732 nelberth 457
        if(!$category_uuid) {
9725 nelberth 458
            $data = [
459
                'success'   => false,
460
                'data'   => 'ERROR_INVALID_PARAMETER'
461
            ];
462
 
463
            return new JsonModel($data);
464
        }
465
 
466
 
467
        $topicMapper = TopicMapper::getInstance($this->adapter);
9732 nelberth 468
        $topic = $topicMapper->fetchOneByUuid($category_uuid);
9725 nelberth 469
 
470
        if (!$topic) {
471
            $data = [
472
                'success' => false,
473
                'data' => 'ERROR_RECORD_NOT_FOUND'
474
            ];
475
 
476
            return new JsonModel($data);
477
        }
478
 
479
 
480
                $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
481
                $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
482
 
483
                if (!$highPerformanceTeamsGroups) {
484
                    $data = [
485
                        'success' => false,
486
                        'data' => 'ERROR_RECORD_NOT_FOUND'
487
                    ];
488
 
489
                    return new JsonModel($data);
490
                }
10373 nelberth 491
                if($highPerformanceTeamsGroups->status != HighPerformanceTeamsGroups::STATUS_ACTIVE) {
9725 nelberth 492
 
10373 nelberth 493
                    return new JsonModel([
494
                        'success' => false,
495
                        'data' => 'ERROR_UNAUTHORIZED'
496
                    ]);
497
 
498
                }
499
                $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
500
                $highPerformanceTeamsGroupsMember = $highPerformanceTeamsGroupsMembersMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id, $currentUser->id);
9725 nelberth 501
                if(!$highPerformanceTeamsGroupsMember) {
502
                    return new JsonModel([
503
                        'success' => false,
504
                        'data' => 'ERROR_RECORD_NOT_FOUND'
505
                    ]);
506
                }
507
                if(!($highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ACCEPTED || $highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN) ){
508
                    return new JsonModel([
509
                        'success' => false,
510
                        'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS'
511
                    ]);
512
                }
10373 nelberth 513
 
514
                if($highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_MODERATOR||$highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_USER){
515
                    return new JsonModel([
516
                        'success' => false,
517
                        'data' => 'ERROR_METHOD_NOT_ALLOWED'
518
                    ]);
519
                }
520
        if($request->isPost()) {
521
            $form = new  TopicForm();
522
            $dataPost = $request->getPost()->toArray();
523
            $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : Topic::STATUS_INACTIVE;
524
 
525
 
526
 
527
 
528
            $form->setData($dataPost);
529
 
530
            if($form->isValid()) {
531
                $dataPost = (array) $form->getData();
532
 
9725 nelberth 533
 
534
                $hydrator = new ObjectPropertyHydrator();
535
                $hydrator->hydrate($dataPost, $topic);
536
 
537
                $result = $topicMapper->update($topic);
538
 
539
                if($result) {
9726 nelberth 540
                    $this->logger->info('Se actualizo la categoria del foro de alto rendimiento ' . $topic->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
9725 nelberth 541
 
542
                    $data = [
543
                        'success' => true,
544
                        'data' => 'LABEL_RECORD_UPDATED'
545
                    ];
546
                } else {
547
                    $data = [
548
                        'success'   => false,
549
                        'data'      => $topicMapper->getError()
550
                    ];
551
                }
552
 
553
                return new JsonModel($data);
554
 
555
            } else {
556
                $messages = [];
557
                $form_messages = (array) $form->getMessages();
558
                foreach($form_messages  as $fieldname => $field_messages)
559
                {
560
                    $messages[$fieldname] = array_values($field_messages);
561
                }
562
 
563
                return new JsonModel([
564
                    'success'   => false,
565
                    'data'   => $messages
566
                ]);
567
            }
568
        }else if ($request->isGet()) {
569
            $hydrator = new ObjectPropertyHydrator();
570
 
571
            $data = [
572
                'success' => true,
573
                'data' => $hydrator->extract($topic)
574
            ];
575
 
576
            return new JsonModel($data);
577
        } else {
578
            $data = [
579
                'success' => false,
580
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
581
            ];
582
 
583
            return new JsonModel($data);
584
        }
585
 
586
        return new JsonModel($data);
587
 
9640 nelberth 588
    }
9727 nelberth 589
    public function deleteAction(){
9623 nelberth 590
 
9727 nelberth 591
        $currentUserPlugin = $this->plugin('currentUserPlugin');
592
        $currentCompany = $currentUserPlugin->getCompany();
593
        $currentUser = $currentUserPlugin->getUser();
9623 nelberth 594
 
9727 nelberth 595
        $request = $this->getRequest();
596
        $group_uuid = $this->params()->fromRoute('group_uuid');
9728 nelberth 597
        $category_uuid = $this->params()->fromRoute('category_uuid');
9727 nelberth 598
 
9731 nelberth 599
 
9727 nelberth 600
        if (!$group_uuid) {
601
            $data = [
602
                'success' => false,
603
                'data' => 'ERROR_INVALID_PARAMETER'
604
            ];
605
 
606
            return new JsonModel($data);
607
        }
9732 nelberth 608
        if(!$category_uuid) {
609
            $data = [
610
                'success'   => false,
611
                'data'   => 'ERROR_INVALID_PARAMETER'
612
            ];
613
 
614
            return new JsonModel($data);
615
        }
9727 nelberth 616
        $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
10373 nelberth 617
        $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
618
 
619
        if (!$highPerformanceTeamsGroups) {
620
            $data = [
621
                'success' => false,
622
                'data' => 'ERROR_RECORD_NOT_FOUND'
623
            ];
9727 nelberth 624
 
10373 nelberth 625
            return new JsonModel($data);
626
        }
627
        if($highPerformanceTeamsGroups->status != HighPerformanceTeamsGroups::STATUS_ACTIVE) {
628
 
629
            return new JsonModel([
630
                'success' => false,
631
                'data' => 'ERROR_UNAUTHORIZED'
632
            ]);
633
 
634
        }
635
        $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
636
        $highPerformanceTeamsGroupsMember = $highPerformanceTeamsGroupsMembersMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id, $currentUser->id);
9727 nelberth 637
        if(!$highPerformanceTeamsGroupsMember) {
638
            return new JsonModel([
639
                'success' => false,
640
                'data' => 'ERROR_RECORD_NOT_FOUND'
641
            ]);
642
        }
643
        if(!($highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ACCEPTED || $highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN) ){
644
            return new JsonModel([
645
                'success' => false,
646
                'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS'
647
            ]);
648
        }
649
 
10373 nelberth 650
        if($highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_MODERATOR||$highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_USER){
651
            return new JsonModel([
652
                'success' => false,
653
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
654
            ]);
655
        }
656
 
9727 nelberth 657
        $topicMapper = TopicMapper::getInstance($this->adapter);
9728 nelberth 658
        $topic = $topicMapper->fetchOneByUuid($category_uuid);
9727 nelberth 659
 
660
        if (!$topic) {
661
            $data = [
662
                'success' => false,
663
                'data' => 'ERROR_RECORD_NOT_FOUND'
664
            ];
665
 
666
            return new JsonModel($data);
667
        }
668
 
669
 
670
 
671
        if ($request->isPost()) {
672
 
673
 
674
            $result = $topicMapper->delete($topic->id);
675
            if ($result) {
676
                $this->logger->info('Se borro la categoria del foro de alto rendimiento  ' . $topic->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
677
 
678
                $data = [
679
                    'success' => true,
680
                    'data' => 'LABEL_RECORD_DELETED'
681
                ];
682
            } else {
683
 
684
                $data = [
685
                    'success' => false,
686
                    'data' => $topicMapper->getError()
687
                ];
688
 
689
                return new JsonModel($data);
690
            }
691
        } else {
692
            $data = [
693
                'success' => false,
694
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
695
            ];
696
 
697
            return new JsonModel($data);
698
        }
699
 
700
        return new JsonModel($data);
701
    }
702
 
703
 
9623 nelberth 704
}