Proyectos de Subversion LeadersLinked - Backend

Rev

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

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