Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 239 | Ir a la última revisión | | Ultima modificación | Ver Log |

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