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