Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
1 www 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
 
7
use Laminas\Db\Adapter\AdapterInterface;
8
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
9
use Laminas\Mvc\Controller\AbstractActionController;
10
use Laminas\Log\LoggerInterface;
11
use Laminas\View\Model\ViewModel;
12
use Laminas\View\Model\JsonModel;
13
use LeadersLinked\Library\Functions;
14
use LeadersLinked\Mapper\CompanyMapper;
15
use LeadersLinked\Model\Company;
16
use LeadersLinked\Mapper\ServiceMapper;
17
use LeadersLinked\Mapper\CompanyServiceMapper;
18
use LeadersLinked\Mapper\RoleMapper;
19
use LeadersLinked\Mapper\CompanyRoleMapper;
20
use LeadersLinked\Mapper\CompanyUserMapper;
21
use LeadersLinked\Mapper\UserMapper;
22
use LeadersLinked\Model\CompanyService;
23
use LeadersLinked\Mapper\CompanyUserRoleMapper;
24
use LeadersLinked\Model\Role;
25
use LeadersLinked\Model\CompanyRole;
26
use LeadersLinked\Model\CompanyUserRole;
27
use LeadersLinked\Model\CompanyUser;
28
use Google\Service\Directory\UserMakeAdmin;
29
 
30
class CompanyController extends AbstractActionController
31
{
32
    /**
33
     *
34
     * @var AdapterInterface
35
     */
36
    private $adapter;
37
 
38
 
39
    /**
40
     *
41
     * @var AbstractAdapter
42
     */
43
    private $cache;
44
 
45
    /**
46
     *
47
     * @var  LoggerInterface
48
     */
49
    private $logger;
50
 
51
    /**
52
     *
53
     * @var array
54
     */
55
    private $config;
56
 
57
 
58
 
59
    /**
60
     *
61
     * @param AdapterInterface $adapter
62
     * @param AbstractAdapter $cache
63
     * @param LoggerInterface $logger
64
     * @param array $config
65
     */
66
    public function __construct($adapter, $cache , $logger, $config)
67
    {
68
        $this->adapter      = $adapter;
69
        $this->cache        = $cache;
70
        $this->logger       = $logger;
71
        $this->config       = $config;
72
 
73
 
74
    }
75
 
76
    public function indexAction()
77
    {
78
        $request = $this->getRequest();
79
        $currentUserPlugin = $this->plugin('currentUserPlugin');
80
        $currentUser    = $currentUserPlugin->getUser();
81
 
82
        if($request->isGet()) {
83
 
84
 
85
            $headers  = $request->getHeaders();
86
 
87
            $isJson = false;
88
            if($headers->has('Accept')) {
89
                $accept = $headers->get('Accept');
90
 
91
                $prioritized = $accept->getPrioritized();
92
 
93
                foreach($prioritized as $key => $value) {
94
                    $raw = trim($value->getRaw());
95
 
96
                    if(!$isJson) {
97
                        $isJson = strpos($raw, 'json');
98
                    }
99
 
100
                }
101
            }
102
 
103
            if($isJson) {
104
 
105
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
106
                $allowServices = $acl->isAllowed($currentUser->usertype_id, 'companies/services');
107
                $allowRoles = $acl->isAllowed($currentUser->usertype_id, 'companies/roles');
108
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'companies/edit');
109
 
110
 
111
                $serviceMapper = ServiceMapper::getInstance($this->adapter);
112
                $records = $serviceMapper->fetchAll();
113
 
114
                $services = [];
115
                foreach($records as $record)
116
                {
117
                    $services[ $record->id ] = $record->name;
118
                }
119
 
120
 
121
                $roleMapper = RoleMapper::getInstance($this->adapter);
122
                $records = $roleMapper->fetchAll();
123
 
124
                $roles = [];
125
                foreach($records as $record)
126
                {
127
                    $roles[ $record->id ] = $record->name;
128
                }
129
 
130
 
131
                $search = $this->params()->fromQuery('search', []);
132
                $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
133
 
134
                $page               = intval($this->params()->fromQuery('start', 1), 10);
135
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
136
                $order =  $this->params()->fromQuery('order', []);
137
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
138
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var( $order[0]['dir'], FILTER_SANITIZE_STRING));
139
 
140
                $fields =  ['name'];
141
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
142
 
143
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
144
                    $order_direction = 'ASC';
145
                }
146
 
147
                $status = filter_var($this->params()->fromQuery('status'));
148
                if(!in_array($status, [
149
                    Company::STATUS_ACTIVE,
150
                    Company::STATUS_DELETED,
151
                    Company::STATUS_INACTIVE,
152
                    Company::STATUS_PENDING,
153
                    Company::STATUS_REJECTED
154
                ])) {
155
                    $status = '';
156
                }
157
 
158
 
159
                $companyMapper = CompanyMapper::getInstance($this->adapter);
160
                $paginator = $companyMapper->fetchAllDataTable($search, $page, $status, $records_x_page, $order_field, $order_direction);
161
 
162
                $companyServiceMapper = CompanyServiceMapper::getInstance($this->adapter);
163
                $companyRoleMapper = CompanyRoleMapper::getInstance($this->adapter);
164
                $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
165
                $userMapper = UserMapper::getInstance($this->adapter);
166
 
167
 
168
                $sandbox = $this->config['leaderslinked.runmode.sandbox'];
169
                if($sandbox) {
170
                    $company_profile_url = $this->config['leaderslinked.frontend.sandbox_company_profile'];
171
                } else {
172
                    $company_profile_url = $this->config['leaderslinked.frontend.production_company_profile'];
173
                }
174
 
175
 
176
                $items = [];
177
                $records = $paginator->getCurrentItems();
178
                foreach($records as $record)
179
                {
180
                    $security = [
181
                        'first_name' => '',
182
                        'last_name' => '',
183
                        'email' => '',
184
                    ];
185
 
186
                    $companyUser = $companyUserMapper->fetchCreatorByCompanyId($record->id);
187
                    if($companyUser) {
188
                        $user = $userMapper->fetchOne($companyUser->user_id);
189
                        if($user) {
190
                            $security['first_name'] = $user->first_name;
191
                            $security['last_name'] = $user->last_name;
192
                            $security['email'] = $user->email;
193
                        }
194
                    }
195
 
196
                    $companyServices = $companyServiceMapper->fetchAllByCompanyId($record->id);
197
                    $companyRoles = $companyRoleMapper->fetchAllByCompanyId($record->id);
198
 
199
 
200
                    $details['services'] = [] ;
201
 
202
                    foreach($companyServices as $companyService)
203
                    {
204
                        if($companyService->status == CompanyService::ACTIVE) {
205
 
206
 
207
                            array_push($details['services'], $services[$companyService->service_id]);
208
                        }
209
                    }
210
 
211
                    $details['roles'] = [] ;
212
 
213
                    foreach($companyRoles as $companyRole)
214
                    {
215
                        array_push($details['roles'], $roles[$companyRole->role_id]);
216
                    }
217
 
218
 
219
 
220
                    $details['internal'] = $record->internal == Company::INTERNAL_YES ? 'LABEL_YES' : 'LABEL_NO';
221
 
222
 
223
                    $link_profile = '';
224
                    switch($record->status)
225
                    {
226
                        case Company::STATUS_PENDING :
227
                            $details['status'] = 'LABEL_PENDING';
228
 
229
                            break;
230
 
231
                        case Company::STATUS_ACTIVE :
232
                            $link_profile = str_replace('[uuid]', $record->uuid, $company_profile_url);
233
                            $details['status'] = 'LABEL_ACTIVE';
234
                            break;
235
 
236
                        case Company::STATUS_INACTIVE :
237
                            $details['status'] = 'LABEL_INACTIVE';
238
                            break;
239
 
240
                        case Company::STATUS_REJECTED :
241
                            $details['status'] = 'LABEL_REJECTED';
242
                            break;
243
 
244
                        case Company::STATUS_DELETED :
245
                            $details['status'] = 'LABEL_DELETED';
246
                            break;
247
 
248
                        default :
249
                            $details['status'] = 'LABEL_UNKNOWN';
250
                            break;
251
                    }
252
 
253
 
254
                    $item = [
255
                        'id' => $record->id,
256
                        'name' => $record->name,
257
                        'link_profile' => $link_profile,
258
                        'details' => $details,
259
                        'security' => $security,
260
                        'actions' => [
261
                           'link_services' => $allowServices ? $this->url()->fromRoute('companies/services', ['id' => $record->uuid ]) : '',
262
                           'link_roles' => $allowRoles ? $this->url()->fromRoute('companies/roles', ['id' => $record->uuid ]) : '',
263
                           'link_edit' => $allowEdit ? $this->url()->fromRoute('companies/edit', ['id' => $record->uuid ]) : '',
264
                        ]
265
 
266
                    ];
267
 
268
                    array_push($items, $item);
269
                }
270
 
271
                return new JsonModel([
272
                    'success' => true,
273
                    'data' => [
274
                        'items' => $items,
275
                        'total' => $paginator->getTotalItemCount(),
276
                    ]
277
                ]);
278
            } else  {
279
 
280
                $this->layout()->setTemplate('layout/layout-backend');
281
                $viewModel = new ViewModel();
282
                $viewModel->setTemplate('leaders-linked/companies/index.phtml');
283
                return $viewModel ;
284
            }
285
 
286
        } else {
287
            return new JsonModel([
288
                'success' => false,
289
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
290
            ]);
291
        }
292
    }
293
 
294
    public function servicesAction()
295
    {
296
        $currentUserPlugin = $this->plugin('currentUserPlugin');
297
        $currentUser = $currentUserPlugin->getUser();
298
 
299
        $request = $this->getRequest();
300
        $uuid = $this->params()->fromRoute('id');
301
 
302
 
303
        if(!$uuid) {
304
            $data = [
305
                'success'   => false,
306
                'data'   => 'ERROR_INVALID_PARAMETER'
307
            ];
308
 
309
            return new JsonModel($data);
310
        }
311
 
312
        $companyMapper = CompanyMapper::getInstance($this->adapter);
313
        $company = $companyMapper->fetchOneByUuid($uuid);
314
        if(!$company) {
315
            $data = [
316
                'success'   => false,
317
                'data'   => 'ERROR_COMPANY_NOT_FOUND'
318
            ];
319
 
320
            return new JsonModel($data);
321
        }
322
 
323
        if($request->isPost()) {
324
 
325
            $companyServiceMapper = CompanyServiceMapper::getInstance($this->adapter);
326
 
327
            $serviceMapper = ServiceMapper::getInstance($this->adapter);
328
            $services = $serviceMapper->fetchAll();
329
 
330
            foreach($services as $service)
331
            {
332
                $status     = filter_var( $this->params()->fromPost('status' . $service->id), FILTER_SANITIZE_STRING);
333
                $paid_from  = filter_var( $this->params()->fromPost('paid_from' . $service->id), FILTER_SANITIZE_STRING);
334
                $paid_to    = filter_var( $this->params()->fromPost('paid_to' . $service->id), FILTER_SANITIZE_STRING);
335
 
336
                $ok = true;
337
                switch ($status) {
338
 
339
                    case CompanyService::ACTIVE :
340
                    case CompanyService::CANCELLED :
341
                    case CompanyService::SUSPENDED :
342
 
343
                        $dt_paid_from = \DateTime::createFromFormat('d/m/Y', $paid_from);
344
                        $dt_paid_to = \DateTime::createFromFormat('d/m/Y', $paid_to);
345
 
346
                        if(!$dt_paid_from || !$dt_paid_to) {
347
                            $ok = false;
348
                        }  else {
349
                            if($dt_paid_from->getTimestamp() > $dt_paid_to->getTimestamp()) {
350
                                $ok = false;
351
                            } else {
352
                                $dt_paid_from->setTime(0, 0, 0);
353
                                $paid_from = $dt_paid_from->format('Y-m-d');
354
 
355
 
356
                                $dt_paid_to->setTime(23, 59, 59);
357
                                $paid_to = $dt_paid_to->format('Y-m-d');
358
                            }
359
                        }
360
 
361
                        break;
362
 
363
                    case CompanyService::INACTIVE :
364
                        $paid_from = null;
365
                        $paid_to = null;
366
                        break;
367
 
368
                    default :
369
                        $ok = false;
370
                        break;
371
 
372
 
373
                }
374
 
375
                if(!$ok) {
376
                    return new JsonModel([
377
                        'success' => false,
378
                        'data' => 'ERROR_PARAMETERS_ARE_INVALID'
379
                    ]);
380
                }
381
 
382
 
383
                $companyService = $companyServiceMapper->fetchOneByCompanyIdAndServiceId($company->id, $service->id);
384
                if($companyService) {
385
 
386
                    $companyService->status = $status;
387
                    $companyService->paid_from = $paid_from;
388
                    $companyService->paid_to = $paid_to;
389
 
390
                    if(!$companyServiceMapper->update($companyService)) {
391
                        return new JsonModel([
392
                            'success' => false,
393
                            'data' => $companyServiceMapper->getError()
394
                        ]);
395
                    }
396
 
397
 
398
                } else {
399
                    $companyService = new CompanyService();
400
                    $companyService->service_id = $service->id;
401
                    $companyService->company_id = $company->id;
402
                    $companyService->status = $status;
403
                    $companyService->paid_from = $paid_from;
404
                    $companyService->paid_to = $paid_to;
405
 
406
 
407
                    if(!$companyServiceMapper->insert($companyService)) {
408
                        return new JsonModel([
409
                            'success' => false,
410
                            'data' => $companyServiceMapper->getError()
411
                        ]);
412
                    }
413
                }
414
 
415
 
416
            }
417
 
418
            $this->logger->info('Se actualizo los servicios de la empresa ' . $company->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
419
 
420
            return new JsonModel([
421
                'success' => true,
422
                'data' => 'LABEL_RECORD_UPDATED'
423
            ]);
424
 
425
 
426
        } else if ($request->isGet()) {
427
            $serviceMapper = ServiceMapper::getInstance($this->adapter);
428
            $records = $serviceMapper->fetchAll();
429
 
430
            $services = [];
431
            foreach($records as $record)
432
            {
433
                $services[ $record->id ] = [
434
                    'id'        => $record->id,
435
                    'name'      => $record->name,
436
                    'status'    => '',
437
                    'paid_from' => '',
438
                    'paid_to'   => '',
439
                ];
440
            }
441
 
442
 
443
 
444
            $companyServiceMapper = CompanyServiceMapper::getInstance($this->adapter);
445
            $records = $companyServiceMapper->fetchAllByCompanyId($company->id);
446
 
447
 
448
            foreach($records as $record)
449
            {
450
                $paid_from = '';
451
                if($record->paid_from) {
452
                    $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $record->paid_from);
453
                    if($dt) {
454
                        $paid_from = $dt->format('d/m/Y');
455
                    }
456
 
457
                }
458
 
459
                $paid_to = '';
460
                if($record->paid_to) {
461
                    $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $record->paid_to);
462
                    if($dt) {
463
                        $paid_to = $dt->format('d/m/Y');
464
                    }
465
 
466
                }
467
 
468
 
469
                $services[ $record->service_id ] ['status']  = $record->status;
470
                $services[ $record->service_id ] ['paid_from']  = $paid_from;
471
                $services[ $record->service_id ] ['paid_to']  = $paid_to;
472
 
473
            }
474
 
475
            $data = [
476
                'success' => true,
477
                'data' => $services,
478
            ];
479
 
480
 
481
 
482
            return new JsonModel($data);
483
        } else {
484
            $data = [
485
                'success' => false,
486
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
487
            ];
488
 
489
            return new JsonModel($data);
490
        }
491
 
492
        return new JsonModel($data);
493
    }
494
 
495
 
496
    public function rolesAction()
497
    {
498
        $currentUserPlugin = $this->plugin('currentUserPlugin');
499
        $currentUser = $currentUserPlugin->getUser();
500
 
501
        $request = $this->getRequest();
502
        $uuid = $this->params()->fromRoute('id');
503
 
504
 
505
        if(!$uuid) {
506
            $data = [
507
                'success'   => false,
508
                'data'   => 'ERROR_INVALID_PARAMETER'
509
            ];
510
 
511
            return new JsonModel($data);
512
        }
513
 
514
        $companyMapper = CompanyMapper::getInstance($this->adapter);
515
        $company = $companyMapper->fetchOneByUuid($uuid);
516
        if(!$company) {
517
            $data = [
518
                'success'   => false,
519
                'data'   => 'ERROR_COMPANY_NOT_FOUND'
520
            ];
521
 
522
            return new JsonModel($data);
523
        }
524
 
525
        if($request->isPost()) {
526
 
527
            $companyRoleMapper = CompanyRoleMapper::getInstance($this->adapter);
528
            $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
529
            $companyUserRoleMapper = CompanyUserRoleMapper::getInstance($this->adapter);
530
 
531
            $roleMapper = RoleMapper::getInstance($this->adapter);
532
            $roles = $roleMapper->fetchAll();
533
 
534
 
535
            foreach($roles as $role)
536
            {
537
                $companyRole = $companyRoleMapper->fetchOneByCompanyIdAndRoleId($company->id, $role->id);
538
                $checked     = filter_var( $this->params()->fromPost('checked' . $role->id), FILTER_SANITIZE_NUMBER_INT);
539
 
540
                if($checked) {
541
 
542
                    if(!$companyRole) {
543
                        $companyRole = new CompanyRole();
544
                        $companyRole->company_id = $company->id;
545
                        $companyRole->role_id = $role->id;
546
 
547
                        if(!$companyRoleMapper->insert($companyRole)) {
548
                            return new JsonModel([
549
                                'success' => false,
550
                                'data' => $companyRoleMapper->getError()
551
                            ]);
552
                        }
553
 
554
                    }
555
 
556
                } else {
557
                    if($companyRole) {
558
                        $companyUserRoleMapper->deleteByCompanyIdAndRoleId($company->id, $role->id);
559
                        $companyRoleMapper->deleteByCompanyIdAndRoleId($company->id, $role->id);
560
                    }
561
 
562
                }
563
            }
564
 
565
            $this->logger->info('Se actualizo los roles de la empresa ' . $company->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
566
 
567
            return new JsonModel([
568
                'success' => true,
569
                'data' => 'LABEL_RECORD_UPDATED'
570
            ]);
571
 
572
 
573
        } else if ($request->isGet()) {
574
            $companyServiceMapper = CompanyServiceMapper::getInstance($this->adapter);
575
 
576
            $roleMapper = RoleMapper::getInstance($this->adapter);
577
            $records = $roleMapper->fetchAll();
578
 
579
 
580
 
581
            $roles = [];
582
            foreach($records as $record)
583
            {
584
                if($record->service_id) {
585
                    $companyService = $companyServiceMapper->fetchOneByCompanyIdAndServiceId($company->id, $record->service_id);
586
 
587
                    if(!$companyService || $companyService->status == CompanyService::INACTIVE) {
588
                        continue;
589
                    }
590
 
591
                }
592
 
593
 
594
 
595
                $roles[ $record->id ] = [
596
                   'id' => $record->id,
597
                   'name' => $record->name,
598
                   'fixed' => $record->creator == Role::CREATOR_YES ? true : false,
599
                   'checked' => $record->creator == Role::CREATOR_YES ? true : false,
600
                ];
601
            }
602
 
603
 
604
            $companyRoleMapper = CompanyRoleMapper::getInstance($this->adapter);
605
            $records = $companyRoleMapper->fetchAllByCompanyId($company->id);
606
 
607
            foreach($records as $record)
608
            {
609
                $roles[ $record->role_id ]['checked'] = true;
610
 
611
            }
612
 
613
            $data = [
614
                'success' => true,
615
                'data' => $roles,
616
            ];
617
 
618
 
619
 
620
            return new JsonModel($data);
621
        } else {
622
            $data = [
623
                'success' => false,
624
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
625
            ];
626
 
627
            return new JsonModel($data);
628
        }
629
 
630
        return new JsonModel($data);
631
    }
632
 
633
    public function editAction()
634
    {
635
        $currentUserPlugin = $this->plugin('currentUserPlugin');
636
        $currentUser = $currentUserPlugin->getUser();
637
 
638
        $request = $this->getRequest();
639
        $uuid = $this->params()->fromRoute('id');
640
 
641
 
642
        if(!$uuid) {
643
            $data = [
644
                'success'   => false,
645
                'data'   => 'ERROR_INVALID_PARAMETER'
646
            ];
647
 
648
            return new JsonModel($data);
649
        }
650
 
651
        $companyMapper = CompanyMapper::getInstance($this->adapter);
652
        $company = $companyMapper->fetchOneByUuid($uuid);
653
        if(!$company) {
654
            $data = [
655
                'success'   => false,
656
                'data'   => 'ERROR_COMPANY_NOT_FOUND'
657
            ];
658
 
659
            return new JsonModel($data);
660
        }
661
 
662
        if($request->isPost()) {
663
 
664
 
665
            $status = filter_var( $this->params()->fromPost('status', FILTER_SANITIZE_STRING));
666
            $user_uuid = filter_var( $this->params()->fromPost('user_uuid', FILTER_SANITIZE_STRING));
667
 
668
 
669
            if(!in_array($status, [
670
                Company::STATUS_ACTIVE,
671
                Company::STATUS_INACTIVE,
672
                Company::STATUS_DELETED,
673
                Company::STATUS_PENDING,
674
                Company::STATUS_REJECTED,
675
 
676
            ])) {
677
                return new JsonModel([
678
                    'success'   => false,
679
                    'data'   => 'ERROR_PARAMETERS_ARE_INVALID'
680
                ]);
681
            }
682
 
683
            $userMapper = UserMapper::getInstance($this->adapter);
684
            $user = $userMapper->fetchOneByUuid($user_uuid);
685
 
686
            if(!$user) {
687
                return new JsonModel([
688
                    'success'   => false,
689
                    'data'   => 'ERROR_USER_NOT_FOUND'
690
                ]);
691
            }
692
 
693
            $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
694
            $companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($company->id, $user->id);
695
 
696
            if(!$companyUser) {
697
                return new JsonModel([
698
                    'success'   => false,
699
                    'data'   => 'ERROR_COMPANY_USER_NOT_FOUND'
700
                ]);
701
            }
702
 
703
 
704
            if($companyUser->status != CompanyUser::STATUS_ACCEPTED && $companyUser->status != CompanyUser::STATUS_ADMIN_WILL_ADD) {
705
                return new JsonModel([
706
                    'success'   => false,
707
                    'data'   => 'ERROR_COMPANY_USER_IS_NOT_ACTIVE'
708
                ]);
709
            }
710
 
711
            $creator = $companyUserMapper->fetchCreatorByCompanyId($company->id);
712
            if($creator->user_id != $user->id) {
713
 
714
                $creator->creator = CompanyUser::CREATOR_NO;
715
                $creator->backend = CompanyUser::BACKEND_NO;
716
                $companyUserMapper->update($creator);
717
 
718
                $companyUser->creator = CompanyUser::CREATOR_YES;
719
                $companyUser->backend = CompanyUser::BACKEND_YES;
720
                $companyUserMapper->update($companyUser);
721
 
722
            }
723
 
724
            $company->status = $status;
725
            if($companyMapper->update($company)) {
726
 
727
                $this->logger->info('Se edito la empresa ' . $company->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
728
 
729
                return new JsonModel([
730
                    'success' => true,
731
                    'data' => 'LABEL_RECORD_UPDATED'
732
                ]);
733
            }  else {
734
                return new JsonModel([
735
                    'success' => false,
736
                    'data' => $companyMapper->getError(),
737
                ]);
738
            }
739
 
740
 
741
 
742
 
743
 
744
 
745
        } else if ($request->isGet()) {
746
            $userMapper = UserMapper::getInstance($this->adapter);
747
            $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
748
            $records = $companyUserMapper->fetchAllByCompanyId($company->id);
749
 
750
            $users = [] ;
751
            foreach($records as $record)
752
            {
753
                if($record->owner == CompanyUser::OWNER_YES) {
754
                    continue;
755
                }
756
 
757
 
758
                if($record->status != CompanyUser::STATUS_ACCEPTED && $record->status != CompanyUser::STATUS_ADMIN_WILL_ADD) {
759
                    continue;
760
                }
761
 
762
                $user = $userMapper->fetchOne($record->user_id);
763
 
764
                array_push($users, [
765
                    'uuid' => $user->uuid,
766
                    'name' => trim($user->first_name . ' ' . $user->last_name) . ' (' . $user->email . ')',
767
 
768
                ] );
769
 
770
 
771
 
772
 
773
 
774
 
775
            }
776
 
777
            usort($users, function($a, $b) {
778
                return $a['name'] <=> $b['name'];
779
            });
780
 
781
 
782
            $creator = $companyUserMapper->fetchCreatorByCompanyId($company->id);
783
            if($creator) {
784
                $userMapper = UserMapper::getInstance($this->adapter);
785
                $user = $userMapper->fetchOne($creator->user_id);
786
                if($user) {
787
                    $creator = $user->uuid;
788
                } else {
789
                    $creator = '';
790
                }
791
            } else {
792
                $creator = '';
793
            }
794
 
795
            $data = [
796
                'success' => true,
797
                'data' => [
798
                    'status' => $company->status,
799
                    'users' => $users,
800
                    'creator' => $creator,
801
                ],
802
            ];
803
 
804
 
805
 
806
            return new JsonModel($data);
807
        } else {
808
            $data = [
809
                'success' => false,
810
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
811
            ];
812
 
813
            return new JsonModel($data);
814
        }
815
 
816
        return new JsonModel($data);
817
    }
818
 
819
}
820