Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
15831 efrain 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Controller;
6
 
7
use Laminas\Db\Adapter\AdapterInterface;
16768 efrain 8
 
15831 efrain 9
use Laminas\Mvc\Controller\AbstractActionController;
10
use Laminas\Log\LoggerInterface;
11
use Laminas\View\Model\ViewModel;
12
use Laminas\View\Model\JsonModel;
13
use LeadersLinked\Library\Functions;
14
use LeadersLinked\Model\Company;
15
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
16
use LeadersLinked\Mapper\MyCoachCategoryMapper;
17
use LeadersLinked\Model\MyCoachCategory;
18
use LeadersLinked\Form\MyCoach\MyCoachCategoryForm;
19
use LeadersLinked\Mapper\UserMapper;
20
use LeadersLinked\Mapper\MyCoachCategoryUserMapper;
21
use LeadersLinked\Form\MyCoach\MyCoachCategoryUserDataForm;
22
use LeadersLinked\Form\MyCoach\MyCoachCategoryUserForm;
23
use LeadersLinked\Mapper\QueryMapper;
24
use Laminas\Paginator\Adapter\DbSelect;
25
use Laminas\Paginator\Paginator;
26
use LeadersLinked\Model\MyCoachCategoryUser;
16797 efrain 27
use LeadersLinked\Mapper\JobDescriptionMapper;
28
use LeadersLinked\Mapper\MyCoachCategoryJobDescriptionMapper;
29
use LeadersLinked\Model\User;
30
use LeadersLinked\Model\MyCoachCategoryJobDescription;
15831 efrain 31
 
32
class MyCoachCategoryUserController extends AbstractActionController {
33
 
34
    /**
35
     *
16769 efrain 36
     * @var \Laminas\Db\Adapter\AdapterInterface
15831 efrain 37
     */
38
    private $adapter;
16768 efrain 39
 
15831 efrain 40
    /**
41
     *
16769 efrain 42
     * @var \LeadersLinked\Cache\CacheInterface
15831 efrain 43
     */
16769 efrain 44
    private $cache;
45
 
46
 
47
    /**
48
     *
49
     * @var \Laminas\Log\LoggerInterface
50
     */
15831 efrain 51
    private $logger;
16768 efrain 52
 
15831 efrain 53
    /**
54
     *
55
     * @var array
56
     */
57
    private $config;
16768 efrain 58
 
16769 efrain 59
 
15831 efrain 60
    /**
61
     *
16769 efrain 62
     * @var \Laminas\Mvc\I18n\Translator
63
     */
64
    private $translator;
65
 
66
 
67
    /**
68
     *
69
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
70
     * @param \LeadersLinked\Cache\CacheInterface $cache
71
     * @param \Laminas\Log\LoggerInterface LoggerInterface $logger
15831 efrain 72
     * @param array $config
16769 efrain 73
     * @param \Laminas\Mvc\I18n\Translator $translator
15831 efrain 74
     */
16769 efrain 75
    public function __construct($adapter, $cache, $logger, $config, $translator)
16768 efrain 76
    {
16769 efrain 77
        $this->adapter      = $adapter;
78
        $this->cache        = $cache;
79
        $this->logger       = $logger;
80
        $this->config       = $config;
81
        $this->translator   = $translator;
15831 efrain 82
    }
83
 
84
    public function indexAction() {
85
        $request = $this->getRequest();
86
        $currentUserPlugin = $this->plugin('currentUserPlugin');
87
        $currentCompany = $currentUserPlugin->getCompany();
88
        $currentUser = $currentUserPlugin->getUser();
89
 
90
 
91
        $request = $this->getRequest();
92
        if ($request->isGet()) {
93
 
94
            $headers = $request->getHeaders();
95
 
96
            $isJson = false;
97
            if ($headers->has('Accept')) {
98
                $accept = $headers->get('Accept');
99
 
100
                $prioritized = $accept->getPrioritized();
101
 
102
                foreach ($prioritized as $key => $value) {
103
                    $raw = trim($value->getRaw());
104
 
105
                    if (!$isJson) {
106
                        $isJson = strpos($raw, 'json');
107
                    }
108
                }
109
            }
110
 
111
            //$isJson = true;
112
            if ($isJson) {
113
 
16766 efrain 114
                $category_uuid = Functions::sanitizeFilterString($this->params()->fromQuery('category_id'));
115
 
15831 efrain 116
 
117
                if(!$category_uuid) {
118
                    return new JsonModel([
119
                        'success' => true,
120
                        'data' => [
121
                            'total' => 0,
122
                            'items' => [],
123
                            'link_add' => '',
124
                            'link_upload' => '',
16797 efrain 125
                            'link_jobs_description' => '',
126
                            'roles' => [],
127
                            'jobs_description' =>  [],
15831 efrain 128
                        ]
129
                    ]);
130
 
131
                }
132
 
133
 
134
                $myCoachCategoryMapper = MyCoachCategoryMapper::getInstance($this->adapter);
135
                $myCoachCategory = $myCoachCategoryMapper->fetchOneByUuid($category_uuid);
136
 
137
                if(!$myCoachCategory) {
138
                    return new JsonModel([
139
                        'success' => false,
140
                        'data' => 'ERROR_MY_COACH_CATEGORY_NOT_FOUND'
141
                    ]);
142
                }
143
 
144
                if($myCoachCategory->company_id != $currentCompany->id) {
145
                    return new JsonModel([
146
                        'success' => false,
147
                        'data' => 'ERROR_MY_COACH_CATEGORY_IS_OTHER_COMPANY'
148
                    ]);
149
                }
150
 
151
 
152
 
153
 
154
                $search = $this->params()->fromQuery('search', []);
16766 efrain 155
                $search = empty($search['value']) ? '' :  Functions::sanitizeFilterString($search['value']);
15831 efrain 156
 
157
                $start = intval($this->params()->fromQuery('start', 0), 10);
158
                $records_x_page = intval($this->params()->fromQuery('length', 10), 10);
159
                $page =  intval($start / $records_x_page);
160
                $page++;
161
 
162
                $order = $this->params()->fromQuery('order', []);
163
                $order_field = empty($order[0]['column']) ? 99 : intval($order[0]['column'], 10);
16766 efrain 164
                $order_direction = empty($order[0]['dir']) ? 'ASC' : Functions::sanitizeFilterString(filter_var($order[0]['dir']));
15831 efrain 165
 
166
                $fields = ['first_name', 'last_name', 'email'];
167
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'first_name';
168
 
169
                if (!in_array($order_direction, ['ASC', 'DESC'])) {
170
                    $order_direction = 'ASC';
171
                }
172
 
173
 
174
 
175
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
176
                $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'my-coach/categories/users/add');
177
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'my-coach/categories/users/edit');
178
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'my-coach/categories/users/delete');
179
                $allowUpload = $acl->isAllowed($currentUser->usertype_id, 'my-coach/categories/users/upload');
16797 efrain 180
                $allowJobsDescription = $acl->isAllowed($currentUser->usertype_id, 'my-coach/categories/users/jobs-description');
15831 efrain 181
 
16797 efrain 182
 
183
 
15831 efrain 184
 
185
                $items = [];
186
 
187
                $queryMapper = QueryMapper::getInstance($this->adapter);
188
                $select = $queryMapper->getSql()->select();
189
                $select->columns(['role']);
190
                $select->from(['cu' => MyCoachCategoryUserMapper::_TABLE]);
191
                $select->join(['u' => UserMapper::_TABLE], 'cu.user_id = u.id',  ['uuid', 'first_name', 'last_name', 'email']);
192
                $select->where->equalTo('cu.category_id', $myCoachCategory->id);
193
 
194
 
195
                if($search) {
196
                    $select->where->nest()->like('first_name', '%' . $search . '%')
197
                    ->or->like('last_name', '%' . $search . '%')
198
                    ->or->like('email', '%' . $search . '%')->unnest();
199
                }
200
 
201
                $select->order($order_field . ' ' . $order_direction);
202
 
203
                //echo $select->getSqlString($this->adapter->platform); exit;
204
 
205
 
206
                $paginatorAdapter = new DbSelect($select, $this->adapter);
207
                $paginator = new Paginator($paginatorAdapter);
208
                $paginator->setItemCountPerPage($records_x_page);
209
                $paginator->setCurrentPageNumber($page);
210
 
211
                $records = $paginator->getCurrentItems();
212
 
213
                foreach ($records as $record) {
214
 
215
                    switch($record['role'])
216
                    {
217
 
218
                        case MyCoachCategoryUser::ROLE_ADMINISTRATOR :
219
                            $role = 'LABEL_ADMINISTRATOR';
220
                            break;
221
 
222
                        case MyCoachCategoryUser::ROLE_EDITOR :
223
                            $role = 'LABEL_EDITOR';
224
                            break;
225
 
226
                        case MyCoachCategoryUser::ROLE_USER :
227
                            $role = 'LABEL_USER';
228
                            break;
229
 
230
                        default :
231
                            $role = 'LABEL_UNKNOWN';
232
                            break;
233
                    }
234
 
235
 
236
 
237
 
238
 
239
 
240
                    $item = [
241
                        'first_name' => $record['first_name'],
242
                        'last_name' => $record['first_name'],
243
                        'email' => $record['email'],
244
                        'role' => $role,
245
                        'actions' => [
246
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('my-coach/categories/users/edit', ['id' => $myCoachCategory->uuid, 'user_id' => $record['uuid'] ]) : '',
247
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('my-coach/categories/users/delete', ['id' => $myCoachCategory->uuid, 'user_id' => $record['uuid'] ]) : '',
248
                        ]
249
                    ];
250
 
251
                    array_push($items, $item);
252
                }
253
 
254
 
255
                if($myCoachCategory->privacy == MyCoachCategory::PRIVACY_COMPANY) {
256
                    $roles = [
257
                        MyCoachCategoryUser::ROLE_USER => 'LABEL_USER',
258
                        MyCoachCategoryUser::ROLE_EDITOR => 'LABEL_EDITOR',
259
                        MyCoachCategoryUser::ROLE_ADMINISTRATOR => 'LABEL_ADMINISTRATOR',
260
                    ];
261
                } else {
262
                    $roles = [
263
                        MyCoachCategoryUser::ROLE_EDITOR => 'LABEL_EDITOR',
264
                        MyCoachCategoryUser::ROLE_ADMINISTRATOR => 'LABEL_ADMINISTRATOR',
265
                    ];
266
                }
267
 
16797 efrain 268
                $jobs_description = [];
15831 efrain 269
 
16797 efrain 270
 
271
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
272
                $myCoachCategoryJobDescriptionMapper = MyCoachCategoryJobDescriptionMapper::getInstance($this->adapter);
273
                $records = $myCoachCategoryJobDescriptionMapper->fetchAllByCategoryId($myCoachCategory->id);
274
                foreach($records as $record)
275
                {
276
                    $jobDescription = $jobDescriptionMapper->fetchOne($record->job_description_id);
277
                    array_push($jobs_description, $jobDescription->uuid);
278
                }
279
 
280
 
281
 
282
 
15831 efrain 283
 
284
                return new JsonModel([
285
                    'success' => true,
286
                    'data' => [
287
                        'total' => $paginator->getTotalItemCount(),
288
                        'items' => $items,
289
                        'link_add' => $allowAdd ? $this->url()->fromRoute('my-coach/categories/users/add', ['id' => $myCoachCategory->uuid ] ) : '',
290
                        'link_upload' => $allowUpload ? $this->url()->fromRoute('my-coach/categories/users/upload', ['id' => $myCoachCategory->uuid ] ) : '',
291
                        'roles' => $roles,
16797 efrain 292
                        'link_jobs_description' => $allowJobsDescription ? $this->url()->fromRoute('my-coach/categories/users/jobs-description', ['id' => $myCoachCategory->uuid ] ) : '',
293
                        'roles' => $roles,
294
                        'jobs_description' =>  $jobs_description,
15831 efrain 295
                    ]
296
                ]);
297
            } else {
16797 efrain 298
                $jobDescriptionIdBoss = 0;
299
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
300
                $jobsDescription = $this->recursiveLoad($currentUser, $currentCompany, $jobDescriptionMapper, $jobDescriptionIdBoss);
15831 efrain 301
 
16797 efrain 302
 
15831 efrain 303
                $form = new  MyCoachCategoryUserForm($this->adapter, $currentCompany->id, MyCoachCategory::PRIVACY_COMPANY);
304
                $formFilter = new MyCoachCategoryUserDataForm($this->adapter, $currentCompany->id);
305
 
306
 
307
                $this->layout()->setTemplate('layout/layout-backend');
308
                $viewModel = new ViewModel();
309
                $viewModel->setTemplate('leaders-linked/my-coach-category-users/index.phtml');
310
                $viewModel->setVariables([
311
                    'form' =>  $form,
312
                    'formFilter' => $formFilter,
16797 efrain 313
                    'jobsDescription' => $jobsDescription,
314
                    'companyName' => $currentCompany->name,
15831 efrain 315
                ]);
316
                return $viewModel;
317
            }
318
        } else {
319
            return new JsonModel([
320
                'success' => false,
321
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
322
            ]);
323
        }
324
 
325
    }
16797 efrain 326
 
327
 
328
    /**
329
     *
330
     * @param User $currentUser
331
     * @param Company $currentCompany
332
     * @param JobDescriptionMapper $jobDescriptionMapper
333
     * @param int $jobDescriptionIdBoss
334
     * @return array
335
     */
336
    private function recursiveLoad($currentUser, $currentCompany, $jobDescriptionMapper, $jobDescriptionIdBoss)
337
    {
338
        $items = [];
339
        $records = $jobDescriptionMapper->fetchAllByCompanyIdAndJobDescriptionIdBoss($currentCompany->id, $jobDescriptionIdBoss);
340
 
341
 
342
        foreach($records as $record)
343
        {
344
 
345
 
346
 
347
            array_push($items, [
348
                'uuid' => $record->uuid,
349
                'name' => $record->name,
350
                'children' => $this->recursiveLoad($currentUser, $currentCompany, $jobDescriptionMapper, $record->id),
351
            ]);
352
        }
353
 
354
        return $items;
355
    }
356
 
15831 efrain 357
 
358
    public function addAction()
359
    {
360
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
361
        $currentCompany     = $currentUserPlugin->getCompany();
362
        $currentUser        = $currentUserPlugin->getUser();
363
        $request            = $this->getRequest();
364
 
365
        if($request->isPost()) {
366
 
16766 efrain 367
            $category_uuid = Functions::sanitizeFilterString($this->params()->fromRoute('id'));
15831 efrain 368
 
369
            $myCoachCategoryMapper = MyCoachCategoryMapper::getInstance($this->adapter);
370
            $myCoachCategory = $myCoachCategoryMapper->fetchOneByUuid($category_uuid);
371
 
372
            if(!$myCoachCategory) {
373
                return new JsonModel([
374
                    'success' => false,
375
                    'data' => 'ERROR_MY_COACH_CATEGORY_NOT_FOUND'
376
                ]);
377
            }
378
 
379
            if($myCoachCategory->company_id != $currentCompany->id) {
380
                return new JsonModel([
381
                    'success' => false,
382
                    'data' => 'ERROR_MY_COACH_CATEGORY_IS_OTHER_COMPANY'
383
                ]);
384
            }
385
 
386
            $dataPost = $request->getPost()->toArray();
387
 
388
            $form = new  MyCoachCategoryUserForm($this->adapter, $currentCompany->id, $myCoachCategory->privacy);
389
            $form->setData($dataPost);
390
 
391
            if($form->isValid()) {
392
 
393
                $dataPost = (array) $form->getData();
394
 
395
 
396
                $userMapper = UserMapper::getInstance($this->adapter);
397
                $user = $userMapper->fetchOneByUuid($dataPost['user_id']);
398
 
399
                $myCoachCategoryUserMapper = MyCoachCategoryUserMapper::getInstance($this->adapter);
400
                $myCoachCategoryUser = $myCoachCategoryUserMapper->fetchOneByCategoryIdAndUserId($myCoachCategory->id, $user->id);
401
 
402
                if($myCoachCategoryUser) {
403
                    return new JsonModel([
404
                        'success' => false,
405
                        'data' => 'ERROR_MY_COACH_CATEGORY_USER_ALREADY_FOUND'
406
                    ]);
407
                }
408
 
409
 
410
                $myCoachCategoryUser =  new MyCoachCategoryUser();
411
                $myCoachCategoryUser->category_id = $myCoachCategory->id;
412
                $myCoachCategoryUser->user_id = $user->id;
413
                $myCoachCategoryUser->role = $dataPost['role'];
414
                $myCoachCategoryUserMapper = MyCoachCategoryUserMapper::getInstance($this->adapter);
415
 
416
 
417
                if($myCoachCategoryUserMapper->insert($myCoachCategoryUser)) {
418
 
419
 
420
                    $this->logger->info('Se agrego el usuario ' . $user->first_name . ' ' . $user->last_name . ' (' . $user->email . ') la categoria ' . $myCoachCategory->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
421
 
422
                    $data = [
423
                        'success'   => true,
424
                        'data'   => 'LABEL_RECORD_ADDED'
425
                    ];
426
                } else {
427
                    $data = [
428
                        'success'   => false,
429
                        'data'      => $myCoachCategoryUserMapper->getError()
430
                    ];
431
 
432
                }
433
 
434
                return new JsonModel($data);
435
 
436
            } else {
437
                $messages = [];
438
                $form_messages = (array) $form->getMessages();
439
                foreach ($form_messages as $fieldname => $field_messages) {
440
 
441
                    $messages[$fieldname] = array_values($field_messages);
442
                }
443
 
444
                return new JsonModel([
445
                    'success' => false,
446
                    'data' => $messages
447
                ]);
448
 
449
            }
450
 
451
        } else {
452
            $data = [
453
                'success' => false,
454
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
455
            ];
456
 
457
            return new JsonModel($data);
458
        }
459
 
460
        return new JsonModel($data);
461
 
462
 
463
    }
464
 
465
    public function editAction()
466
    {
467
        $request = $this->getRequest();
468
        $currentUserPlugin = $this->plugin('currentUserPlugin');
469
        $currentCompany = $currentUserPlugin->getCompany();
470
        $currentUser = $currentUserPlugin->getUser();
471
 
472
        $request = $this->getRequest();
473
        $uuid = $this->params()->fromRoute('id');
474
        $user_uuid = $this->params()->fromRoute('user_id');
475
 
476
        $myCoachCategoryMapper = MyCoachCategoryMapper::getInstance($this->adapter);
477
        $myCoachCategory = $myCoachCategoryMapper->fetchOneByUuid($uuid);
478
 
479
        if(!$myCoachCategory) {
480
            return new JsonModel([
481
                'success' => false,
482
                'data' => 'ERROR_MY_COACH_CATEGORY_NOT_FOUND'
483
            ]);
484
        }
485
 
486
        if($myCoachCategory->company_id != $currentCompany->id) {
487
            return new JsonModel([
488
                'success' => false,
489
                'data' => 'ERROR_MY_COACH_CATEGORY_IS_OTHER_COMPANY'
490
            ]);
491
        }
492
 
493
        $userMapper = UserMapper::getInstance($this->adapter);
494
        $user = $userMapper->fetchOneByUuid($user_uuid);
495
 
496
        if(!$user) {
497
            return new JsonModel([
498
                'success' => false,
499
                'data' => 'ERROR_USER_NOT_FOUND'
500
            ]);
501
 
502
        }
503
 
504
        $myCoachCategoryUserMapper = MyCoachCategoryUserMapper::getInstance($this->adapter);
505
        $myCoachCategoryUser = $myCoachCategoryUserMapper->fetchOneByCategoryIdAndUserId($myCoachCategory->id, $user->id);
506
 
507
        if(!$myCoachCategoryUser) {
508
            return new JsonModel([
509
                'success' => false,
510
                'data' => 'ERROR_MY_COACH_CATEGORY_USER_NOT_FOUND'
511
            ]);
512
        }
513
 
514
 
515
 
516
        if ($request->isPost()) {
517
            $dataPost = $request->getPost()->toArray();
518
 
519
            $form = new  MyCoachCategoryUserForm($this->adapter, $currentCompany->id, $myCoachCategory->privacy);
520
            $form->setData($dataPost);
521
 
522
 
523
 
524
            if ($form->isValid()) {
525
                $dataPost = (array) $form->getData();
526
 
527
                $myCoachCategoryUser->role = $dataPost['role'];
528
 
529
 
530
                if($myCoachCategoryUserMapper->update($myCoachCategoryUser)) {
531
 
532
                  $this->logger->info('Se actualizo el usuario ' . $user->first_name . ' ' . $user->last_name . ' (' . $user->email . ') la categoria ' . $myCoachCategory->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
533
 
534
                   $data = [
535
                       'success'   => true,
536
                       'data'   => 'LABEL_RECORD_UPDATED'
537
                   ];
538
               } else {
539
                   $data = [
540
                       'success'   => false,
541
                       'data'      => $myCoachCategoryUserMapper->getError()
542
                   ];
543
 
544
               }
545
 
546
                return new JsonModel($data);
547
            } else {
548
                $messages = [];
549
                $form_messages = (array) $form->getMessages();
550
                foreach ($form_messages as $fieldname => $field_messages) {
551
                    $messages[$fieldname] = array_values($field_messages);
552
                }
553
 
554
                return new JsonModel([
555
                    'success' => false,
556
                    'data' => $messages
557
                ]);
558
            }
559
        } else if ($request->isGet()) {
560
 
561
 
562
            $data = [
563
                'success' => true,
564
                'data' => [
565
                    'user_id' => $user->uuid,
566
                    'role' => $myCoachCategoryUser->role,
567
                ]
568
            ];
569
 
570
            return new JsonModel($data);
571
        }
572
 
573
 
574
        $data = [
575
            'success' => false,
576
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
577
        ];
578
 
579
        return new JsonModel($data);
580
 
581
    }
582
 
583
    public function deleteAction()
584
    {
585
        $request = $this->getRequest();
586
        $currentUserPlugin = $this->plugin('currentUserPlugin');
587
        $currentCompany = $currentUserPlugin->getCompany();
588
        $currentUser = $currentUserPlugin->getUser();
589
 
590
        $request = $this->getRequest();
591
        $uuid = $this->params()->fromRoute('id');
592
        $user_id = $this->params()->fromRoute('user_id');
593
 
594
 
595
        $myCoachCategoryMapper = MyCoachCategoryMapper::getInstance($this->adapter);
596
        $myCoachCategory = $myCoachCategoryMapper->fetchOneByUuid($uuid);
597
 
598
        if(!$myCoachCategory) {
599
            return new JsonModel([
600
                'success' => false,
601
                'data' => 'ERROR_MY_COACH_CATEGORY_NOT_FOUND'
602
            ]);
603
        }
604
 
605
        if($myCoachCategory->company_id != $currentCompany->id) {
606
            return new JsonModel([
607
                'success' => false,
608
                'data' => 'ERROR_MY_COACH_CATEGORY_IS_OTHER_COMPANY'
609
            ]);
610
        }
611
 
612
        $userMapper = UserMapper::getInstance($this->adapter);
613
        $user = $userMapper->fetchOneByUuid($user_id);
614
 
615
        if(!$user) {
616
            return new JsonModel([
617
                'success' => false,
618
                'data' => 'ERROR_USER_NOT_FOUND'
619
            ]);
620
 
621
        }
622
 
623
        $myCoachCategoryUserMapper = MyCoachCategoryUserMapper::getInstance($this->adapter);
624
        $myCoachCategoryUser = $myCoachCategoryUserMapper->fetchOneByCategoryIdAndUserId($myCoachCategory->id, $user->id);
625
 
626
        if(!$myCoachCategoryUser) {
627
            return new JsonModel([
628
                'success' => false,
629
                'data' => 'ERROR_MY_COACH_CATEGORY_USER_NOT_FOUND'
630
            ]);
631
        }
632
 
633
 
634
 
635
        if ($request->isPost()) {
636
 
637
            if ($myCoachCategoryUserMapper->deleteOneByCategoryIdAndUserId($myCoachCategory->id, $user->id)) {
638
            $this->logger->info('Se borro el usuario ' . $user->first_name . ' ' . $user->last_name . ' (' . $user->email . ') la categoria ' . $myCoachCategory->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
639
 
640
                $data = [
641
                    'success' => true,
642
                    'data' => 'LABEL_RECORD_DELETED'
643
                ];
644
            } else {
645
 
646
                $data = [
647
                    'success' => false,
648
                    'data' => $myCoachCategoryUserMapper->getError()
649
                ];
650
 
651
 
652
            }
653
        } else {
654
            $data = [
655
                'success' => false,
656
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
657
            ];
658
 
659
 
660
        }
661
 
662
 
663
        return new JsonModel($data);
664
 
665
    }
16797 efrain 666
 
667
 
668
 
669
    public function jobsDescriptionAction()
670
    {
671
        $request = $this->getRequest();
672
        $currentUserPlugin = $this->plugin('currentUserPlugin');
673
        $currentCompany = $currentUserPlugin->getCompany();
674
        $currentUser = $currentUserPlugin->getUser();
675
 
676
        $request = $this->getRequest();
677
        $uuid = $this->params()->fromRoute('id');
678
 
679
 
680
 
681
        $myCoachCategoryMapper = MyCoachCategoryMapper::getInstance($this->adapter);
682
        $myCoachCategory = $myCoachCategoryMapper->fetchOneByUuid($uuid);
683
 
684
        if(!$myCoachCategory) {
685
            return new JsonModel([
686
                'success' => false,
687
                'data' => 'ERROR_MY_COACH_CATEGORY_NOT_FOUND'
688
            ]);
689
        }
690
 
691
        if($myCoachCategory->company_id != $currentCompany->id) {
692
            return new JsonModel([
693
                'success' => false,
694
                'data' => 'ERROR_MY_COACH_CATEGORY_IS_OTHER_COMPANY'
695
            ]);
696
        }
697
 
698
        if ($request->isPost()) {
699
 
700
            $myCoachCategoryJobDescriptionMapper = MyCoachCategoryJobDescriptionMapper::getInstance($this->adapter);
701
            $myCoachCategoryJobDescriptionMapper->deleteAllByCategoryId($myCoachCategory->id);
702
 
703
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
704
            $jobs_description_uuid = $this->params()->fromPost('job_description_id');
705
 
706
            if(!empty($jobs_description_uuid)) {
707
 
708
                foreach($jobs_description_uuid as $job_description_uuid)
709
                {
710
                    $jobDescription = $jobDescriptionMapper->fetchOneByUuid($job_description_uuid);
711
 
712
 
713
                    if($jobDescription && $jobDescription->company_id == $currentCompany->id) {
714
 
715
 
716
                        $myCoachCategoryJobDescription = new  MyCoachCategoryJobDescription();
717
                        $myCoachCategoryJobDescription->category_id = $myCoachCategory->id;
718
                        $myCoachCategoryJobDescription->job_description_id = $jobDescription->id;
719
 
720
 
721
                        $myCoachCategoryJobDescriptionMapper->insert($myCoachCategoryJobDescription);
722
                    }
723
 
724
                }
725
            }
726
 
727
 
728
            $data = [
729
                'success' => true,
730
                'data' => 'LABEL_RECORD_UPDATED'
731
            ];
732
 
733
        } else {
734
            $data = [
735
                'success' => false,
736
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
737
            ];
738
 
739
 
740
        }
741
 
742
 
743
        return new JsonModel($data);
744
 
745
    }
746
 
15831 efrain 747
}