Proyectos de Subversion LeadersLinked - Backend

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
9760 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
 
9760 nelberth 10
use Laminas\Mvc\Controller\AbstractActionController;
11
use Laminas\Mvc\I18n\Translator;
12
use Laminas\Log\LoggerInterface;
13
use Laminas\View\Model\ViewModel;
14
use Laminas\View\Model\JsonModel;
15
use LeadersLinked\Model\HighPerformanceTeamsGroups;
16
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
9841 nelberth 17
use LeadersLinked\Form\CreateFeedForm;
9760 nelberth 18
use LeadersLinked\Library\Functions;
19
use LeadersLinked\Mapper\UserMapper;
20
use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMapper;
21
use LeadersLinked\Mapper\CompanyMapper;
9776 nelberth 22
use LeadersLinked\Mapper\TopicMapper;
9861 nelberth 23
use LeadersLinked\Model\Feed;
9778 nelberth 24
use LeadersLinked\Mapper\FeedMapper;
9760 nelberth 25
 
26
use LeadersLinked\Model\HighPerformanceTeamsGroupsMembers;
27
use LeadersLinked\Form\HighPerformanceTeamsGroupsMembersForm;
28
use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMembersMapper;
9766 nelberth 29
class HighPerformanceTeamsGroupsViewForoArticlesController extends AbstractActionController
9760 nelberth 30
{
31
    /**
32
     *
33
     * @var AdapterInterface
34
     */
35
    private $adapter;
36
 
37
    /**
38
     *
39
     * @var  LoggerInterface
40
     */
41
    private $logger;
42
 
43
    /**
44
     *
45
     * @var array
46
     */
47
    private $config;
48
 
49
    /**
50
     *
51
     * @param AdapterInterface $adapter
52
     * @param LoggerInterface $logger
53
     * @param array $config
54
     */
16768 efrain 55
    public function __construct($adapter, $logger, $config)
9760 nelberth 56
    {
16768 efrain 57
        $this->adapter = $adapter;
58
        $this->logger = $logger;
59
        $this->config = $config;
9760 nelberth 60
    }
61
 
62
 
63
 
64
 
65
    public function indexAction()
66
    {
67
 
68
 
69
        $currentUserPlugin = $this->plugin('currentUserPlugin');
70
        $currentUser = $currentUserPlugin->getUser();
71
        $currentCompany = $currentUserPlugin->getCompany();
15351 efrain 72
 
73
 
74
        $currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
75
        $network = $currentNetworkPlugin->getNetwork();
76
 
11085 nelberth 77
        $group_uuid =  $this->params()->fromRoute('group_id');
78
        $category_uuid =  $this->params()->fromRoute('category_id');
9760 nelberth 79
 
80
 
81
        $request = $this->getRequest();
82
        if($request->isGet()) {
83
 
84
 
85
            $headers  = $request->getHeaders();
86
 
87
            $isJson = false;
88
            if($headers->has('Accept')) {
89
                $accept = $headers->get('Accept');
90
 
91
                $prioritized = $accept->getPrioritized();
92
 
93
                foreach($prioritized as $key => $value) {
94
                    $raw = trim($value->getRaw());
95
 
96
                    if(!$isJson) {
97
                        $isJson = strpos($raw, 'json');
98
                    }
99
 
100
                }
101
            }
9775 nelberth 102
 
9776 nelberth 103
            if(!$group_uuid) {
104
                $data = [
105
                    'success'   => false,
106
                    'data'   => 'ERROR_INVALID_PARAMETER'
107
                ];
108
 
109
                return new JsonModel($data);
110
            }
111
 
112
            if(!$category_uuid) {
113
                $data = [
114
                    'success'   => false,
115
                    'data'   => 'ERROR_INVALID_PARAMETER'
116
                ];
117
 
118
                return new JsonModel($data);
119
            }
120
 
9775 nelberth 121
            $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
122
            $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
11189 nelberth 123
            $this->layout()->setTemplate('layout/layout-backend');
124
            $viewModel = new ViewModel();
9775 nelberth 125
            if (!$highPerformanceTeamsGroups) {
11189 nelberth 126
                $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
127
                return $viewModel;
9775 nelberth 128
            }
10377 nelberth 129
            if($highPerformanceTeamsGroups->status != HighPerformanceTeamsGroups::STATUS_ACTIVE) {
11189 nelberth 130
                $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
131
                return $viewModel;
10377 nelberth 132
 
133
            }
134
            $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
135
            $highPerformanceTeamsGroupsMember = $highPerformanceTeamsGroupsMembersMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id, $currentUser->id);
9776 nelberth 136
            if(!$highPerformanceTeamsGroupsMember) {
11189 nelberth 137
                $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
138
                return $viewModel;
9776 nelberth 139
            }
140
            if(!($highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ACCEPTED || $highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN) ){
11189 nelberth 141
                $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
142
                return $viewModel;
9776 nelberth 143
            }
10377 nelberth 144
 
11190 nelberth 145
            $topicMapper = TopicMapper::getInstance($this->adapter);
11192 nelberth 146
            $topic = $topicMapper->fetchOneByUuidAndGroupId($category_uuid,$highPerformanceTeamsGroups->id);
10377 nelberth 147
 
11190 nelberth 148
            if(!$topic){
149
                $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
150
                return $viewModel;
151
            }
9775 nelberth 152
 
9760 nelberth 153
            if($isJson) {
154
 
9784 nelberth 155
 
9760 nelberth 156
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
9905 nelberth 157
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'high-performance-teams/groups/view/foro/categories/articles/edit');
158
                $allowDelete = $acl->isAllowed($currentUser->usertype_id,'high-performance-teams/groups/view/foro/categories/articles/delete');
159
                $allowView = $acl->isAllowed($currentUser->usertype_id,'high-performance-teams/groups/view/foro/categories/articles/view');
9760 nelberth 160
 
9776 nelberth 161
 
9760 nelberth 162
 
163
                $search = $this->params()->fromQuery('search', []);
16766 efrain 164
                $search = empty($search['value']) ? '' :  Functions::sanitizeFilterString($search['value']);
9760 nelberth 165
 
166
 
167
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
168
                $page               = (intval($this->params()->fromQuery('start', 1), 10)/$records_x_page)+1;
169
                $order =  $this->params()->fromQuery('order', []);
170
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
16766 efrain 171
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(Functions::sanitizeFilterString($order[0]['dir']));
9760 nelberth 172
 
9886 nelberth 173
                $fields =  ['title', 'added_on'];
174
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'added_on';
9760 nelberth 175
 
176
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
9888 nelberth 177
                    $order_direction = 'DESC';
9760 nelberth 178
                }
9785 nelberth 179
 
11190 nelberth 180
 
9785 nelberth 181
 
9787 nelberth 182
 
183
 
184
                $feedMapper = FeedMapper::getInstance($this->adapter);
9792 nelberth 185
 
9789 nelberth 186
                $paginator = $feedMapper->fetchAllDataTableForo($search, $page, $records_x_page, $order_field, $order_direction, $topic->id);
9794 nelberth 187
 
9760 nelberth 188
                $items = [];
189
 
190
                $records = $paginator->getCurrentItems();
191
 
192
 
193
                foreach($records as $record)
194
                {
195
 
196
 
9877 nelberth 197
                    $userMapper = UserMapper::getInstance($this->adapter);
198
                    $user = $userMapper->fetchOne($record->user_id);
9919 nelberth 199
                    if($record->user_id!=$currentUser->id){
10380 nelberth 200
                        $contentAllowDelete=$allowDelete;
201
                        $contentAllowEdit=$allowEdit;
9919 nelberth 202
                        $allowDelete=false;
203
                        $allowEdit=false;
204
                    }
10389 nelberth 205
                    if($highPerformanceTeamsGroupsMember->type!=HighPerformanceTeamsGroupsMembers::TYPE_USER){
10377 nelberth 206
                        $allowDelete=true;
207
                    }
9883 nelberth 208
                    $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $record->added_on);
9760 nelberth 209
                    $item = [
210
                        'title' => $record->title,
9877 nelberth 211
                        'author' => [
212
                            'user_name' => $user->first_name . ' ' . $user->last_name,
15351 efrain 213
                            'user_url' => 'https://'. $network->main_hostname . '/profile/view/' . $user->uuid,
9877 nelberth 214
                            'user_image' => $this->url()->fromRoute('storage', ['code' => $user->uuid, 'type' => 'user', 'filename' => $user->image]),
215
                        ],
9903 nelberth 216
                        'added_on'=> $dt->format('d/m/Y'),
9760 nelberth 217
                        'actions' => [
11085 nelberth 218
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('high-performance-teams/groups/view/foro/categories/articles/edit', ['group_id' => $group_uuid,'category_id' => $category_uuid, 'article_id' => $record->uuid]) : '',
219
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('high-performance-teams/groups/view/foro/categories/articles/delete', ['group_id' => $group_uuid,'category_id' => $category_uuid, 'article_id' => $record->uuid]) : '',
220
                            'link_view' => $allowView ? $this->url()->fromRoute('high-performance-teams/groups/view/foro/categories/articles/view', ['group_id' => $group_uuid,'category_id' => $category_uuid, 'article_id' => $record->uuid]) : '',
9760 nelberth 221
                        ]
222
 
223
                    ];
10380 nelberth 224
                    if($record->user_id!=$currentUser->id){
225
                        $allowDelete=$contentAllowDelete;
226
                        $allowEdit=$contentAllowEdit;
227
                    }
9760 nelberth 228
 
229
                    array_push($items, $item);
230
 
231
                }
232
 
233
                return new JsonModel([
234
                    'success' => true,
235
                    'data' => [
236
                        'items' => $items,
237
                        'total' => $paginator->getTotalItemCount(),
238
                    ]
239
                ]);
240
 
241
            } else  {
9841 nelberth 242
                $formAdd = new CreateFeedForm($this->adapter);
11189 nelberth 243
 
9768 nelberth 244
                $viewModel->setTemplate('leaders-linked/high-performance-teams-groups-view-foro-articles/index.phtml');
9760 nelberth 245
                $viewModel->setVariables([
9770 nelberth 246
                    'formAdd' => $formAdd,
9772 nelberth 247
                    'group_uuid'=>$group_uuid,
9775 nelberth 248
                    'group_title'=>$highPerformanceTeamsGroups->title,
12327 nelberth 249
                    'category_uuid'=>$category_uuid,
250
                    'topic_title'=>$topic->title
9760 nelberth 251
                ]);
252
                return $viewModel ;
253
            }
254
        } else {
255
            return new JsonModel([
256
                'success' => false,
257
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
258
            ]);
259
        }
260
    }
261
 
262
    public function addAction()
263
    {
9850 nelberth 264
 
9852 nelberth 265
 
9847 nelberth 266
        $currentUserPlugin = $this->plugin('currentUserPlugin');
9760 nelberth 267
        $currentUser = $currentUserPlugin->getUser();
268
        $currentCompany = $currentUserPlugin->getCompany();
11085 nelberth 269
        $group_uuid =  $this->params()->fromRoute('group_id');
270
        $category_uuid =  $this->params()->fromRoute('category_id');
9760 nelberth 271
 
272
        $request = $this->getRequest();
273
        if($request->isPost()) {
274
 
9847 nelberth 275
 
276
            $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
277
 
278
            $form = new CreateFeedForm($this->adapter);
279
 
9760 nelberth 280
            $form->setData($dataPost);
9859 nelberth 281
 
9760 nelberth 282
            if($form->isValid()) {
9860 nelberth 283
 
9847 nelberth 284
 
285
                $hydrator = new ObjectPropertyHydrator();
286
                $feed = new Feed();
287
                $hydrator->hydrate($dataPost, $feed);
288
 
9862 nelberth 289
 
9847 nelberth 290
 
9855 nelberth 291
 
10379 nelberth 292
                $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
293
                $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
294
 
295
                if (!$highPerformanceTeamsGroups) {
296
                    $data = [
297
                        'success' => false,
298
                        'data' => 'ERROR_RECORD_NOT_FOUND'
299
                    ];
300
 
301
                    return new JsonModel($data);
302
                }
303
                if($highPerformanceTeamsGroups->status != HighPerformanceTeamsGroups::STATUS_ACTIVE) {
9847 nelberth 304
 
10379 nelberth 305
                    return new JsonModel([
306
                        'success' => false,
307
                        'data' => 'ERROR_UNAUTHORIZED'
308
                    ]);
309
 
310
                }
311
                $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
312
                $highPerformanceTeamsGroupsMember = $highPerformanceTeamsGroupsMembersMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id, $currentUser->id);
313
                if(!$highPerformanceTeamsGroupsMember) {
314
                    return new JsonModel([
315
                        'success' => false,
316
                        'data' => 'ERROR_RECORD_NOT_FOUND'
317
                    ]);
318
                }
319
 
9847 nelberth 320
 
321
                    $highPerformanceTeamsGroupsMemberMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
322
                    $highPerformanceTeamsGroupsMember = $highPerformanceTeamsGroupsMemberMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id, $currentUser->id);
323
                    if($highPerformanceTeamsGroupsMember) {
324
                        if($highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ACCEPTED || $highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN ){
325
                            $id =  $highPerformanceTeamsGroups->id;
326
                        }else{
327
 
328
                            return new JsonModel([
329
                                'success' => false,
330
                                'data' => 'ERROR_UNAUTHORIZED'
331
                            ]);
332
                        }
333
 
334
                    } else {
335
 
336
                        return new JsonModel([
337
                            'success' => false,
338
                            'data' => 'ERROR_RECORD_NOT_FOUND'
339
                        ]);
340
                    }
341
 
9864 nelberth 342
 
9847 nelberth 343
 
344
                        $topicMapper = TopicMapper::getInstance($this->adapter);
11192 nelberth 345
                        $topic = $topicMapper->fetchOneByUuidAndGroupId($category_uuid,$highPerformanceTeamsGroups->id);
9847 nelberth 346
                        if($topic){
347
                            $feed->topic_id = $topic->id;
348
                        }else{
349
                            return new JsonModel([
350
                                'success' => false,
351
                                'data' => 'ERROR_RECORD_NOT_FOUND'
352
                            ]);
353
                        }
9760 nelberth 354
 
355
 
9865 nelberth 356
 
9760 nelberth 357
 
9847 nelberth 358
                $feed->company_id       = $currentCompany->id;
359
                $feed->group_id         = null;
360
                $feed->high_performance_group_id = $id;
361
                $feed->user_id          = $currentUser->id;
362
                $feed->type             = Feed::TYPE_HPTG;
363
                $feed->posted_or_shared = Feed::POSTED;
364
                $feed->shared_with      = Feed::SHARE_WITH_CONNECTIONS;
365
                $feed->total_comments   = 0;
366
                $feed->total_shared     = 0;
367
 
368
 
9866 nelberth 369
 
370
                $feedMapper = FeedMapper::getInstance($this->adapter);
371
                $result = $feedMapper->insert($feed);
372
 
9867 nelberth 373
 
9847 nelberth 374
                if($result) {
9868 nelberth 375
 
376
                    $this->logger->info('Se agrego el articulo del foro con el titulo ' . $feed->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
9870 nelberth 377
 
378
                    $response = [
9760 nelberth 379
                        'success'   => true,
380
                        'data'   => 'LABEL_RECORD_ADDED'
381
                    ];
9847 nelberth 382
 
9760 nelberth 383
                } else {
9847 nelberth 384
                    $response = [
9760 nelberth 385
                        'success'   => false,
9847 nelberth 386
                        'data'   => $feedMapper->getError()
9760 nelberth 387
                    ];
388
                }
389
            } else {
390
                $messages = [];
391
                $form_messages = (array) $form->getMessages();
392
                foreach($form_messages  as $fieldname => $field_messages)
393
                {
394
                    $messages[$fieldname] = array_values($field_messages);
395
                }
396
 
9847 nelberth 397
                $response = [
9760 nelberth 398
                    'success'   => false,
399
                    'data'   => $messages
9847 nelberth 400
                ];
9760 nelberth 401
            }
402
 
403
        } else {
9847 nelberth 404
            $response = [
9760 nelberth 405
                'success' => false,
9850 nelberth 406
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
9760 nelberth 407
            ];
408
        }
409
 
9847 nelberth 410
        return new JsonModel($response);
9760 nelberth 411
    }
412
 
413
 
414
     public function editAction(){
415
 
416
        $currentUserPlugin = $this->plugin('currentUserPlugin');
417
        $currentUser = $currentUserPlugin->getUser();
418
        $currentCompany = $currentUserPlugin->getCompany();
419
        $request = $this->getRequest();
9915 nelberth 420
 
11085 nelberth 421
        $group_uuid =  $this->params()->fromRoute('group_id');
422
        $category_uuid =  $this->params()->fromRoute('category_id');
9760 nelberth 423
 
11085 nelberth 424
        $article_uuid =  $this->params()->fromRoute('article_id');
9760 nelberth 425
 
9915 nelberth 426
        if(!$group_uuid) {
9760 nelberth 427
            $data = [
428
                'success'   => false,
429
                'data'   => 'ERROR_INVALID_PARAMETER'
430
            ];
431
 
432
            return new JsonModel($data);
433
        }
434
 
9915 nelberth 435
        if(!$category_uuid) {
436
            $data = [
437
                'success'   => false,
438
                'data'   => 'ERROR_INVALID_PARAMETER'
439
            ];
440
 
441
            return new JsonModel($data);
442
        }
443
 
444
        if(!$article_uuid) {
445
            $data = [
446
                'success'   => false,
447
                'data'   => 'ERROR_INVALID_PARAMETER'
448
            ];
449
 
450
            return new JsonModel($data);
451
        }
452
 
9760 nelberth 453
        $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
9915 nelberth 454
        $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
9760 nelberth 455
 
9915 nelberth 456
        if (!$highPerformanceTeamsGroups) {
9760 nelberth 457
            $data = [
458
                'success' => false,
459
                'data' => 'ERROR_RECORD_NOT_FOUND'
460
            ];
461
 
462
            return new JsonModel($data);
463
        }
10384 nelberth 464
        if($highPerformanceTeamsGroups->status != HighPerformanceTeamsGroups::STATUS_ACTIVE) {
465
 
466
            return new JsonModel([
467
                'success' => false,
468
                'data' => 'ERROR_UNAUTHORIZED'
469
            ]);
470
 
471
        }
472
 
473
        $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
474
        $highPerformanceTeamsGroupsMember = $highPerformanceTeamsGroupsMembersMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id, $currentUser->id);
9915 nelberth 475
        if(!$highPerformanceTeamsGroupsMember) {
9760 nelberth 476
            return new JsonModel([
477
                'success' => false,
9915 nelberth 478
                'data' => 'ERROR_RECORD_NOT_FOUND'
9760 nelberth 479
            ]);
9915 nelberth 480
        }
481
        if(!($highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ACCEPTED || $highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN) ){
482
            return new JsonModel([
483
                'success' => false,
484
                'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS'
485
            ]);
486
        }
10388 nelberth 487
        if($highPerformanceTeamsGroupsMember->user_id!=$currentUser->id){
488
 
489
                return new JsonModel([
490
                    'success' => false,
491
                    'data' => 'ERROR_METHOD_NOT_ALLOWED'
492
                ]);
493
 
10384 nelberth 494
        }
10388 nelberth 495
 
10384 nelberth 496
 
9915 nelberth 497
        $feedMapper = FeedMapper::getInstance($this->adapter);
498
        $feed = $feedMapper->fetchOneByUuid($article_uuid);
499
 
9760 nelberth 500
        if($request->isPost()) {
9918 nelberth 501
 
502
            $form = new  CreateFeedForm($this->adapter);
9760 nelberth 503
            $dataPost = $request->getPost()->toArray();
504
            $form->setData($dataPost);
505
 
506
            if($form->isValid()) {
507
                $dataPost = (array) $form->getData();
508
 
509
                $hydrator = new ObjectPropertyHydrator();
9918 nelberth 510
                $hydrator->hydrate($dataPost, $feed);
511
                $result = $feedMapper->update($feed);
9760 nelberth 512
 
513
                if($result) {
9918 nelberth 514
                    $this->logger->info('Se actualizo el articulo del foro con el titulo ' . $feed->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
9760 nelberth 515
 
516
                    $data = [
517
                        'success' => true,
518
                        'data' => 'LABEL_RECORD_UPDATED'
519
                    ];
520
                } else {
521
                    $data = [
522
                        'success'   => false,
9918 nelberth 523
                        'data'      => $feedMapper->getError()
9760 nelberth 524
                    ];
525
                }
526
 
527
                return new JsonModel($data);
528
 
529
            } else {
530
                $messages = [];
531
                $form_messages = (array) $form->getMessages();
532
                foreach($form_messages  as $fieldname => $field_messages)
533
                {
534
                    $messages[$fieldname] = array_values($field_messages);
535
                }
536
 
537
                return new JsonModel([
538
                    'success'   => false,
539
                    'data'   => $messages
540
                ]);
541
            }
542
        }else if ($request->isGet()) {
9915 nelberth 543
 
544
 
545
 
9760 nelberth 546
            $hydrator = new ObjectPropertyHydrator();
547
 
548
            $data = [
549
                'success' => true,
9915 nelberth 550
                'data' => $hydrator->extract($feed)
9760 nelberth 551
            ];
552
 
553
            return new JsonModel($data);
554
        } else {
555
            $data = [
556
                'success' => false,
557
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
558
            ];
559
 
560
            return new JsonModel($data);
561
        }
562
 
563
        return new JsonModel($data);
564
 
565
    }
566
 
567
 
568
 
569
 
9904 nelberth 570
    public function deleteAction()
571
    {
9760 nelberth 572
        $currentUserPlugin = $this->plugin('currentUserPlugin');
9904 nelberth 573
        $currentUser = $currentUserPlugin->getUser();
9760 nelberth 574
        $currentCompany = $currentUserPlugin->getCompany();
11085 nelberth 575
        $group_uuid =  $this->params()->fromRoute('group_id');
9904 nelberth 576
 
9760 nelberth 577
        $request = $this->getRequest();
10384 nelberth 578
 
579
        $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
580
        $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
581
 
582
        if (!$highPerformanceTeamsGroups) {
583
            $data = [
584
                'success' => false,
585
                'data' => 'ERROR_RECORD_NOT_FOUND'
586
            ];
587
 
588
            return new JsonModel($data);
589
        }
590
        if($highPerformanceTeamsGroups->status != HighPerformanceTeamsGroups::STATUS_ACTIVE) {
591
 
592
            return new JsonModel([
593
                'success' => false,
594
                'data' => 'ERROR_UNAUTHORIZED'
595
            ]);
596
 
597
        }
598
 
599
        $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
600
        $highPerformanceTeamsGroupsMember = $highPerformanceTeamsGroupsMembersMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id, $currentUser->id);
601
        if(!$highPerformanceTeamsGroupsMember) {
602
            return new JsonModel([
603
                'success' => false,
604
                'data' => 'ERROR_RECORD_NOT_FOUND'
605
            ]);
606
        }
607
        if(!($highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ACCEPTED || $highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN) ){
608
            return new JsonModel([
609
                'success' => false,
610
                'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS'
611
            ]);
612
        }
10387 nelberth 613
        if($highPerformanceTeamsGroupsMember->user_id!=$currentUser->id){
10385 nelberth 614
 
10388 nelberth 615
            if($highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_USER){
10385 nelberth 616
                return new JsonModel([
617
                    'success' => false,
618
                    'data' => 'ERROR_METHOD_NOT_ALLOWED'
619
                ]);
620
            }
621
 
10384 nelberth 622
        }
10385 nelberth 623
 
10384 nelberth 624
 
10385 nelberth 625
 
626
 
9904 nelberth 627
        if($request->isPost()) {
9760 nelberth 628
 
9904 nelberth 629
 
11085 nelberth 630
            $article_uuid =  $this->params()->fromRoute('article_id');
9904 nelberth 631
 
632
            $feedMapper = FeedMapper::getInstance($this->adapter);
633
            $feed = $feedMapper->fetchOneByUuid($article_uuid);
634
            if(!$feed) {
635
                $response = [
636
                    'success' => false,
637
                    'data' => 'ERROR_POST_NOT_FOUND'
638
                ];
639
                return new JsonModel($response);
640
            }
641
 
642
 
10384 nelberth 643
 
9904 nelberth 644
            $feedMapper = FeedMapper::getInstance($this->adapter);
645
            $feed->status = Feed::STATUS_DELETED;
646
            if($feedMapper->update($feed)) {
647
                $response = [
9760 nelberth 648
                    'success' => true,
9904 nelberth 649
                    'data' => 'LABEL_FEED_WAS_DELETED'
9760 nelberth 650
                ];
9904 nelberth 651
 
9760 nelberth 652
            } else {
9904 nelberth 653
                $response = [
9760 nelberth 654
                    'success' => false,
9904 nelberth 655
                    'data' => $feedMapper->getError()
9760 nelberth 656
                ];
9904 nelberth 657
            }
9760 nelberth 658
 
9904 nelberth 659
 
660
            return new JsonModel($response);
661
 
9760 nelberth 662
        } else {
9904 nelberth 663
            $response = [
9760 nelberth 664
                'success' => false,
665
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
666
            ];
667
        }
9904 nelberth 668
 
669
        return new JsonModel($response);
9760 nelberth 670
    }
671
 
672
 
9904 nelberth 673
 
9760 nelberth 674
 
675
 
676
}