Proyectos de Subversion LeadersLinked - Backend

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
4571 nelberth 1
<?php
4637 nelberth 2
/**
3
 *
4
 * Controlador: Mis Perfiles
5
 *
6
 */
4571 nelberth 7
declare(strict_types=1);
8
 
9
namespace LeadersLinked\Controller;
10
 
11
use Laminas\Db\Adapter\AdapterInterface;
12
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
13
use Laminas\Mvc\Controller\AbstractActionController;
14
use Laminas\Log\LoggerInterface;
15
use Laminas\View\Model\ViewModel;
4637 nelberth 16
 
17
use LeadersLinked\Mapper\GroupMapper;
18
use LeadersLinked\Mapper\GroupMemberMapper;
19
use LeadersLinked\Mapper\GroupTypeMapper;
20
use LeadersLinked\Model\Group;
21
use LeadersLinked\Model\GroupMember;
22
use LeadersLinked\Library\Functions;
23
use LeadersLinked\Mapper\IndustryMapper;
24
use LeadersLinked\Form\Feed\CreateGroupCompanyForm;
25
use LeadersLinked\Form\Feed\ShareGroupCompanyForm;
26
use LeadersLinked\Mapper\UserBlockedMapper;
27
use LeadersLinked\Mapper\QueryMapper;
28
use LeadersLinked\Mapper\UserMapper;
29
use LeadersLinked\Mapper\UserProfileMapper;
30
use LeadersLinked\Model\User;
4571 nelberth 31
use Laminas\View\Model\JsonModel;
4637 nelberth 32
use PhpParser\Node\Stmt\GroupUse;
33
use LeadersLinked\Library\UserNotification;
34
use LeadersLinked\Mapper\EmailTemplateMapper;
35
use LeadersLinked\Model\EmailTemplate;
36
use LeadersLinked\Mapper\UserNotificationSettingMapper;
37
use LeadersLinked\Library\QueueEmail;
38
use phpDocumentor\Reflection\PseudoTypes\True_;
39
use Laminas\Db\Sql\Expression;
40
use LeadersLinked\Model\Notification;
41
use LeadersLinked\Mapper\NotificationMapper;
4571 nelberth 42
 
4637 nelberth 43
 
4638 nelberth 44
class HighPerformanceTeamsGroupController extends AbstractActionController
4571 nelberth 45
{
46
    /**
47
     *
48
     * @var AdapterInterface
49
     */
50
    private $adapter;
51
 
52
 
53
    /**
54
     *
55
     * @var AbstractAdapter
56
     */
57
    private $cache;
58
 
59
    /**
60
     *
61
     * @var  LoggerInterface
62
     */
63
    private $logger;
4637 nelberth 64
 
4571 nelberth 65
 
66
    /**
67
     *
68
     * @var array
69
     */
70
    private $config;
71
 
72
    /**
73
     *
74
     * @param AdapterInterface $adapter
75
     * @param AbstractAdapter $cache
76
     * @param LoggerInterface $logger
77
     * @param array $config
78
     */
4637 nelberth 79
    public function __construct($adapter, $cache , $logger,  $config)
4571 nelberth 80
    {
81
        $this->adapter      = $adapter;
82
        $this->cache        = $cache;
83
        $this->logger       = $logger;
84
        $this->config       = $config;
4637 nelberth 85
 
86
    }
87
 
88
    /**
89
     *
90
     * Generación del listado de perfiles
91
     * {@inheritDoc}
92
     * @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
93
     */
94
    public function indexAction()
95
    {
4571 nelberth 96
 
4637 nelberth 97
        $this->layout()->setTemplate('layout/layout-backend');
98
        $viewModel = new ViewModel();
99
        $viewModel->setTemplate('leaders-linked/high-performance-teams-group/index.phtml');
100
        return $viewModel ;
4571 nelberth 101
 
102
    }
103
 
4637 nelberth 104
 
105
    /**
106
     * Presenta el perfil con las opciónes de edición de cada sección
107
     * @return \Laminas\Http\Response|\Laminas\View\Model\ViewModel|\Laminas\View\Model\JsonModel
108
     */
109
    public function viewAction()
4571 nelberth 110
    {
4637 nelberth 111
        $request = $this->getRequest();
112
 
113
        $currentUserPlugin = $this->plugin('currentUserPlugin');
114
        $currentUser = $currentUserPlugin->getUser();
115
 
116
        $flashMessenger = $this->plugin('FlashMessenger');
117
        $id = $this->params()->fromRoute('id');
118
 
119
        $isJson = false;
120
 
121
        $headers  = $request->getHeaders();
122
        if($headers->has('Accept')) {
123
            $accept = $headers->get('Accept');
4588 nelberth 124
 
4637 nelberth 125
            $prioritized = $accept->getPrioritized();
4588 nelberth 126
 
4637 nelberth 127
            foreach($prioritized as $key => $value) {
128
                $raw = trim($value->getRaw());
129
 
130
                if(!$isJson) {
131
                    $isJson = strpos($raw, 'json');
132
                }
133
 
134
            }
135
        }
136
 
137
        if($isJson) {
4588 nelberth 138
 
4637 nelberth 139
            $flashMessenger = $this->plugin('FlashMessenger');
140
 
141
            if(!$id) {
142
                return new JsonModel([
143
                    'success' => false,
144
                    'data' => 'ERROR_INVALID_PARAMETER'
145
                ]);
4588 nelberth 146
 
4637 nelberth 147
            }
148
 
149
            $groupMapper = GroupMapper::getInstance($this->adapter);
150
            $group = $groupMapper->fetchOneByUuid($id);
151
 
152
            if(!$group) {
153
                return new JsonModel([
154
                    'success' => false,
155
                    'data' => 'ERROR_GROUP_NOT_FOUND'
156
                ]);
157
            }
158
 
159
            if($group->status != Group::STATUS_ACTIVE) {
160
                return new JsonModel([
161
                    'success' => false,
162
                    'data' => 'ERROR_GROUP_IS_NOT_ACTIVE'
163
                ]);
164
            }
165
 
166
            $userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);
167
            $userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($group->user_id, $currentUser->id);
168
 
169
            if($userBlocked) {
170
                $flashMessenger->addErrorMessage('ERROR_UNAUTHORIZED');
171
                return $this->redirect()->toRoute('dashboard');
172
            }
173
 
174
            $userMapper = UserMapper::getInstance($this->adapter);
175
            $ownerGroup = $userMapper->fetchOne($group->user_id);
176
 
177
            $values = [
178
                Group::ACCESSIBILITY_AUTO_JOIN => 'LABEL_AUTO_JOIN',
179
                Group::ACCESSIBILITY_REQUEST_TO_JOIN => 'LABEL_REQUEST_TO_JOIN',
180
                Group::ACCESSIBILITY_ADMIN_WILL_ADD => 'LABEL_ADMIN_WILL_ADD',
181
            ];
182
 
183
            $accessibility = $values[$group->accessibility];
184
 
185
            $values = [
186
                Group::PRIVACY_IS_PRIVATE => 'LABEL_PRIVATE',
187
                Group::PRIVACY_IS_PUBLIC => 'LABEL_PUBLIC'
188
            ];
189
 
190
            $privacy = $values[$group->privacy];
191
 
192
            $industryMapper = IndustryMapper::getInstance($this->adapter);
193
            $record = $industryMapper->fetchOne($group->industry_id);
194
 
195
            $industry = $record->name;
196
 
197
            $groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);
198
            $record = $groupTypeMapper->fetchOne($group->type_id);
199
 
200
            $group_type = $record->name;
201
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
202
 
203
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $group->user_id);
204
            if($groupMember) {
4588 nelberth 205
 
4637 nelberth 206
                if($groupMember->status != GroupMember::STATUS_ACCEPTED) {
207
                    $groupMember->status = $groupMember::STATUS_ACCEPTED;
208
                    $groupMemberMapper->update($groupMember);
4588 nelberth 209
                }
4637 nelberth 210
 
211
            } else {
212
                $groupMember = new GroupMember();
213
                $groupMember->user_id = $group->user_id;
214
                $groupMember->group_id = $group->id;
215
                $groupMember->status = GroupMember::STATUS_ACCEPTED;
216
 
217
                $groupMemberMapper->insert($groupMember);
4588 nelberth 218
            }
219
 
4637 nelberth 220
 
221
            $total_members = $groupMemberMapper->fetchTotalByGroupId($group->id);
222
 
223
 
224
            $member = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
225
            $show_feeds = false;
226
            if($member) {
227
                if($member->status == GroupMember::STATUS_ACCEPTED || $member->status == GroupMember::STATUS_AUTO_JOIN) {
228
                    $show_feeds = true;
229
                }
230
            }
231
 
232
            $queryMapper = QueryMapper::getInstance($this->adapter);
233
            $select = $queryMapper->getSql()->select();
234
            $select->columns(['user_id' => 'id',  'user_uuid' => 'uuid', 'first_name','last_name', 'image']);
235
            $select->from(['u' => UserMapper::_TABLE]);
236
            $select->join(['tgm' => GroupMemberMapper::_TABLE], 'tgm.user_id = u.id',[]);
237
            $select->join(['up' => UserProfileMapper::_TABLE], 'up.user_id = u.id',['user_profile_id' => 'id', 'user_profile_uuid' => 'uuid']);
238
            $select->where->equalTo('u.status', User::STATUS_ACTIVE);
239
            $select->where->equalTo('tgm.status',GroupMember::STATUS_ACCEPTED);
240
 
241
            // echo $select->getSqlString($this->adapter->platform); exit;
242
 
243
            $members = [];
244
 
245
            $records = $queryMapper->fetchAll($select);
246
            foreach($records as $record)
247
            {
248
                $userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($record['user_id'], $currentUser->id);
4588 nelberth 249
 
4637 nelberth 250
                array_push($members, [
251
                    'name' => trim($record['first_name'] . ' ' . $record['last_name']),
252
                    'image' => $this->url()->fromRoute('storage', ['code' => $record['user_uuid'], 'type' => 'user', 'filename' => $record['image'] ]),
253
                    'link_profile' => $userBlocked ? '' : $this->url()->fromRoute('profile/view',['id' => $record['user_profile_uuid'] ])
4588 nelberth 254
 
4637 nelberth 255
                ]);
256
            }
257
 
258
 
259
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
260
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
261
 
262
            $data = [
263
                'total_members'         => $total_members,
264
                'accessibility'         => $accessibility ,
265
                'privacy'               => $privacy,
266
                'industry'              => $industry,
267
                'group_id'              => $group->id,
268
                'group_type'            => $group_type,
269
                'group_uuid'            => $group->uuid,
270
                'name'                  => trim($group->name),
271
                'image'                 => $group->image,
272
                'cover'                 => $group->cover,
273
                'overview'              => $group->description,
274
                'website'               => $group->website,
275
                'members'               => $members,
276
                'link_inmail'           => $this->url()->fromRoute('inmail', ['id' => $ownerGroup->uuid]),
277
                'link_request' => '',
278
                'link_accept' => '',
279
                'link_cancel' => '',
280
                'link_leave' => '',
281
            ];
282
 
283
 
284
 
285
            if($groupMember) {
286
                if($groupMember->status == GroupMember::STATUS_ACCEPTED || $groupMember->status == GroupMember::STATUS_AUTO_JOIN) {
4639 nelberth 287
                    $data['link_leave'] = $this->url()->fromRoute('high-performance-teams/leave', ['id' => $group->uuid] );
4588 nelberth 288
                }
4637 nelberth 289
                if($groupMember->status == GroupMember::STATUS_ADDED_BY_ADMIN) {
4639 nelberth 290
                    $data['link_accept'] = $this->url()->fromRoute('high-performance-teams/accept', ['id' => $group->uuid] );
291
                    $data['link_cancel'] = $this->url()->fromRoute('high-performance-teams/cancel', ['id' => $group->uuid] );
4588 nelberth 292
                }
4637 nelberth 293
                if( $groupMember->status == GroupMember::STATUS_JOINING_REQUESTED) {
4639 nelberth 294
                    $data['link_cancel'] = $this->url()->fromRoute('high-performance-teams/cancel', ['id' => $group->uuid] );
4588 nelberth 295
                }
4637 nelberth 296
                if(in_array($group->accessibility, [ Group::ACCESSIBILITY_AUTO_JOIN, Group::ACCESSIBILITY_REQUEST_TO_JOIN]) && $groupMember->status == GroupMember::STATUS_CANCELLED) {
297
 
298
                    $userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);
299
                    $userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($group->id, $currentUser->id);
300
 
301
                    if(!$userBlocked) {
4639 nelberth 302
                        $data['link_request'] =$this->url()->fromRoute('high-performance-teams/request', ['id' => $group->uuid] );;
4637 nelberth 303
                    }
304
                }
305
            } else {
4588 nelberth 306
 
4637 nelberth 307
                if(in_array($group->accessibility, [ Group::ACCESSIBILITY_AUTO_JOIN, Group::ACCESSIBILITY_REQUEST_TO_JOIN])) {
4588 nelberth 308
 
4637 nelberth 309
                    $userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);
310
                    $userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($group->id, $currentUser->id);
311
 
312
                    if(!$userBlocked) {
4639 nelberth 313
                        $data['link_request'] = $this->url()->fromRoute('high-performance-teams/request', ['id' => $group->uuid] );;
4637 nelberth 314
                    }
4588 nelberth 315
                }
316
 
4637 nelberth 317
            }
318
 
319
 
320
            return new JsonModel([
321
                'success'   => true,
322
                'data'      => $data
323
            ]);
324
 
325
 
326
 
327
        } else {
328
 
329
 
330
 
331
            if(!$id) {
332
                $flashMessenger->addErrorMessage('ERROR_INVALID_PARAMETER');
333
                return $this->redirect()->toRoute('dashboard');
334
            }
335
 
336
            $groupMapper = GroupMapper::getInstance($this->adapter);
337
            $group = $groupMapper->fetchOneByUuid($id);
338
            if(!$group) {
339
                $flashMessenger->addErrorMessage('ERROR_RECORD_NOT_FOUND');
340
                return $this->redirect()->toRoute('dashboard');
341
            }
342
 
343
 
344
 
345
 
346
 
347
 
348
            $userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);
349
            $userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($group->user_id, $currentUser->id);
350
 
351
            if($userBlocked) {
352
                $flashMessenger->addErrorMessage('ERROR_UNAUTHORIZED');
353
                return $this->redirect()->toRoute('dashboard');
354
            }
355
 
356
            $userMapper = UserMapper::getInstance($this->adapter);
357
            $ownerGroup = $userMapper->fetchOne($group->user_id);
358
 
359
            $values = [
360
                Group::ACCESSIBILITY_AUTO_JOIN => 'LABEL_AUTO_JOIN',
361
                Group::ACCESSIBILITY_REQUEST_TO_JOIN => 'LABEL_REQUEST_TO_JOIN',
362
                Group::ACCESSIBILITY_ADMIN_WILL_ADD => 'LABEL_ADMIN_WILL_ADD',
363
            ];
364
 
365
            $accessibility = $values[$group->accessibility];
366
 
367
            $values = [
368
                Group::PRIVACY_IS_PRIVATE => 'LABEL_PRIVATE',
369
                Group::PRIVACY_IS_PUBLIC => 'LABEL_PUBLIC'
370
            ];
371
 
372
            $privacy = $values[$group->privacy];
373
 
374
            $industryMapper = IndustryMapper::getInstance($this->adapter);
375
            $record = $industryMapper->fetchOne($group->industry_id);
376
 
377
            $industry = $record->name;
378
 
379
            $groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);
380
            $record = $groupTypeMapper->fetchOne($group->type_id);
381
 
382
            $group_type = $record->name;
383
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
384
 
385
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $group->user_id);
386
            if($groupMember) {
4588 nelberth 387
 
4637 nelberth 388
                if($groupMember->status != GroupMember::STATUS_ACCEPTED) {
389
                    $groupMember->status = $groupMember::STATUS_ACCEPTED;
390
                    $groupMemberMapper->update($groupMember);
391
                }
4588 nelberth 392
 
4637 nelberth 393
            } else {
394
                $groupMember = new GroupMember();
395
                $groupMember->user_id = $group->user_id;
396
                $groupMember->group_id = $group->id;
397
                $groupMember->status = GroupMember::STATUS_ACCEPTED;
4588 nelberth 398
 
4637 nelberth 399
                $groupMemberMapper->insert($groupMember);
400
            }
401
 
402
 
403
            $total_members = $groupMemberMapper->fetchTotalByGroupId($group->id);
404
 
405
 
406
            $member = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
407
            $show_feeds = false;
408
            if($member) {
409
                if($member->status == GroupMember::STATUS_ACCEPTED || $member->status == GroupMember::STATUS_AUTO_JOIN) {
410
                    $show_feeds = true;
411
                }
412
            }
413
 
414
            $queryMapper = QueryMapper::getInstance($this->adapter);
415
            $select = $queryMapper->getSql()->select();
416
            $select->columns(['user_id' => 'id',  'user_uuid' => 'uuid', 'first_name','last_name', 'image']);
417
            $select->from(['u' => UserMapper::_TABLE]);
418
            $select->join(['tgm' => GroupMemberMapper::_TABLE], 'tgm.user_id = u.id',[]);
419
            $select->join(['up' => UserProfileMapper::_TABLE], 'up.user_id = u.id',['user_profile_id' => 'id', 'user_profile_uuid' => 'uuid']);
420
            $select->where->equalTo('u.status', User::STATUS_ACTIVE);
421
            $select->where->equalTo('tgm.status',GroupMember::STATUS_ACCEPTED);
422
 
423
           // echo $select->getSqlString($this->adapter->platform); exit;
424
 
425
            $members = [];
426
 
427
            $records = $queryMapper->fetchAll($select);
428
            foreach($records as $record)
429
            {
430
                $userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($record['user_id'], $currentUser->id);
4588 nelberth 431
 
4637 nelberth 432
                array_push($members, [
433
                    'name' => trim($record['first_name'] . ' ' . $record['last_name']),
434
                    'image' => $this->url()->fromRoute('storage', ['code' => $record['user_uuid'], 'type' => 'user', 'filename' => $record['image'] ]),
4640 nelberth 435
                    'link_profile' => $userBlocked ? '' : $this->url()->fromRoute('high-performance-teams/view',['id' => $record['user_profile_uuid'] ])
4637 nelberth 436
 
437
                ]);
438
            }
439
 
440
            $formFeed = new CreateGroupCompanyForm();
441
            $formShare = new ShareGroupCompanyForm();
442
 
443
 
444
                $this->layout()->setTemplate('layout/layout-backend');
445
            $viewModel = new ViewModel();
446
 
447
            if($show_feeds) {
448
                $viewModel->setTemplate('leaders-linked/high-performance-teams-group/view-with-feeds.phtml');
449
            } else {
450
                $viewModel->setTemplate('leaders-linked/high-performance-teams-group/view-without-feeds.phtml');
451
            }
452
 
453
 
454
 
455
            $notificationMapper = NotificationMapper::getInstance($this->adapter);
456
            $notificationMapper->markAllNotificationsAsReadByUserIdAndGroupId($currentUser->id, $group->id);
457
 
458
 
459
 
460
 
461
 
462
 
463
            $viewModel->setVariables([
464
                'user_id'               => $currentUser->id,
465
                'total_members'         => $total_members,
466
                'accessibility'         => $accessibility ,
467
                'privacy'               => $privacy,
468
                'industry'              => $industry,
469
                'group_id'              => $group->id,
470
                'group_type'            => $group_type,
471
                'group_uuid'            => $group->uuid,
472
                'name'                  => trim($group->name),
473
                'image'                 => $group->image,
474
                'cover'                 => $group->cover,
475
                'overview'              => $group->description,
476
                'website'               => $group->website,
477
                'formFeed'              => $formFeed,
478
                'formShare'             => $formShare,
479
                'members'               => $members,
4642 nelberth 480
                //'link_inmail'           => $this->url()->fromRoute('inmail', ['id' => $ownerGroup->uuid]),
481
                'link_inmail'           =>'hola.com'
4637 nelberth 482
            ]);
483
            return $viewModel ;
484
        }
485
 
486
    }
487
 
488
    public function leaveAction()
489
    {
490
        $flashMessenger = $this->plugin('FlashMessenger');
491
        $currentUserPlugin = $this->plugin('currentUserPlugin');
492
        $currentUser = $currentUserPlugin->getUser();
493
 
494
        $request = $this->getRequest();
495
        if($request->isPost()) {
496
            $id = $this->params()->fromRoute('id');
497
            $flash =  filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);
498
            $flash = $flash === 'true'? true: false;
499
 
500
            if(!$id) {
501
                return new JsonModel([
502
                    'success' => false,
503
                    'data' => 'ERROR_INVALID_PARAMETER'
504
                ]);
4588 nelberth 505
 
4637 nelberth 506
            }
507
 
508
            $groupMapper = GroupMapper::getInstance($this->adapter);
509
            $group = $groupMapper->fetchOneByUuid($id);
510
 
511
            if(!$group) {
512
                return new JsonModel([
513
                    'success' => false,
514
                    'data' => 'ERROR_GROUP_NOT_FOUND'
515
                ]);
516
            }
517
 
518
            if($group->status != Group::STATUS_ACTIVE) {
519
                return new JsonModel([
520
                    'success' => false,
521
                    'data' => 'ERROR_GROUP_IS_NOT_ACTIVE'
522
                ]);
523
            }
524
 
525
            if($group->user_id == $currentUser->id) {
526
                return new JsonModel([
527
                    'success' => false,
528
                    'data' => 'ERROR_GROUP_YOU_ARE_THE_OWNER_OF_THIS_GROUP'
529
                ]);
530
            }
531
 
532
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
533
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
534
            if($groupMember) {
4588 nelberth 535
 
4637 nelberth 536
                if($groupMember->status == GroupMember::STATUS_ACCEPTED ||$groupMember->status == GroupMember::STATUS_AUTO_JOIN ) {
4588 nelberth 537
 
4637 nelberth 538
                    $groupMember->status = GroupMember::STATUS_CANCELLED;
539
                    if($groupMemberMapper->update($groupMember)) {
540
                        if($flash) {
541
 
542
                            $flashMessenger->addSuccessMessage('LABEL_GROUP_YOU_HAVE_LEFT_THE_GROUP');
543
 
544
                            return new JsonModel([
545
                                'success' => true,
546
                                'data' =>  [
547
                                    'message' => 'LABEL_GROUP_YOU_HAVE_LEFT_THE_GROUP',
548
                                    'reload' => true
549
                                 ]
550
                            ]);
551
                        } else {
552
                            return new JsonModel([
553
                                'success' => true,
554
                                'data' =>  'LABEL_GROUP_YOU_HAVE_LEFT_THE_GROUP',
555
                            ]);
556
                        }
557
 
558
                    } else {
559
                        return new JsonModel([
560
                            'success' => false,
561
                            'data' => $groupMemberMapper->getError()
562
                        ]);
4588 nelberth 563
                    }
564
 
4637 nelberth 565
 
4588 nelberth 566
                } else {
4637 nelberth 567
                    return new JsonModel([
568
                        'success' => false,
569
                        'data' => 'ERROR_GROUP_THERE_IS_NO_PENDING_REQUEST_TO_CANCEL'
570
                    ]);
4588 nelberth 571
                }
572
 
4637 nelberth 573
            } else {
574
                return new JsonModel([
575
                    'success' => false,
576
                    'data' => 'ERROR_GROUP_YOU_NOT_MEMBER'
577
                ]);
578
            }
579
 
580
 
581
 
582
 
583
        } else {
584
 
585
            return new JsonModel([
586
                'success' => false,
587
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
588
            ]);
589
        }
590
    }
591
 
592
    public function cancelAction()
593
    {
594
        $flashMessenger = $this->plugin('FlashMessenger');
595
        $currentUserPlugin = $this->plugin('currentUserPlugin');
596
        $currentUser = $currentUserPlugin->getUser();
597
 
598
        $request = $this->getRequest();
599
        if($request->isPost()) {
600
            $id = $this->params()->fromRoute('id');
601
            $flash =  filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);
602
            $flash = $flash === 'true'? true: false;
603
 
604
            if(!$id) {
605
                return new JsonModel([
606
                    'success' => false,
607
                    'data' => 'ERROR_INVALID_PARAMETER'
608
                ]);
4588 nelberth 609
 
4637 nelberth 610
            }
611
 
612
            $groupMapper = GroupMapper::getInstance($this->adapter);
613
            $group = $groupMapper->fetchOneByUuid($id);
614
 
615
            if(!$group) {
616
                return new JsonModel([
617
                    'success' => false,
618
                    'data' => 'ERROR_GROUP_NOT_FOUND'
619
                ]);
620
            }
621
 
622
            if($group->status != Group::STATUS_ACTIVE) {
623
                return new JsonModel([
624
                    'success' => false,
625
                    'data' => 'ERROR_GROUP_IS_NOT_ACTIVE'
626
                ]);
627
            }
628
 
629
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
630
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
631
            if($groupMember) {
632
 
633
                if($groupMember->status == GroupMember::STATUS_JOINING_REQUESTED || $groupMember->status == GroupMember::STATUS_ADDED_BY_ADMIN) {
634
 
635
                    $groupMember->status = GroupMember::STATUS_CANCELLED;
636
                    if($groupMemberMapper->update($groupMember)) {
637
                        if($flash) {
638
                            $flashMessenger->addSuccessMessage('LABEL_GROUP_REQUEST_CANCELLED');
639
 
640
                            return new JsonModel([
641
                                'success' => true,
642
                                'data' =>  [
643
                                    'message' => 'LABEL_GROUP_REQUEST_CANCELLED',
644
                                    'reload' => true
645
                                 ]
646
                            ]);
647
 
648
                        } else {
649
                            return new JsonModel([
650
                                'success' => true,
651
                                'data' =>  'LABEL_GROUP_REQUEST_CANCELLED'
652
                            ]);
653
                        }
654
 
655
 
656
 
657
                    } else {
658
                        return new JsonModel([
659
                            'success' => false,
660
                            'data' => $groupMemberMapper->getError()
661
                        ]);
4588 nelberth 662
                    }
4637 nelberth 663
 
664
 
665
                } else {
666
                    return new JsonModel([
667
                        'success' => false,
668
                        'data' => 'ERROR_GROUP_THERE_IS_NO_PENDING_REQUEST_TO_CANCEL'
669
                    ]);
4588 nelberth 670
                }
4637 nelberth 671
 
672
            } else {
673
                return new JsonModel([
674
                    'success' => false,
675
                    'data' => 'ERROR_GROUP_YOU_NOT_MEMBER'
676
                ]);
677
            }
678
 
679
 
680
 
681
 
682
        } else {
683
 
684
            return new JsonModel([
685
                'success' => false,
686
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
687
            ]);
688
        }
689
    }
690
 
691
    /*
692
    public function rejectAction()
693
    {
694
        $flashMessenger = $this->plugin('FlashMessenger');
695
        $currentUserPlugin = $this->plugin('currentUserPlugin');
696
        $currentUser = $currentUserPlugin->getUser();
697
 
698
        $request = $this->getRequest();
699
        if($request->isPost()) {
700
            $id = $this->params()->fromRoute('id');
701
            $flash =  filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);
702
            $flash = $flash === 'true'? true: false;
703
 
704
            if(!$id) {
705
                return new JsonModel([
706
                    'success' => false,
707
                    'data' => 'ERROR_INVALID_PARAMETER'
708
                ]);
4588 nelberth 709
 
4637 nelberth 710
            }
711
 
712
            $groupMapper = GroupMapper::getInstance($this->adapter);
713
            $group = $groupMapper->fetchOneByUuid($id);
714
 
715
            if(!$group) {
716
                return new JsonModel([
717
                    'success' => false,
718
                    'data' => 'ERROR_GROUP_NOT_FOUND'
719
                ]);
720
            }
721
 
722
            if($group->status != Group::STATUS_ACTIVE) {
723
                return new JsonModel([
724
                    'success' => false,
725
                    'data' => 'ERROR_GROUP_IS_NOT_ACTIVE'
726
                ]);
727
            }
728
 
729
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
730
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
731
            if($groupMember) {
4588 nelberth 732
 
4637 nelberth 733
                if($groupMember->status == GroupMember::STATUS_ADDED_BY_ADMIN) {
4588 nelberth 734
 
4637 nelberth 735
                    $groupMember->status = GroupMember::STATUS_CANCELLED;
736
                    if($groupMemberMapper->update($groupMember)) {
737
                        if($flash) {
738
                            $flashMessenger->addSuccessMessage('LABEL_GROUP_REQUEST_REJECTED');
739
 
740
                            return new JsonModel([
741
                                'success' => true,
742
                                'data' =>  [
743
                                    'message' => 'LABEL_GROUP_REQUEST_CANCELLED',
744
                                    'reload' => true
745
                                ]
746
                            ]);
747
 
748
                        } else {
749
                            return new JsonModel([
750
                                'success' => true,
751
                                'data' =>  'LABEL_GROUP_REQUEST_CANCELLED'
752
                            ]);
753
                        }
4588 nelberth 754
 
4637 nelberth 755
 
756
 
757
                    } else {
758
                        return new JsonModel([
759
                            'success' => false,
760
                            'data' => $groupMemberMapper->getError()
761
                        ]);
762
                    }
763
 
764
 
765
                } else {
766
                    return new JsonModel([
767
                        'success' => false,
768
                        'data' => 'ERROR_GROUP_THERE_IS_NO_PENDING_REQUEST_TO_CANCEL'
4588 nelberth 769
                    ]);
770
                }
771
 
4637 nelberth 772
            } else {
773
                return new JsonModel([
774
                    'success' => false,
775
                    'data' => 'ERROR_GROUP_YOU_NOT_MEMBER'
776
                ]);
777
            }
778
 
779
 
780
 
781
 
782
        } else {
783
 
784
            return new JsonModel([
785
                'success' => false,
786
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
787
            ]);
788
        }
789
    }
790
 
791
    public function acceptAction()
792
    {
793
        $flashMessenger = $this->plugin('FlashMessenger');
794
        $currentUserPlugin = $this->plugin('currentUserPlugin');
795
        $currentUser = $currentUserPlugin->getUser();
796
 
797
        $request = $this->getRequest();
798
        if($request->isPost()) {
799
            $id = $this->params()->fromRoute('id');
800
            $flash =  filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);
801
            $flash = $flash === 'true'? true: false;
802
 
803
            if(!$id) {
804
                return new JsonModel([
805
                    'success' => false,
806
                    'data' => 'ERROR_INVALID_PARAMETER'
807
                ]);
4588 nelberth 808
 
4637 nelberth 809
            }
810
 
811
            $groupMapper = GroupMapper::getInstance($this->adapter);
812
            $group = $groupMapper->fetchOneByUuid($id);
813
 
814
            if(!$group) {
815
                return new JsonModel([
816
                    'success' => false,
817
                    'data' => 'ERROR_GROUP_NOT_FOUND'
818
                ]);
819
            }
820
 
821
            if($group->status != Group::STATUS_ACTIVE) {
822
                return new JsonModel([
823
                    'success' => false,
824
                    'data' => 'ERROR_GROUP_IS_NOT_ACTIVE'
825
                ]);
826
            }
827
 
828
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
829
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
830
            if($groupMember) {
4588 nelberth 831
 
4637 nelberth 832
                if($groupMember->status == GroupMember::STATUS_ADDED_BY_ADMIN) {
833
 
834
                    $groupMember->status = GroupMember::STATUS_ACCEPTED;
835
                    if($groupMemberMapper->update($groupMember)) {
836
                        if($flash) {
837
                            $flashMessenger->addSuccessMessage('LABEL_GROUP_AUTO_JOIN_SUCCESS');
838
 
839
                            return new JsonModel([
840
                                'success' => true,
841
                                'data' => [
842
                                    'message' => 'LABEL_GROUP_AUTO_JOIN_SUCCESS',
843
                                    'reload' => true
844
                                ]
845
                            ]);
846
                        } else {
847
                            return new JsonModel([
848
                                'success' => true,
849
                                'data' => 'LABEL_GROUP_AUTO_JOIN_SUCCESS'
850
                            ]);
851
                        }
4588 nelberth 852
 
4637 nelberth 853
                    } else {
854
                        return new JsonModel([
855
                            'success' => false,
856
                            'data' => $groupMemberMapper->getError()
857
                        ]);
4588 nelberth 858
                    }
859
                } else {
4637 nelberth 860
                    return new JsonModel([
861
                        'success' => false,
862
                        'data' => 'ERROR_GROUP_YOU_HAVE_NOT_INVITED_THIS_GROUP'
863
                    ]);
864
                }
4588 nelberth 865
 
4637 nelberth 866
            } else {
867
                return new JsonModel([
868
                    'success' => false,
869
                    'data' => 'ERROR_GROUP_YOU_NOT_MEMBER'
870
                ]);
871
            }
872
        } else {
873
 
874
            return new JsonModel([
875
                'success' => false,
876
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
877
            ]);
878
        }
879
    }
880
    */
881
 
882
    public function requestAction()
883
    {
884
        $flashMessenger = $this->plugin('FlashMessenger');
885
        $currentUserPlugin = $this->plugin('currentUserPlugin');
886
        $currentUser = $currentUserPlugin->getUser();
887
 
888
        $request = $this->getRequest();
889
        if($request->isPost()) {
890
            $id = $this->params()->fromRoute('id');
891
            $flash =  filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);
892
            $flash = $flash === 'true'? true: false;
893
 
894
            if(!$id) {
895
                return new JsonModel([
896
                    'success' => false,
897
                    'data' => 'ERROR_INVALID_PARAMETER'
898
                ]);
4588 nelberth 899
 
4637 nelberth 900
            }
901
 
902
            $groupMapper = GroupMapper::getInstance($this->adapter);
903
            $group = $groupMapper->fetchOneByUuid($id);
904
 
905
            if(!$group) {
4588 nelberth 906
                return new JsonModel([
4637 nelberth 907
                    'success' => false,
908
                    'data' => 'ERROR_GROUP_NOT_FOUND'
4588 nelberth 909
                ]);
4637 nelberth 910
            }
911
 
912
            if($group->status != Group::STATUS_ACTIVE) {
913
                return new JsonModel([
914
                    'success' => false,
915
                    'data' => 'ERROR_GROUP_IS_NOT_ACTIVE'
916
                ]);
917
            }
918
 
919
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
920
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
921
            if($groupMember) {
922
                if($groupMember->status == GroupMember::STATUS_ACCEPTED || $groupMember->status == GroupMember::STATUS_AUTO_JOIN) {
923
                    return new JsonModel([
924
                        'success' => false,
925
                        'data' => 'ERROR_GROUP_YOU_ARE_MEMBER'
926
                    ]);
927
                }
928
                if($groupMember->status == GroupMember::STATUS_REJECTED) {
929
                    return new JsonModel([
930
                        'success' => false,
931
                        'data' => 'ERROR_GROUP_YOUR_REQUEST_WAS_PREVIOUSLY_REJECTED'
932
                    ]);
933
                }
934
 
935
            }
936
 
937
            if($group->privacy == Group::PRIVACY_IS_PRIVATE || $group->accessibility == Group::ACCESSIBILITY_ADMIN_WILL_ADD) {
938
                return new JsonModel([
939
                    'success' => false,
940
                    'data' => 'ERROR_GROUP_ACCESS_ONLY_BY_ADMIN_INVITATION'
941
                ]);
942
            }
943
 
944
 
945
            if($groupMember) {
946
                if($group->accessibility == Group::ACCESSIBILITY_AUTO_JOIN) {
947
                    $groupMember->status    = GroupMember::STATUS_AUTO_JOIN;
948
                    $groupMember->joined_on = new Expression('NOW()');
949
                }
4588 nelberth 950
 
4637 nelberth 951
                if($group->accessibility == Group::ACCESSIBILITY_REQUEST_TO_JOIN) {
952
                    $groupMember->status                = GroupMember::STATUS_JOINING_REQUESTED;
953
                    $groupMember->joining_request_on    = new Expression('NOW()');
954
                }
4588 nelberth 955
 
4637 nelberth 956
                $result = $groupMemberMapper->update($groupMember);
4588 nelberth 957
 
4637 nelberth 958
 
4588 nelberth 959
            } else {
4637 nelberth 960
                $groupMember = new GroupMember();
961
                $groupMember->group_id  = $group->id;
962
                $groupMember->user_id   = $currentUser->id;
963
                if($group->accessibility == Group::ACCESSIBILITY_AUTO_JOIN) {
964
                    $groupMember->status    = GroupMember::STATUS_AUTO_JOIN;
4588 nelberth 965
                }
966
 
4637 nelberth 967
                if($group->accessibility == Group::ACCESSIBILITY_REQUEST_TO_JOIN) {
968
                    $groupMember->status    = GroupMember::STATUS_JOINING_REQUESTED;
4588 nelberth 969
                }
970
 
4637 nelberth 971
                $result = $groupMemberMapper->insert($groupMember);
972
            }
973
 
974
            if($result) {
4588 nelberth 975
 
4637 nelberth 976
                $userMapper = UserMapper::getInstance($this->adapter);
977
                $userOwnerGroup = $userMapper->fetchOne($group->user_id);
4588 nelberth 978
 
4637 nelberth 979
                $notification = new Notification();
980
                $notification->type     = Notification::TYPE_RECEIVE_REQUEST_JOIN_MY_GROUP;
981
                $notification->read     = Notification::NO;
982
                $notification->user_id  = $userOwnerGroup->id;
983
                $notification->group_id = $group->id;
984
                $notification->message  = 'LABEL_NOTIFICATION_RECEIVE_REQUEST_JOIN_MY_GROUP';
4639 nelberth 985
                $notification->url      = $this->url()->fromRoute('high-performance-teams/view', ['id' => $group->uuid]);
4588 nelberth 986
 
4637 nelberth 987
                $notificationMapper = NotificationMapper::getInstance($this->adapter);
988
                $notificationMapper->insert($notification);
4588 nelberth 989
 
990
 
991
 
4637 nelberth 992
                $userNotificationSettingMapper = UserNotificationSettingMapper::getInstance($this->adapter);
993
                $userNotificationSetting = $userNotificationSettingMapper->fetchOne($group->user_id);
994
 
995
 
996
                if($userNotificationSetting->receive_request_join_my_group) {
997
                    $emailTemplateMapper = EmailTemplateMapper::getInstance($this->adapter);
998
                    $emailTemplate = $emailTemplateMapper->fetchOne(EmailTemplate::ID_RECEIVE_REQUEST_JOIN_MY_GROUP);
999
                    if($emailTemplate) {
1000
                        $arrayCont = [
1001
                            'firstname'             => $currentUser->first_name,
1002
                            'lastname'              => $currentUser->last_name,
1003
                            'other_user_firstname'  => $userOwnerGroup->first_name,
1004
                            'other_user_lastname'   => $userOwnerGroup->last_name,
1005
                            'company_name'          => '',
1006
                            'group_name'            => $group->name,
1007
                            'content'               => '',
1008
                            'code'                  => '',
4639 nelberth 1009
                            'link'                  => $this->url()->fromRoute('high-performance-teams/view', ['id' => $group->uuid], ['force_canonical' => true])
4637 nelberth 1010
                        ];
1011
 
1012
                        $email = new QueueEmail($this->adapter);
1013
                        $email->processEmailTemplate($emailTemplate, $arrayCont, $userOwnerGroup->email, trim($userOwnerGroup->first_name . ' ' . $userOwnerGroup->last_name));
1014
                    }
4588 nelberth 1015
                }
1016
 
4637 nelberth 1017
                if($group->accessibility == Group::ACCESSIBILITY_AUTO_JOIN) {
1018
                    if($flash) {
1019
                        $flashMessenger->addSuccessMessage('LABEL_GROUP_AUTO_JOIN_SUCCESS');
1020
 
1021
                        return new JsonModel([
1022
                            'success' => true,
1023
                            'data' => [
1024
                                'message' => 'LABEL_GROUP_AUTO_JOIN_SUCCESS',
1025
                                'reload' => true
1026
                            ]
1027
                        ]);
1028
                    } else {
1029
                        return new JsonModel([
1030
                            'success' => true,
1031
                            'data' => 'LABEL_GROUP_AUTO_JOIN_SUCCESS'
1032
                        ]);
1033
                    }
1034
                }
1035
                if($group->accessibility == Group::ACCESSIBILITY_REQUEST_TO_JOIN) {
1036
                    if($flash) {
1037
                        $flashMessenger->addSuccessMessage('LABEL_GROUP_REQUEST_SUCCESS');
1038
 
1039
                        return new JsonModel([
1040
                            'success' => true,
1041
                            'data' => [
1042
                                'message' => 'LABEL_GROUP_REQUEST_SUCCESS',
1043
                                'reload' => true
1044
                            ]
1045
                        ]);
1046
                    } else {
1047
                        return new JsonModel([
1048
                            'success' => true,
1049
                            'data' => 'LABEL_GROUP_REQUEST_SUCCESS'
1050
                        ]);
1051
                    }
1052
                }
1053
 
1054
 
1055
 
1056
            } else {
1057
                return new JsonModel([
1058
                    'success' => false,
1059
                    'data' => $groupMapper->getError()
1060
                ]);
1061
            }
1062
 
1063
 
1064
        } else {
4571 nelberth 1065
 
4637 nelberth 1066
            return new JsonModel([
1067
                'success' => false,
1068
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1069
            ]);
1070
        }
1071
 
1072
    }
1073
 
1074
    /**
1075
     *
1076
     * Generación del listado de perfiles
1077
     * {@inheritDoc}
1078
     * @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
1079
     */
1080
    public function joinedGroupsAction()
1081
    {
1082
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1083
        $currentUser = $currentUserPlugin->getUser();
1084
 
1085
        $request = $this->getRequest();
1086
        if($request->isGet()) {
1087
 
1088
 
1089
            $headers  = $request->getHeaders();
1090
            $isJson = false;
1091
            if($headers->has('Accept')) {
1092
                $accept = $headers->get('Accept');
4588 nelberth 1093
 
4637 nelberth 1094
                $prioritized = $accept->getPrioritized();
4588 nelberth 1095
 
4637 nelberth 1096
                foreach($prioritized as $key => $value) {
1097
                    $raw = trim($value->getRaw());
1098
 
1099
                    if(!$isJson) {
1100
                        $isJson = strpos($raw, 'json');
1101
                    }
1102
 
1103
                }
1104
            }
1105
 
1106
            if($isJson) {
4588 nelberth 1107
                $values = [
1108
                    Group::PRIVACY_IS_PRIVATE => 'LABEL_PRIVATE',
1109
                    Group::PRIVACY_IS_PUBLIC => 'LABEL_PUBLIC'
1110
                ];
1111
 
4637 nelberth 1112
                $search = trim(filter_var($this->params()->fromQuery('search', ''), FILTER_SANITIZE_STRING));
1113
 
4588 nelberth 1114
 
4637 nelberth 1115
                $queryMapper = QueryMapper::getInstance($this->adapter);
4588 nelberth 1116
 
4637 nelberth 1117
                $select = $queryMapper->getSql()->select();
1118
                $select->columns(['id', 'uuid', 'name', 'privacy',  'image']);
1119
                $select->from(['g' => GroupMapper::_TABLE]);
1120
                $select->join(['gm' => GroupMemberMapper::_TABLE], 'gm.group_id = g.id', []);
1121
                $select->where->equalTo('g.status', Group::STATUS_ACTIVE);
1122
                $select->where->in('gm.status', [ GroupMember::STATUS_ACCEPTED, GroupMember::STATUS_AUTO_JOIN]);
1123
                $select->where->equalTo('gm.user_id', $currentUser->id);
1124
                $select->where->notEqualTo('g.user_id', $currentUser->id);
1125
 
1126
                if($search) {
1127
                    $select->where->like('name', '%' . $search . '%');
1128
                }
1129
                $select->order('name ASC');
4588 nelberth 1130
 
4637 nelberth 1131
                $records = $queryMapper->fetchAll($select);
4588 nelberth 1132
 
4637 nelberth 1133
                $items = [];
1134
                foreach($records as $record)
1135
                {
4588 nelberth 1136
 
4637 nelberth 1137
                    $item = [
1138
                        'name' => $record['name'],
1139
                        'privacy' => $values[$record['privacy']],
1140
                        'image' => $this->url()->fromRoute('storage', ['type' => 'group', 'code' => $record['uuid'], 'filename' => $record['image'] ]),
4639 nelberth 1141
                        'link_view' => $this->url()->fromRoute('high-performance-teams/view', ['id' => $record['uuid'] ]),
1142
                        'link_leave' => $this->url()->fromRoute('high-performance-teams/leave', ['id' => $record['uuid'] ]),
4637 nelberth 1143
                    ];
4588 nelberth 1144
 
4637 nelberth 1145
                    array_push($items, $item);
4588 nelberth 1146
                }
1147
 
1148
 
1149
 
4637 nelberth 1150
                $response = [
1151
                    'success' => true,
1152
                    'data' => $items
1153
                ];
4588 nelberth 1154
 
4637 nelberth 1155
                return new JsonModel($response);
1156
 
1157
 
1158
            } else {
1159
                    $this->layout()->setTemplate('layout/layout-backend');
1160
                $viewModel = new ViewModel();
1161
                $viewModel->setTemplate('leaders-linked/high-performance-teams-group/joined-groups.phtml');
1162
                return $viewModel ;
1163
            }
1164
 
1165
        } else {
1166
            return new JsonModel([
1167
                'success' => false,
1168
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1169
            ]);
1170
        }
1171
    }
1172
 
1173
    public function invitationsReceivedAction()
1174
    {
1175
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1176
        $currentUser = $currentUserPlugin->getUser();
1177
 
1178
        $request = $this->getRequest();
1179
        if($request->isGet()) {
1180
 
1181
 
1182
            $headers  = $request->getHeaders();
1183
            $isJson = false;
1184
            if($headers->has('Accept')) {
1185
                $accept = $headers->get('Accept');
1186
 
1187
                $prioritized = $accept->getPrioritized();
1188
 
1189
                foreach($prioritized as $key => $value) {
1190
                    $raw = trim($value->getRaw());
1191
 
1192
                    if(!$isJson) {
1193
                        $isJson = strpos($raw, 'json');
4588 nelberth 1194
                    }
4637 nelberth 1195
 
4588 nelberth 1196
                }
4637 nelberth 1197
            }
1198
 
1199
            if($isJson) {
1200
                $search = trim(filter_var($this->params()->fromQuery('search', ''), FILTER_SANITIZE_STRING));
4588 nelberth 1201
 
1202
                $queryMapper = QueryMapper::getInstance($this->adapter);
4637 nelberth 1203
 
4588 nelberth 1204
                $select = $queryMapper->getSql()->select();
4637 nelberth 1205
                $select->columns([ 'uuid', 'name', 'image']);
1206
                $select->from(['g' => GroupMapper::_TABLE]);
1207
                $select->join(['gm' => GroupMemberMapper::_TABLE], 'gm.group_id  = g.id', []);
1208
                $select->where->equalTo('gm.user_id', $currentUser->id);
1209
                $select->where->equalTo('gm.status', GroupMember::STATUS_ADDED_BY_ADMIN);
1210
                $select->where->equalTo('g.status', Group::STATUS_ACTIVE);
4588 nelberth 1211
 
4637 nelberth 1212
                if($search) {
1213
                    $select->where->like('g.name', '%' . $search . '%');
1214
                }
1215
                $select->order('name ASC');
4588 nelberth 1216
 
4637 nelberth 1217
                //echo $select2->getSqlString($this->adapter->platform); exit;
4588 nelberth 1218
 
1219
                $records = $queryMapper->fetchAll($select);
4637 nelberth 1220
 
1221
                $items = [];
1222
                foreach($records as $record)
4588 nelberth 1223
                {
4637 nelberth 1224
                    $item = [
1225
                        'name' => $record['name'],
1226
                        'image' => $this->url()->fromRoute('storage', ['type' => 'group', 'code' => $record['uuid'], 'filename' => $record['image']]),
4639 nelberth 1227
                        'link_view' => $this->url()->fromRoute('high-performance-teams/view', ['id' => $record['uuid'] ]),
1228
                        'link_accept' => $this->url()->fromRoute('high-performance-teams/accept', ['id' => $record['uuid'] ]),
1229
                        'link_reject' => $this->url()->fromRoute('high-performance-teams/reject', ['id' => $record['uuid'] ]),
4637 nelberth 1230
                    ];
4588 nelberth 1231
 
4637 nelberth 1232
 
1233
                    array_push($items, $item);
4588 nelberth 1234
                }
1235
 
4637 nelberth 1236
                $response = [
1237
                    'success' => true,
1238
                    'data' => $items
1239
                ];
4588 nelberth 1240
 
4637 nelberth 1241
                return new JsonModel($response);
1242
 
1243
 
1244
            } else {
1245
                    $this->layout()->setTemplate('layout/layout-backend');
4588 nelberth 1246
                $viewModel = new ViewModel();
4637 nelberth 1247
                $viewModel->setTemplate('leaders-linked/high-performance-teams-group/invitations-received.phtml');
1248
                return $viewModel ;
1249
            }
1250
 
1251
        } else {
1252
            return new JsonModel([
1253
                'success' => false,
1254
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1255
            ]);
1256
        }
1257
    }
1258
 
1259
    public function requestsSentAction()
1260
    {
1261
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1262
        $currentUser = $currentUserPlugin->getUser();
1263
 
1264
        $request = $this->getRequest();
1265
        if($request->isGet()) {
1266
 
1267
 
1268
            $headers  = $request->getHeaders();
1269
            $isJson = false;
1270
            if($headers->has('Accept')) {
1271
                $accept = $headers->get('Accept');
4588 nelberth 1272
 
4637 nelberth 1273
                $prioritized = $accept->getPrioritized();
1274
 
1275
                foreach($prioritized as $key => $value) {
1276
                    $raw = trim($value->getRaw());
1277
 
1278
                    if(!$isJson) {
1279
                        $isJson = strpos($raw, 'json');
1280
                    }
1281
 
4588 nelberth 1282
                }
4637 nelberth 1283
            }
1284
 
1285
            if($isJson) {
1286
                $search = trim(filter_var($this->params()->fromQuery('search', ''), FILTER_SANITIZE_STRING));
4588 nelberth 1287
 
1288
 
1289
 
4637 nelberth 1290
                $queryMapper = QueryMapper::getInstance($this->adapter);
4588 nelberth 1291
 
4637 nelberth 1292
                $select = $queryMapper->getSql()->select();
1293
                $select->columns([ 'uuid', 'name', 'image']);
1294
                $select->from(['g' => GroupMapper::_TABLE]);
1295
                $select->join(['gm' => GroupMemberMapper::_TABLE], 'gm.group_id  = g.id', []);
1296
                $select->where->equalTo('gm.user_id', $currentUser->id);
1297
                $select->where->equalTo('gm.status', GroupMember::STATUS_JOINING_REQUESTED);
1298
                $select->where->equalTo('g.status', Group::STATUS_ACTIVE);
4588 nelberth 1299
 
1300
 
4637 nelberth 1301
                if($search) {
1302
                    $select->where->like('g.name', '%' . $search . '%');
1303
                }
1304
                $select->order('name ASC');
4588 nelberth 1305
 
4637 nelberth 1306
                //echo $select2->getSqlString($this->adapter->platform); exit;
4588 nelberth 1307
 
4637 nelberth 1308
                $records = $queryMapper->fetchAll($select);
1309
 
1310
                $items = [];
1311
                foreach($records as $record)
1312
                {
1313
                    $item = [
1314
                        'name' => $record['name'],
1315
                        'image' => $this->url()->fromRoute('storage', ['type' => 'group', 'code' => $record['uuid'], 'filename' => $record['image']]),
4639 nelberth 1316
                        'link_view' => $this->url()->fromRoute('high-performance-teams/view', ['id' => $record['uuid'] ]),
1317
                        'link_cancel' => $this->url()->fromRoute('high-performance-teams/cancel', ['id' => $record['uuid'] ]),
4637 nelberth 1318
                    ];
1319
 
1320
 
1321
                    array_push($items, $item);
1322
                }
1323
 
1324
                $response = [
1325
                    'success' => true,
1326
                    'data' => $items
1327
                ];
1328
 
1329
                return new JsonModel($response);
1330
 
1331
 
1332
            } else {
1333
                    $this->layout()->setTemplate('layout/layout-backend');
1334
                $viewModel = new ViewModel();
1335
                $viewModel->setTemplate('leaders-linked/high-performance-teams-group/requests-sent.phtml');
4588 nelberth 1336
                return $viewModel ;
1337
            }
1338
 
4571 nelberth 1339
        } else {
1340
            return new JsonModel([
1341
                'success' => false,
1342
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
4637 nelberth 1343
            ]);
1344
        }
4571 nelberth 1345
    }
4637 nelberth 1346
 
1347
 
1348
}