Proyectos de Subversion LeadersLinked - Services

Rev

Rev 547 | Rev 577 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

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