Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6866 | | Comparar con el anterior | 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;
6849 efrain 12
 
1 www 13
use Laminas\Mvc\Controller\AbstractActionController;
14
use Laminas\Log\LoggerInterface;
15
use Laminas\View\Model\ViewModel;
16
use Laminas\View\Model\JsonModel;
17
 
18
use LeadersLinked\Library\Functions;
19
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
20
 
21
use LeadersLinked\Library\Image;
22
use LeadersLinked\Form\MyGroups\CreateForm;
23
use LeadersLinked\Model\Group;
24
use LeadersLinked\Mapper\GroupMapper;
25
use LeadersLinked\Form\MyGroup\AccessibilityForm;
26
use LeadersLinked\Form\MyGroup\CoverForm;
27
use LeadersLinked\Form\MyGroup\ExtendedForm;
28
use LeadersLinked\Form\MyGroup\GroupTypeForm;
29
use LeadersLinked\Form\MyGroup\ImageForm;
30
use LeadersLinked\Form\MyGroup\IndustryForm;
31
use LeadersLinked\Form\MyGroup\PrivacyForm;
32
use LeadersLinked\Form\MyGroup\WebsiteForm;
33
use LeadersLinked\Mapper\IndustryMapper;
34
use LeadersLinked\Mapper\GroupTypeMapper;
35
use LeadersLinked\Mapper\GroupMemberMapper;
36
use LeadersLinked\Mapper\QueryMapper;
37
use LeadersLinked\Model\GroupMember;
38
 
39
class MyGroupsController extends AbstractActionController
40
{
41
    /**
42
     *
6866 efrain 43
     * @var \Laminas\Db\Adapter\AdapterInterface
1 www 44
     */
45
    private $adapter;
46
 
6866 efrain 47
    /**
48
     *
49
     * @var \LeadersLinked\Cache\CacheInterface
50
     */
51
    private $cache;
1 www 52
 
6866 efrain 53
 
1 www 54
    /**
55
     *
6866 efrain 56
     * @var \Laminas\Log\LoggerInterface
1 www 57
     */
58
    private $logger;
59
 
60
    /**
61
     *
62
     * @var array
63
     */
64
    private $config;
65
 
6866 efrain 66
 
1 www 67
    /**
68
     *
6866 efrain 69
     * @var \Laminas\Mvc\I18n\Translator
70
     */
71
    private $translator;
72
 
73
 
74
    /**
75
     *
76
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
77
     * @param \LeadersLinked\Cache\CacheInterface $cache
78
     * @param \Laminas\Log\LoggerInterface LoggerInterface $logger
1 www 79
     * @param array $config
6866 efrain 80
     * @param \Laminas\Mvc\I18n\Translator $translator
1 www 81
     */
6866 efrain 82
    public function __construct($adapter, $cache, $logger, $config, $translator)
1 www 83
    {
84
        $this->adapter      = $adapter;
6866 efrain 85
        $this->cache        = $cache;
1 www 86
        $this->logger       = $logger;
87
        $this->config       = $config;
6866 efrain 88
        $this->translator   = $translator;
1 www 89
    }
90
 
91
    /**
92
     *
93
     * Generación del listado de perfiles
94
     * {@inheritDoc}
95
     * @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
96
     */
97
    public function indexAction()
98
    {
99
        $currentUserPlugin = $this->plugin('currentUserPlugin');
100
        $currentUser = $currentUserPlugin->getUser();
101
 
102
        $request = $this->getRequest();
103
        if($request->isGet()) {
104
 
105
 
106
            $headers  = $request->getHeaders();
107
 
108
            $isJson = false;
109
            if($headers->has('Accept')) {
110
                $accept = $headers->get('Accept');
111
 
112
                $prioritized = $accept->getPrioritized();
113
 
114
                foreach($prioritized as $key => $value) {
115
                    $raw = trim($value->getRaw());
116
 
117
                    if(!$isJson) {
118
                        $isJson = strpos($raw, 'json');
119
                    }
120
 
121
                }
122
            }
123
 
124
            if($isJson) {
6749 efrain 125
                $search = Functions::sanitizeFilterString($this->params()->fromQuery('search', ''));
1 www 126
 
127
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
128
                $allowView = $acl->isAllowed($currentUser->usertype_id, 'group/view');
129
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'group/my-groups/edit');
130
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'group/my-groups/delete');
131
 
132
 
133
                $queryMapper = QueryMapper::getInstance($this->adapter);
134
 
135
                $select = $queryMapper->getSql()->select(GroupMapper::_TABLE);
136
                $select->columns(['id', 'uuid', 'name', 'privacy',  'image', 'status']);
137
                $select->where->equalTo('status', Group::STATUS_ACTIVE);
3648 efrain 138
                $select->where->equalTo('network_id', $currentUser->network_id);
1 www 139
 
140
                if($search) {
141
                    $select->where->like('name', '%' . $search . '%');
142
                }
143
                $select->where->equalTo('user_id', $currentUser->id);
144
                $select->order('name ASC');
145
 
146
                $records = $queryMapper->fetchAll($select);
147
 
148
 
149
                $values = [
150
                    Group::PRIVACY_IS_PRIVATE => 'LABEL_PRIVATE',
151
                    Group::PRIVACY_IS_PUBLIC => 'LABEL_PUBLIC'
152
                ];
153
 
154
 
155
                $items = [];
156
                foreach($records as $record)
157
                {
158
 
159
                    $item = [
160
                        'name' => $record['name'],
161
                        'privacy' => $values[$record['privacy']],
162
                        'image' => $this->url()->fromRoute('storage', ['type' => 'group', 'code' => $record['uuid'], 'filename' => $record['image'] ]),
163
                        'link_view' => $allowView ? $this->url()->fromRoute('group/view', ['id' => $record['uuid'] ])  : '',
164
                        'link_edit' => $allowEdit ? $this->url()->fromRoute('group/my-groups/edit', ['id' => $record['uuid'] ])  : '',
165
                        'link_delete' => $allowDelete ? $this->url()->fromRoute('group/my-groups/delete', ['id' => $record['uuid'] ]) : '',
166
 
167
                    ];
168
 
169
                    array_push($items, $item);
170
                }
171
 
172
 
173
 
174
                $response = [
175
                    'success' => true,
176
                    'data' => $items
177
                ];
178
 
179
                return new JsonModel($response);
180
 
181
 
182
            } else {
183
                $industries = [];
184
                $industryMapper = IndustryMapper::getInstance($this->adapter);
3454 efrain 185
                $records = $industryMapper->fetchAllActive();
1 www 186
                foreach($records as $record)
187
                {
188
                    $industries[$record->uuid] = $record->name;
189
                }
190
 
191
                $groupTypes = [];
192
                $groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);
3454 efrain 193
                $records = $groupTypeMapper->fetchAllActive();
1 www 194
                foreach($records as $record)
195
                {
196
                    $groupTypes[$record->uuid] = $record->name;
197
                }
198
 
199
                $formAdd = new CreateForm($this->adapter);
200
 
201
                $this->layout()->setTemplate('layout/layout.phtml');
202
                $viewModel = new ViewModel();
203
                $viewModel->setTemplate('leaders-linked/my-groups/index.phtml');
204
                $viewModel->setVariables([
205
                    'industries' => $industries,
206
                    'types' => $groupTypes,
207
                    'formAdd' => $formAdd
208
                ]);
209
                return $viewModel ;
210
            }
211
 
212
        } else {
213
            return new JsonModel([
214
                'success' => false,
215
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
216
            ]);
217
        }
218
    }
219
 
220
    /**
221
     *
222
     * Agregar un nuevo perfil
223
     * @return \Laminas\View\Model\JsonModel
224
     */
225
    public function addAction()
226
    {
227
        $request = $this->getRequest();
228
 
229
 
230
        if($request->isPost()) {
231
            $form = new  CreateForm($this->adapter);
232
            $dataPost = $request->getPost()->toArray();
233
 
234
            $form->setData($dataPost);
235
 
236
            if($form->isValid()) {
237
 
238
 
239
                $currentUserPlugin = $this->plugin('currentUserPlugin');
240
                $currentUser = $currentUserPlugin->getUser();
241
 
242
                $dataPost = (array) $form->getData();
243
 
244
                $industryMapper = IndustryMapper::getInstance($this->adapter);
245
                $industry = $industryMapper->fetchOneByUuid($dataPost['industry_id']);
246
 
247
                $groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);
248
                $groupType = $groupTypeMapper->fetchOneByUuid($dataPost['type_id']);
249
 
250
 
251
                $group = new Group();
3639 efrain 252
                $group->network_id = $currentUser->network_id;
1 www 253
                $group->name = $dataPost['name'];
254
                $group->industry_id = $industry->id;
255
                $group->type_id = $groupType->id;
256
                $group->user_id = $currentUser->id;
257
 
258
                $groupMapper = GroupMapper::getInstance($this->adapter);
259
                $result = $groupMapper->insert($group );
260
 
261
                if($result) {
262
 
263
                    $groupMember = new GroupMember();
264
                    $groupMember->group_id = $group->id;
265
                    $groupMember->user_id = $group->user_id;
266
                    $groupMember->status = GroupMember::STATUS_ACCEPTED;
267
 
268
                    $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
269
                    $groupMemberMapper->insert($groupMember);
270
 
271
 
272
                    $this->logger->info('Se agrego el grupo : ' . $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);
273
 
274
                    $data = [
275
                        'success'   => true,
276
                        'data'   => 'LABEL_RECORD_ADDED'
277
                    ];
278
                } else {
279
                    $data = [
280
                        'success'   => false,
281
                        'data'      => $group->getError()
282
                    ];
283
 
284
                }
285
 
286
                return new JsonModel($data);
287
 
288
            } else {
289
                $messages = [];
290
                $form_messages = (array) $form->getMessages();
291
                foreach($form_messages  as $fieldname => $field_messages)
292
                {
293
 
294
                    $messages[$fieldname] = array_values($field_messages);
295
                }
296
 
297
                return new JsonModel([
298
                    'success'   => false,
299
                    'data'   => $messages
300
                ]);
301
            }
302
 
303
        } else {
304
            $data = [
305
                'success' => false,
306
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
307
            ];
308
 
309
            return new JsonModel($data);
310
        }
311
 
312
        return new JsonModel($data);
313
    }
314
 
315
    /**
316
     *
317
     * Borrar un perfil excepto el público
318
     * @return \Laminas\View\Model\JsonModel
319
     */
320
    public function deleteAction()
321
    {
3648 efrain 322
        $currentUserPlugin = $this->plugin('currentUserPlugin');
323
        $currentUser = $currentUserPlugin->getUser();
324
 
1 www 325
        $request = $this->getRequest();
326
        $id = $this->params()->fromRoute('id');
327
 
328
        if(!$id) {
329
            $data = [
330
                'success'   => false,
331
                'data'   => 'ERROR_INVALID_PARAMETER'
332
            ];
333
 
334
            return new JsonModel($data);
335
        }
336
 
337
 
338
 
339
        $groupMapper =GroupMapper::getInstance($this->adapter);
3648 efrain 340
        $group = $groupMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);
1 www 341
        if(!$group) {
342
            $data = [
343
                'success'   => false,
344
                'data'   => 'ERROR_RECORD_NOT_FOUND'
345
            ];
346
 
347
            return new JsonModel($data);
348
        }
349
 
3648 efrain 350
 
351
        if($currentUser->id != $group->user_id) {
1 www 352
            $response = [
353
                'success' => false,
354
                'data' => 'ERROR_UNAUTHORIZED'
355
            ];
356
 
357
            return new JsonModel($response);
358
        }
359
 
360
 
361
        if($request->isPost()) {
362
            $result = $groupMapper->delete($group);
363
            if($result) {
364
                $this->logger->info('Se borro el grupo : ' .  $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);
365
 
366
                $data = [
367
                    'success' => true,
368
                    'data' => 'LABEL_RECORD_DELETED'
369
                ];
370
            } else {
371
 
372
                $data = [
373
                    'success'   => false,
374
                    'data'      => $groupMapper->getError()
375
                ];
376
 
377
                return new JsonModel($data);
378
            }
379
 
380
        } else {
381
            $data = [
382
                'success' => false,
383
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
384
            ];
385
 
386
            return new JsonModel($data);
387
        }
388
 
389
        return new JsonModel($data);
390
    }
391
 
392
    /**
393
     * Presenta el perfil con las opciónes de edición de cada sección
394
     * @return \Laminas\Http\Response|\Laminas\View\Model\ViewModel|\Laminas\View\Model\JsonModel
395
     */
396
    public function editAction()
397
    {
3648 efrain 398
        $currentUserPlugin = $this->plugin('currentUserPlugin');
399
        $currentUser = $currentUserPlugin->getUser();
400
 
1 www 401
        $flashMessenger = $this->plugin('FlashMessenger');
402
 
403
 
404
        $request = $this->getRequest();
405
        $id = $this->params()->fromRoute('id');
406
 
407
 
408
        if(!$id) {
409
            $flashMessenger->addErrorMessage('ERROR_INVALID_PARAMETER');
410
            return $this->redirect()->toRoute('dashboard');
411
        }
412
 
413
 
414
 
415
        $groupMapper =GroupMapper::getInstance($this->adapter);
3648 efrain 416
        $group = $groupMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);
1 www 417
        if(!$group) {
418
            $flashMessenger->addErrorMessage('ERROR_RECORD_NOT_FOUND');
419
            return $this->redirect()->toRoute('dashboard');
420
        }
421
 
3648 efrain 422
 
423
        if($currentUser->id != $group->user_id) {
1 www 424
            $flashMessenger->addErrorMessage('ERROR_UNAUTHORIZED');
425
            return $this->redirect()->toRoute('dashboard');
426
        }
427
 
428
 
429
        if($request->isGet()) {
430
 
6898 efrain 431
            $headers  = $request->getHeaders();
1 www 432
 
6898 efrain 433
            $isJson = false;
434
            if($headers->has('Accept')) {
435
                $accept = $headers->get('Accept');
436
 
437
                $prioritized = $accept->getPrioritized();
438
 
439
                foreach($prioritized as $key => $value) {
440
                    $raw = trim($value->getRaw());
441
 
442
                    if(!$isJson) {
443
                        $isJson = strpos($raw, 'json');
444
                    }
445
 
446
                }
1 www 447
            }
448
 
6898 efrain 449
            if($isJson) {
1 www 450
 
6898 efrain 451
                $accessibilities = [
452
                    Group::ACCESSIBILITY_AUTO_JOIN => 'LABEL_AUTO_JOIN',
453
                    Group::ACCESSIBILITY_REQUEST_TO_JOIN => 'LABEL_REQUEST_TO_JOIN',
454
                    Group::ACCESSIBILITY_ADMIN_WILL_ADD => 'LABEL_ADMIN_WILL_ADD',
455
                ];
456
 
457
                $accessibility = $accessibilities[$group->accessibility];
458
 
459
                $privacies = [
460
                    Group::PRIVACY_IS_PRIVATE => 'LABEL_PRIVATE',
461
                    Group::PRIVACY_IS_PUBLIC => 'LABEL_PUBLIC'
462
                ];
463
 
464
                $privacy = $privacies[$group->privacy];
465
 
466
                $industryMapper = IndustryMapper::getInstance($this->adapter);
467
                $record = $industryMapper->fetchOne($group->industry_id);
468
 
469
                $industry = $record->name;
470
 
471
 
472
                $industries = [];
473
                $records = $industryMapper->fetchAllActive();
474
                foreach($records as $record)
475
                {
476
                    $industries[$record->uuid] = $record->name;
477
                }
478
 
479
 
480
                $groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);
481
                $record = $groupTypeMapper->fetchOne($group->type_id);
482
 
483
                $group_type = $record->name;
484
 
485
                $types = [];
486
                $records =  $groupTypeMapper->fetchAllActive();
487
                foreach($records as $record)
488
                {
489
                    $types[$record->uuid] = $record->name;
490
                }
491
 
492
 
493
 
494
                $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
495
                $total_members = $groupMemberMapper->fetchTotalByGroupId($group->id);
496
 
497
                $image_size_cover = $this->config['leaderslinked.image_sizes.group_cover_upload'];
498
                $image_size_profile = $this->config['leaderslinked.image_sizes.group_image_upload'];
499
 
500
 
501
 
1 www 502
 
6898 efrain 503
                return new JsonModel([
504
                    'total_members'         => $total_members,
505
                    'accessibility'         => $accessibility ,
506
                    'privacy'               => $privacy,
507
                    'industry'              => $industry,
508
                    'group_id'              => $group->id,
509
                    'group_type'            => $group_type,
510
                    'group_uuid'            => $group->uuid,
511
                    'name'                  => trim($group->name),
512
                    'image'                 => $group->image,
513
                    'cover'                 => $group->cover,
514
                    'overview'              => $group->description,
515
                    'website'               => $group->website,
516
                    'image_size_cover'      => $image_size_cover,
517
                    'image_size_profile'    => $image_size_profile,
518
 
519
 
520
                    'industries'            => $industries,
521
                    'types'                 => $types,
522
                    'privacies'             => $privacies,
523
                    'accessibilities'       => $accessibilities
524
                ]);
1 www 525
 
6898 efrain 526
            } else {
1 www 527
 
6898 efrain 528
                $accessibilities = [
529
                    Group::ACCESSIBILITY_AUTO_JOIN => 'LABEL_AUTO_JOIN',
530
                    Group::ACCESSIBILITY_REQUEST_TO_JOIN => 'LABEL_REQUEST_TO_JOIN',
531
                    Group::ACCESSIBILITY_ADMIN_WILL_ADD => 'LABEL_ADMIN_WILL_ADD',
532
                ];
1 www 533
 
6898 efrain 534
                $accessibility = $accessibilities[$group->accessibility];
535
 
536
                $privacies = [
537
                    Group::PRIVACY_IS_PRIVATE => 'LABEL_PRIVATE',
538
                    Group::PRIVACY_IS_PUBLIC => 'LABEL_PUBLIC'
539
                ];
540
 
541
                $privacy = $privacies[$group->privacy];
542
 
543
                $industryMapper = IndustryMapper::getInstance($this->adapter);
544
                $record = $industryMapper->fetchOne($group->industry_id);
545
 
546
                $industry = $record->name;
547
 
548
 
549
                $industries = [];
550
                $records = $industryMapper->fetchAllActive();
551
                foreach($records as $record)
552
                {
553
                    $industries[$record->uuid] = $record->name;
554
                }
555
 
556
 
557
                $groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);
558
                $record = $groupTypeMapper->fetchOne($group->type_id);
559
 
560
                $group_type = $record->name;
561
 
562
                $types = [];
563
                $records =  $groupTypeMapper->fetchAllActive();
564
                foreach($records as $record)
565
                {
566
                    $types[$record->uuid] = $record->name;
567
                }
568
 
569
 
570
 
571
                $formExtended = new ExtendedForm();
572
                $formAccessibility = new AccessibilityForm();
573
                $formPrivacy = new PrivacyForm();
574
                $formType = new GroupTypeForm($this->adapter);
575
                $formIndustry = new IndustryForm($this->adapter);
576
                $formImage = new ImageForm($this->config);
577
                $formCover = new CoverForm($this->config);
578
                $formWebsite = new WebsiteForm();
579
 
580
 
581
                $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
582
                $total_members = $groupMemberMapper->fetchTotalByGroupId($group->id);
583
 
584
                $image_size_cover = $this->config['leaderslinked.image_sizes.group_cover_upload'];
585
                $image_size_profile = $this->config['leaderslinked.image_sizes.group_image_upload'];
586
 
587
 
588
 
589
                $this->layout()->setTemplate('layout/layout.phtml');
590
                $viewModel = new ViewModel();
591
                $viewModel->setTemplate('leaders-linked/my-groups/edit.phtml');
592
                $viewModel->setVariables([
593
                    'total_members'         => $total_members,
594
                    'accessibility'         => $accessibility ,
595
                    'privacy'               => $privacy,
596
                    'industry'              => $industry,
597
                    'group_id'              => $group->id,
598
                    'group_type'            => $group_type,
599
                    'group_uuid'            => $group->uuid,
600
                    'name'                  => trim($group->name),
601
                    'image'                 => $group->image,
602
                    'cover'                 => $group->cover,
603
                    'overview'              => $group->description,
604
                    'website'               => $group->website,
605
 
606
                    'formAccessibility'     => $formAccessibility,
607
                    'formPrivacy'           => $formPrivacy,
608
                    'formType'              => $formType,
609
                    'formIndustry'          => $formIndustry,
610
                    'formExtended'          => $formExtended,
611
                    'formWebsite'           => $formWebsite,
612
                    'formImage'             => $formImage,
613
                    'formCover'             => $formCover,
614
                    'image_size_cover'      => $image_size_cover,
615
                    'image_size_profile'    => $image_size_profile,
616
 
617
 
618
                    'industries'            => $industries,
619
                    'types'                 => $types,
620
                    'privacies'             => $privacies,
621
                    'accessibilities'       => $accessibilities
622
                ]);
623
                return $viewModel ;
624
            }
1 www 625
 
626
        } else {
627
            $data = [
628
                'success' => false,
629
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
630
            ];
631
 
632
            return new JsonModel($data);
633
        }
634
 
635
        return new JsonModel($data);
636
    }
637
 
638
 
639
    /**
640
     * Actualización de la descripción y cualquier otro campo extendido del perfil a futuro
641
     * @return \Laminas\View\Model\JsonModel
642
     */
643
    public function extendedAction()
644
    {
3648 efrain 645
        $currentUserPlugin = $this->plugin('currentUserPlugin');
646
        $currentUser = $currentUserPlugin->getUser();
1 www 647
 
648
        $user_group_id = $this->params()->fromRoute('id');
649
        $groupMapper =GroupMapper::getInstance($this->adapter);
650
 
3648 efrain 651
        $group = $groupMapper->fetchOneByUuidAndNetworkId($user_group_id, $currentUser->network_id);
1 www 652
        if(!$group) {
653
            $response = [
654
                'success' => false,
655
                'data' => 'ERROR_INVALID_PARAMETER'
656
            ];
657
 
658
            return new JsonModel($response);
659
 
660
        }
661
 
3648 efrain 662
 
663
        if($currentUser->id != $group->user_id) {
1 www 664
            $response = [
665
                'success' => false,
666
                'data' => 'ERROR_UNAUTHORIZED'
667
            ];
668
 
669
            return new JsonModel($response);
670
        }
671
 
672
 
673
 
674
        $request = $this->getRequest();
675
        if($request->isGet()) {
676
            $data = [
677
                'success' => true,
678
                'data' => $group->description,
679
            ];
680
 
681
            return new JsonModel($data);
682
 
683
 
684
        } else if($request->isPost()) {
685
 
686
 
687
            $form = new ExtendedForm();
688
            $dataPost = $request->getPost()->toArray();
689
 
690
            $form->setData($dataPost);
691
 
692
            if($form->isValid()) {
693
                $dataPost = (array) $form->getData();
694
 
695
                $hydrator = new ObjectPropertyHydrator();
696
                $hydrator->hydrate($dataPost, $group);
697
 
698
                $groupMapper->updateExtended($group);
699
 
700
                $this->logger->info('Se actualizo las descripción del grupo : '.  $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);
701
 
702
                return new JsonModel([
703
                    'success'   => true,
704
                    'data' => $group->description,
705
                ]);
706
 
707
            } else {
708
                $messages = [];
709
                $form_messages = (array) $form->getMessages();
710
                foreach($form_messages  as $fieldname => $field_messages)
711
                {
712
                    $messages[$fieldname] = array_values($field_messages);
713
                }
714
 
715
                return new JsonModel([
716
                    'success'   => false,
717
                    'data'   => $messages
718
                ]);
719
            }
720
        }
721
 
722
 
723
        $data = [
724
            'success' => false,
725
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
726
        ];
727
 
728
 
729
        return new JsonModel($data);
730
    }
731
 
732
 
733
 
734
    public function imageAction()
735
    {
3648 efrain 736
        $currentUserPlugin = $this->plugin('currentUserPlugin');
737
        $currentUser = $currentUserPlugin->getUser();
738
 
1 www 739
        $user_group_id    = $this->params()->fromRoute('id');
740
        $operation          = $this->params()->fromRoute('operation');
741
 
742
        $groupMapper =GroupMapper::getInstance($this->adapter);
743
 
3648 efrain 744
        $group = $groupMapper->fetchOneByUuidAndNetworkId($user_group_id, $currentUser->network_id);
1 www 745
        if(!$group) {
746
            $response = [
747
                'success' => false,
748
                'data' => 'ERROR_INVALID_PARAMETER'
749
            ];
750
 
751
            return new JsonModel($response);
752
 
753
        }
754
 
755
 
756
        if($currentUser->id != $group->user_id) {
757
            $response = [
758
                'success' => false,
759
                'data' => 'ERROR_UNAUTHORIZED'
760
            ];
761
 
762
            return new JsonModel($response);
763
        }
764
 
765
 
766
 
767
        $request = $this->getRequest();
768
        if($request->isPost()) {
769
            $target_path = $this->config['leaderslinked.fullpath.group'] . DIRECTORY_SEPARATOR . $group->uuid;
770
 
771
 
772
            if($operation == 'delete') {
773
                $this->logger->info('Se borro el image del grupo : ' .  $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);
774
                if($group->image) {
775
                    if(!Image::delete($target_path, $group->image)) {
776
                        return new JsonModel([
777
                            'success'   => false,
778
                            'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
779
                        ]);
780
                    }
781
                }
782
 
783
 
784
                $group->image = '';
785
                if(!$groupMapper->updateImage($group)) {
786
                    return new JsonModel([
787
                        'success'   => false,
788
                        'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
789
                    ]);
790
                }
791
 
792
            } else {
793
                $form = new ImageForm($this->config);
794
                $data 	= array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
795
 
796
                $form->setData($data);
797
 
798
                if($form->isValid()) {
799
 
800
                    $files = $request->getFiles()->toArray();
801
                    if(!empty($files['image']['error'])) {
802
 
803
                        return new JsonModel([
804
                            'success'   => false,
805
                            'data'   =>  'ERROR_UPLOAD_FILE'
806
                        ]);
807
 
808
 
809
                    }
810
 
811
                    if($group->image) {
812
                        if(!Image::delete($target_path, $group->image)) {
813
                            return new JsonModel([
814
                                'success'   => false,
815
                                'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
816
                            ]);
817
                        }
818
                    }
819
 
820
 
821
                    list( $target_width, $target_height ) = explode('x', $this->config['leaderslinked.image_sizes.group_image_size']);
822
                    $source             = $files['image']['tmp_name'];
823
                    $target_filename    = 'group-image-' . uniqid() . '.png';
824
                    $crop_to_dimensions = true;
825
 
826
                    if(!Image::uploadImage($source, $target_path, $target_filename, $target_width, $target_height, $crop_to_dimensions)) {
827
                        return new JsonModel([
828
                            'success'   => false,
829
                            'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
830
                        ]);
831
                    }
832
 
833
                    $group->image = $target_filename;
834
                    if(!$groupMapper->updateImage($group)) {
835
                        return new JsonModel([
836
                            'success'   => false,
837
                            'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
838
                        ]);
839
                    }
840
 
841
                    $this->logger->info('Se actualizo el image del grupo : ' . $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);
842
 
843
                } else {
844
                    $messages = [];
845
                    $form_messages = (array) $form->getMessages();
846
                    foreach($form_messages  as $fieldname => $field_messages)
847
                    {
848
                        $messages[$fieldname] = array_values($field_messages);
849
                    }
850
 
851
                    return new JsonModel([
852
                        'success'   => false,
853
                        'data'   => $messages
854
                    ]);
855
                }
856
            }
857
            return new JsonModel([
858
                'success'   => true,
859
                'data' => $this->url()->fromRoute('storage', ['type' => 'group', 'code' => $group->uuid, 'filename' => $group->image])
860
 
861
            ]);
862
        }
863
 
864
 
865
        $data = [
866
            'success' => false,
867
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
868
        ];
869
 
870
 
871
        return new JsonModel($data);
872
    }
873
 
874
 
875
    public function coverAction()
876
    {
3648 efrain 877
        $currentUserPlugin = $this->plugin('currentUserPlugin');
878
        $currentUser = $currentUserPlugin->getUser();
879
 
1 www 880
        $user_group_id  = $this->params()->fromRoute('id');
881
        $operation      = $this->params()->fromRoute('operation');
882
 
883
        $groupMapper = GroupMapper::getInstance($this->adapter);
884
 
3648 efrain 885
        $group = $groupMapper->fetchOneByUuidAndNetworkId($user_group_id, $currentUser->network_id);
1 www 886
        if(!$group) {
887
            $response = [
888
                'success' => false,
889
                'data' => 'ERROR_INVALID_PARAMETER'
890
            ];
891
 
892
            return new JsonModel($response);
893
 
894
        }
895
 
3648 efrain 896
 
897
        if($currentUser->id != $group->user_id) {
1 www 898
            $response = [
899
                'success' => false,
900
                'data' => 'ERROR_UNAUTHORIZED'
901
            ];
902
 
903
            return new JsonModel($response);
904
        }
905
 
906
 
907
 
908
        $request = $this->getRequest();
909
        if($request->isPost()) {
910
            $target_path = $this->config['leaderslinked.fullpath.group'] . DIRECTORY_SEPARATOR . $group->uuid;
911
 
912
 
913
            if($operation == 'delete') {
914
                if($group->cover) {
915
                    if(!Image::delete($target_path, $group->cover)) {
916
                        return new JsonModel([
917
                            'success'   => false,
918
                            'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
919
                        ]);
920
                    }
921
                }
922
 
923
                $this->logger->info('Se borro el cover del grupo : ' . $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);
924
 
925
                $group->cover = '';
926
                if(!$groupMapper->updateCover($group)) {
927
                    return new JsonModel([
928
                        'success'   => false,
929
                        'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
930
                    ]);
931
                }
932
 
933
            } else {
934
                $form = new CoverForm($this->config);
935
                $data 	= array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
936
 
937
                $form->setData($data);
938
 
939
                if($form->isValid()) {
940
 
941
                    $files = $request->getFiles()->toArray();
942
                    if(!empty($files['cover']['error'])) {
943
 
944
                        return new JsonModel([
945
                            'success'   => false,
946
                            'data'   =>  'ERROR_UPLOAD_FILE'
947
                        ]);
948
 
949
 
950
                    }
951
 
952
                    if($group->cover) {
953
                        if(!Image::delete($target_path, $group->cover)) {
954
                            return new JsonModel([
955
                                'success'   => false,
956
                                'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
957
                            ]);
958
                        }
959
                    }
960
 
961
                    list( $target_width, $target_height ) = explode('x', $this->config['leaderslinked.image_sizes.group_cover_size']);
962
                    $source             = $files['cover']['tmp_name'];
963
                    $target_filename    = 'group-cover-' . uniqid() . '.png';
964
                    $crop_to_dimensions = false;
965
 
966
                    if(!Image::uploadImage($source, $target_path, $target_filename, $target_width, $target_height, $crop_to_dimensions)) {
967
                        return new JsonModel([
968
                            'success'   => false,
969
                            'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
970
                        ]);
971
                    }
972
 
973
 
974
 
975
                    $group->cover = $target_filename;
976
                    if(!$groupMapper->updateCover($group)) {
977
                        return new JsonModel([
978
                            'success'   => false,
979
                            'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
980
                        ]);
981
                    }
982
 
983
                    $this->logger->info('Se actualizo el cover del grupo :  ' . $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);
984
 
985
                } else {
986
                    $messages = [];
987
                    $form_messages = (array) $form->getMessages();
988
                    foreach($form_messages  as $fieldname => $field_messages)
989
                    {
990
                        $messages[$fieldname] = array_values($field_messages);
991
                    }
992
 
993
                    return new JsonModel([
994
                        'success'   => false,
995
                        'data'   => $messages
996
                    ]);
997
                }
998
            }
999
            return new JsonModel([
1000
                'success'   => true,
1001
                'data' => $this->url()->fromRoute('storage', ['type' => 'group-cover', 'code' => $group->uuid, 'filename' => $group->cover])
1002
 
1003
            ]);
1004
        }
1005
 
1006
 
1007
        $data = [
1008
            'success' => false,
1009
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1010
        ];
1011
 
1012
 
1013
        return new JsonModel($data);
1014
    }
1015
 
1016
    public function industryAction()
1017
    {
3648 efrain 1018
 
1019
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1020
        $currentUser = $currentUserPlugin->getUser();
1021
 
1 www 1022
        $id = $this->params()->fromRoute('id');
1023
        if(!$id) {
1024
            $response = [
1025
                'success' => false,
1026
                'data' => 'ERROR_INVALID_PARAMETER'
1027
            ];
1028
 
1029
            return new JsonModel($response);
1030
        }
1031
 
1032
        $groupMapper = GroupMapper::getInstance($this->adapter);
3648 efrain 1033
        $group = $groupMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);
1 www 1034
        if(!$group) {
1035
            $response = [
1036
                'success' => false,
1037
                'data' => 'ERROR_RECORD_NOT_FOUND'
1038
            ];
1039
 
1040
            return new JsonModel($response);
1041
        }
1042
 
3648 efrain 1043
 
1 www 1044
        if($currentUser->id != $group->user_id) {
1045
            $response = [
1046
                'success' => false,
1047
                'data' => 'ERROR_UNAUTHORIZED'
1048
            ];
1049
 
1050
            return new JsonModel($response);
1051
        }
1052
 
1053
 
1054
 
1055
        $request = $this->getRequest();
1056
        if($request->isGet()) {
1057
            $industryMapper = IndustryMapper::getInstance($this->adapter);
1058
            $industry = $industryMapper->fetchOne($group->industry_id);
1059
 
1060
 
1061
 
1062
            $data = [
1063
                'success' => true,
1064
                'data' => $industry->uuid,
1065
            ];
1066
 
1067
            return new JsonModel($data);
1068
 
1069
 
1070
        } else if($request->isPost()) {
1071
 
1072
 
1073
            $form = new IndustryForm($this->adapter);
1074
            $dataPost = $request->getPost()->toArray();
1075
 
1076
            $form->setData($dataPost);
1077
 
1078
            if($form->isValid()) {
1079
                $dataPost = (array) $form->getData();
1080
 
1081
                $industryMapper = IndustryMapper::getInstance($this->adapter);
1082
                $industry = $industryMapper->fetchOneByUuid($dataPost['industry_id']);
1083
 
1084
                $group->industry_id = $industry->id;
1085
                $groupMapper->updateIndustry($group);
1086
 
1087
                $this->logger->info('Se actualizo la industria del grupo : ' . $group->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1088
 
1089
 
1090
 
1091
                return new JsonModel([
1092
                    'success'   => true,
1093
                    'data' =>  $industry->name,
1094
 
1095
                ]);
1096
 
1097
            } else {
1098
                $messages = [];
1099
                $form_messages = (array) $form->getMessages();
1100
                foreach($form_messages  as $fieldname => $field_messages)
1101
                {
1102
                    $messages[$fieldname] = array_values($field_messages);
1103
                }
1104
 
1105
                return new JsonModel([
1106
                    'success'   => false,
1107
                    'data'   => $messages
1108
                ]);
1109
            }
1110
        }
1111
 
1112
 
1113
        $data = [
1114
            'success' => false,
1115
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1116
        ];
1117
 
1118
 
1119
        return new JsonModel($data);
1120
    }
1121
 
1122
    public function websiteAction()
1123
    {
3648 efrain 1124
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1125
        $currentUser = $currentUserPlugin->getUser();
1126
 
1 www 1127
        $id = $this->params()->fromRoute('id');
1128
        if(!$id) {
1129
            $response = [
1130
                'success' => false,
1131
                'data' => 'ERROR_INVALID_PARAMETER'
1132
            ];
1133
 
1134
            return new JsonModel($response);
1135
        }
1136
 
1137
        $groupMapper = GroupMapper::getInstance($this->adapter);
3648 efrain 1138
        $group = $groupMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);
1 www 1139
        if(!$group) {
1140
            $response = [
1141
                'success' => false,
1142
                'data' => 'ERROR_RECORD_NOT_FOUND'
1143
            ];
1144
 
1145
            return new JsonModel($response);
1146
        }
1147
 
3648 efrain 1148
 
1 www 1149
        if($currentUser->id != $group->user_id) {
1150
            $response = [
1151
                'success' => false,
1152
                'data' => 'ERROR_UNAUTHORIZED'
1153
            ];
1154
 
1155
            return new JsonModel($response);
1156
        }
1157
 
1158
 
1159
        $request = $this->getRequest();
1160
        if($request->isGet()) {
1161
            $data = [
1162
                'success' => true,
1163
                'data' => $group->website,
1164
            ];
1165
 
1166
            return new JsonModel($data);
1167
 
1168
 
1169
        } else if($request->isPost()) {
1170
 
1171
 
1172
            $form = new WebsiteForm();
1173
            $dataPost = $request->getPost()->toArray();
1174
 
1175
            $form->setData($dataPost);
1176
 
1177
            if($form->isValid()) {
1178
                $dataPost = (array) $form->getData();
1179
 
1180
                $hydrator = new ObjectPropertyHydrator();
1181
                $hydrator->hydrate($dataPost, $group);
1182
 
1183
                $groupMapper->updateWebsite($group);
1184
 
1185
                $this->logger->info('Se actualizo el website de la empresa ' . $group->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1186
 
1187
                return new JsonModel([
1188
                    'success'   => true,
1189
                    'data' => $group->website,
1190
                ]);
1191
 
1192
            } else {
1193
                $messages = [];
1194
                $form_messages = (array) $form->getMessages();
1195
                foreach($form_messages  as $fieldname => $field_messages)
1196
                {
1197
                    $messages[$fieldname] = array_values($field_messages);
1198
                }
1199
 
1200
                return new JsonModel([
1201
                    'success'   => false,
1202
                    'data'   => $messages
1203
                ]);
1204
            }
1205
        }
1206
 
1207
 
1208
        $data = [
1209
            'success' => false,
1210
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1211
        ];
1212
 
1213
 
1214
        return new JsonModel($data);
1215
    }
1216
 
1217
    public function accessibilityAction()
1218
    {
3648 efrain 1219
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1220
        $currentUser = $currentUserPlugin->getUser();
1221
 
1 www 1222
        $id = $this->params()->fromRoute('id');
1223
        if(!$id) {
1224
            $response = [
1225
                'success' => false,
1226
                'data' => 'ERROR_INVALID_PARAMETER'
1227
            ];
1228
 
1229
            return new JsonModel($response);
1230
        }
1231
 
1232
        $groupMapper = GroupMapper::getInstance($this->adapter);
3648 efrain 1233
        $group = $groupMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);
1 www 1234
        if(!$group) {
1235
            $response = [
1236
                'success' => false,
1237
                'data' => 'ERROR_RECORD_NOT_FOUND'
1238
            ];
1239
 
1240
            return new JsonModel($response);
1241
        }
1242
 
3648 efrain 1243
 
1 www 1244
        if($currentUser->id != $group->user_id) {
1245
            $response = [
1246
                'success' => false,
1247
                'data' => 'ERROR_UNAUTHORIZED'
1248
            ];
1249
 
1250
            return new JsonModel($response);
1251
        }
1252
 
1253
 
1254
        $request = $this->getRequest();
1255
        if($request->isGet()) {
1256
            $data = [
1257
                'success' => true,
1258
                'data' => $group->accessibility,
1259
            ];
1260
 
1261
            return new JsonModel($data);
1262
 
1263
 
1264
        } else if($request->isPost()) {
1265
 
1266
 
1267
            $form = new AccessibilityForm();
1268
            $dataPost = $request->getPost()->toArray();
1269
 
1270
            $form->setData($dataPost);
1271
 
1272
            if($form->isValid()) {
1273
                $dataPost = (array) $form->getData();
1274
 
1275
                $hydrator = new ObjectPropertyHydrator();
1276
                $hydrator->hydrate($dataPost, $group);
1277
 
1278
                $groupMapper->updateAccessibility($group);
1279
 
1280
                 $values = [
1281
                    Group::ACCESSIBILITY_AUTO_JOIN => 'LABEL_AUTO_JOIN',
1282
                    Group::ACCESSIBILITY_REQUEST_TO_JOIN => 'LABEL_REQUEST_TO_JOIN',
1283
                    Group::ACCESSIBILITY_ADMIN_WILL_ADD => 'LABEL_ADMIN_WILL_ADD',
1284
                ];
1285
 
1286
                $this->logger->info('Se actualizo el accesibilidad de la empresa ' . $group->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1287
 
1288
                return new JsonModel([
1289
                    'success'   => true,
1290
                    'data' => $values[$group->accessibility]
1291
                 ]);
1292
 
1293
            } else {
1294
                $messages = [];
1295
                $form_messages = (array) $form->getMessages();
1296
                foreach($form_messages  as $fieldname => $field_messages)
1297
                {
1298
                    $messages[$fieldname] = array_values($field_messages);
1299
                }
1300
 
1301
                return new JsonModel([
1302
                    'success'   => false,
1303
                    'data'   => $messages
1304
                ]);
1305
            }
1306
        }
1307
 
1308
 
1309
        $data = [
1310
            'success' => false,
1311
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1312
        ];
1313
 
1314
 
1315
        return new JsonModel($data);
1316
    }
1317
 
1318
    public function privacyAction()
1319
    {
3648 efrain 1320
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1321
        $currentUser = $currentUserPlugin->getUser();
1322
 
1 www 1323
        $id = $this->params()->fromRoute('id');
1324
        if(!$id) {
1325
            $response = [
1326
                'success' => false,
1327
                'data' => 'ERROR_INVALID_PARAMETER'
1328
            ];
1329
 
1330
            return new JsonModel($response);
1331
        }
1332
 
1333
        $groupMapper = GroupMapper::getInstance($this->adapter);
3648 efrain 1334
        $group = $groupMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);
1 www 1335
        if(!$group) {
1336
            $response = [
1337
                'success' => false,
1338
                'data' => 'ERROR_RECORD_NOT_FOUND'
1339
            ];
1340
 
1341
            return new JsonModel($response);
1342
        }
3648 efrain 1343
 
1 www 1344
        if($currentUser->id != $group->user_id) {
1345
            $response = [
1346
                'success' => false,
1347
                'data' => 'ERROR_UNAUTHORIZED'
1348
            ];
1349
 
1350
            return new JsonModel($response);
1351
        }
1352
 
1353
 
1354
        $request = $this->getRequest();
1355
        if($request->isGet()) {
1356
            $data = [
1357
                'success' => true,
1358
                'data' => $group->privacy,
1359
            ];
1360
 
1361
            return new JsonModel($data);
1362
 
1363
 
1364
        } else if($request->isPost()) {
1365
 
1366
 
1367
            $form = new PrivacyForm();
1368
            $dataPost = $request->getPost()->toArray();
1369
 
1370
            $form->setData($dataPost);
1371
 
1372
            if($form->isValid()) {
1373
                $dataPost = (array) $form->getData();
1374
 
1375
                $hydrator = new ObjectPropertyHydrator();
1376
                $hydrator->hydrate($dataPost, $group);
1377
 
1378
                $groupMapper->updatePrivacy($group);
1379
 
1380
                $values = [
1381
                    Group::PRIVACY_IS_PRIVATE => 'LABEL_PRIVATE',
1382
                    Group::PRIVACY_IS_PUBLIC => 'LABEL_PUBLIC'
1383
                ];
1384
 
1385
 
1386
                $this->logger->info('Se actualizo la privacidad de la empresa ' . $group->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1387
 
1388
                return new JsonModel([
1389
                    'success'   => true,
1390
                    'data' => $values[$group->privacy]
1391
                ]);
1392
 
1393
            } else {
1394
                $messages = [];
1395
                $form_messages = (array) $form->getMessages();
1396
                foreach($form_messages  as $fieldname => $field_messages)
1397
                {
1398
                    $messages[$fieldname] = array_values($field_messages);
1399
                }
1400
 
1401
                return new JsonModel([
1402
                    'success'   => false,
1403
                    'data'   => $messages
1404
                ]);
1405
            }
1406
        }
1407
 
1408
 
1409
        $data = [
1410
            'success' => false,
1411
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1412
        ];
1413
 
1414
 
1415
        return new JsonModel($data);
1416
    }
1417
 
1418
 
1419
 
1420
    public function typeAction()
1421
    {
3648 efrain 1422
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1423
        $currentUser = $currentUserPlugin->getUser();
1424
 
1 www 1425
        $id = $this->params()->fromRoute('id');
1426
        if(!$id) {
1427
            $response = [
1428
                'success' => false,
1429
                'data' => 'ERROR_INVALID_PARAMETER'
1430
            ];
1431
 
1432
            return new JsonModel($response);
1433
        }
1434
 
1435
        $groupMapper = GroupMapper::getInstance($this->adapter);
3648 efrain 1436
        $group = $groupMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);
1 www 1437
        if(!$group) {
1438
            $response = [
1439
                'success' => false,
1440
                'data' => 'ERROR_RECORD_NOT_FOUND'
1441
            ];
1442
 
1443
            return new JsonModel($response);
1444
        }
1445
 
3648 efrain 1446
 
1 www 1447
        if($currentUser->id != $group->user_id) {
1448
            $response = [
1449
                'success' => false,
1450
                'data' => 'ERROR_UNAUTHORIZED'
1451
            ];
1452
 
1453
            return new JsonModel($response);
1454
        }
1455
 
1456
 
1457
 
1458
        $request = $this->getRequest();
1459
        if($request->isGet()) {
1460
 
1461
            $groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);
1462
            $groupType = $groupTypeMapper->fetchOne($group->type_id);
1463
 
1464
            $data = [
1465
                'success' => true,
1466
                'data' => $groupType->uuid,
1467
            ];
1468
 
1469
            return new JsonModel($data);
1470
 
1471
 
1472
        } else if($request->isPost()) {
1473
 
1474
 
1475
            $form = new GroupTypeForm($this->adapter);
1476
            $dataPost = $request->getPost()->toArray();
1477
 
1478
            $form->setData($dataPost);
1479
 
1480
            if($form->isValid()) {
1481
                $dataPost = (array) $form->getData();
1482
 
1483
                $groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);
1484
                $groupType = $groupTypeMapper->fetchOneByUuid($dataPost['type_id']);
1485
 
1486
                $group->type_id = $groupType->id;
1487
                $groupMapper->updateGroupType($group);
1488
 
1489
                $this->logger->info('Se actualizo el tipo del grupo : ' . $group->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1490
 
1491
                $groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);
1492
                $groupType = $groupTypeMapper->fetchOne($group->type_id);
1493
 
1494
                return new JsonModel([
1495
                    'success'   => true,
1496
                    'data' =>  $groupType->name,
1497
 
1498
                ]);
1499
 
1500
            } else {
1501
                $messages = [];
1502
                $form_messages = (array) $form->getMessages();
1503
                foreach($form_messages  as $fieldname => $field_messages)
1504
                {
1505
                    $messages[$fieldname] = array_values($field_messages);
1506
                }
1507
 
1508
                return new JsonModel([
1509
                    'success'   => false,
1510
                    'data'   => $messages
1511
                ]);
1512
            }
1513
        }
1514
 
1515
 
1516
        $data = [
1517
            'success' => false,
1518
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1519
        ];
1520
 
1521
 
1522
        return new JsonModel($data);
1523
    }
1524
 
1525
 
1526
 
1527
 
1528
 
1529
 
1530
 
1531
}