Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16769 | Rev 16778 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 16769 Rev 16770
Línea 2... Línea 2...
2
 
2
 
Línea 3... Línea 3...
3
declare(strict_types=1);
3
declare(strict_types=1);
Línea 4... Línea -...
4
 
-
 
Línea 5... Línea 4...
5
namespace LeadersLinked\Controller;
4
 
6
 
-
 
7
use Laminas\Db\Adapter\AdapterInterface;
-
 
8
 
5
namespace LeadersLinked\Controller;
9
use Laminas\Mvc\Controller\AbstractActionController;
6
 
10
 
-
 
11
use Laminas\Log\LoggerInterface;
-
 
12
use Laminas\View\Model\ViewModel;
7
 
13
use Laminas\View\Model\JsonModel;
-
 
14
 
-
 
15
 
-
 
16
use LeadersLinked\Form\JobDescription\JobDescriptionForm;
-
 
17
 
8
use Laminas\Mvc\Controller\AbstractActionController;
18
 
9
use Laminas\View\Model\ViewModel;
19
 
10
use Laminas\View\Model\JsonModel;
20
 
11
use LeadersLinked\Form\JobDescription\JobDescriptionForm;
21
use LeadersLinked\Model\Company;
-
 
22
use LeadersLinked\Model\JobDescription;
-
 
23
use LeadersLinked\Model\JobDescriptionCompetency;
12
use LeadersLinked\Model\Company;
24
use LeadersLinked\Model\JobDescriptionCompetencyBehavior;
13
use LeadersLinked\Model\JobDescription;
25
use LeadersLinked\Model\JobDescriptionSubordinate;
14
use LeadersLinked\Model\JobDescriptionCompetency;
26
 
15
use LeadersLinked\Model\JobDescriptionCompetencyBehavior;
27
use LeadersLinked\Mapper\BehaviorMapper;
-
 
28
use LeadersLinked\Mapper\CompetencyMapper;
16
use LeadersLinked\Mapper\BehaviorMapper;
29
use LeadersLinked\Mapper\CompetencyBehaviorMapper;
17
use LeadersLinked\Mapper\CompetencyMapper;
30
use LeadersLinked\Mapper\CompetencyTypeMapper;
18
use LeadersLinked\Mapper\CompetencyBehaviorMapper;
31
 
-
 
32
use LeadersLinked\Mapper\JobDescriptionMapper;
-
 
33
use LeadersLinked\Mapper\JobDescriptionCompetencyBehaviorMapper;
19
use LeadersLinked\Mapper\CompetencyTypeMapper;
34
use LeadersLinked\Mapper\JobDescriptionCompetencyMapper;
20
use LeadersLinked\Mapper\JobDescriptionMapper;
35
use LeadersLinked\Mapper\JobDescriptionSubordinateMapper;
-
 
36
 
21
use LeadersLinked\Mapper\JobDescriptionCompetencyBehaviorMapper;
-
 
22
use LeadersLinked\Mapper\JobDescriptionCompetencyMapper;
37
use LeadersLinked\Library\Functions;
23
use LeadersLinked\Library\Functions;
Línea 38... Línea 24...
38
use LeadersLinked\Library\JobDescriptionPdf;
24
use LeadersLinked\Library\JobDescriptionPdf;
39
 
25
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
40
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
26
use LeadersLinked\Model\User;
Línea 97... Línea 83...
97
    {
83
    {
98
        $currentUserPlugin = $this->plugin('currentUserPlugin');
84
        $currentUserPlugin = $this->plugin('currentUserPlugin');
99
        $currentUser = $currentUserPlugin->getUser();
85
        $currentUser = $currentUserPlugin->getUser();
100
        $currentCompany = $currentUserPlugin->getCompany();
86
        $currentCompany = $currentUserPlugin->getCompany();
Línea -... Línea 87...
-
 
87
 
101
 
88
        
102
        $request = $this->getRequest();
-
 
103
 
89
        $request = $this->getRequest();
Línea -... Línea 90...
-
 
90
        $headers = $request->getHeaders();
104
        $headers = $request->getHeaders();
91
 
-
 
92
        
-
 
93
        if ($request->isPost()) {
-
 
94
            
-
 
95
            $data = $this->params()->fromPost('data');
-
 
96
         
-
 
97
            if(!empty($data)) {
-
 
98
                
-
 
99
                $json = json_decode($data, true);
-
 
100
                if(is_array($json)) {
-
 
101
                    
-
 
102
                    $jobDescriptionIdBoss = 0;
-
 
103
                    $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
-
 
104
                    
-
 
105
                    
-
 
106
                    
-
 
107
                    $position = 0;
-
 
108
                    foreach($json as $item)
-
 
109
                    {
-
 
110
 
-
 
111
                        $this->recursiveSave($currentCompany, $jobDescriptionMapper, $jobDescriptionIdBoss, $item, $position);
-
 
112
                        $position++;
-
 
113
                    }
-
 
114
 
-
 
115
                }
-
 
116
            }
-
 
117
            return new JsonModel([
-
 
118
                'success' => true,
-
 
119
            ]);
105
 
120
            
Línea 106... Línea 121...
106
        $request = $this->getRequest();
121
            
Línea 107... Línea 122...
107
        if ($request->isGet()) {
122
        } else if ($request->isGet()) {
Línea 123... Línea 138...
123
                    }
138
                    }
124
                }
139
                }
125
            }
140
            }
Línea 126... Línea 141...
126
 
141
 
127
            if ($isJson) {
-
 
128
                $search = $this->params()->fromQuery('search');
-
 
129
                $search = empty($search['value']) ? '' : Functions::sanitizeFilterString($search['value']);
142
            if ($isJson) {
130
 
-
 
131
                $start = intval($this->params()->fromQuery('start', 0), 10);
-
 
132
                $records_x_page = intval($this->params()->fromQuery('length', 10), 10);
-
 
133
                $page =  intval($start / $records_x_page);
-
 
134
                $page++;
143
                
135
                
-
 
136
                $order = $this->params()->fromQuery('order', []);
-
 
137
                $order_field = empty($order[0]['column']) ? 99 : intval($order[0]['column'], 10);
-
 
138
                $order_direction = empty($order[0]['dir']) ? 'ASC' : Functions::sanitizeFilterString(filter_var($order[0]['dir']));
-
 
139
 
-
 
140
                $fields = ['name'];
-
 
141
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
-
 
142
 
-
 
143
                if (!in_array($order_direction, ['ASC', 'DESC'])) {
-
 
144
                    $order_direction = 'ASC';
-
 
145
                }
-
 
146
 
-
 
147
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
144
                
148
 
-
 
149
                if ($currentCompany) {
-
 
150
                    $paginator = $jobDescriptionMapper->fetchAllDataTableByCompanyId($currentCompany->id, $search, $page, $records_x_page, $order_field, $order_direction);
-
 
151
                } else {
-
 
152
                    $paginator = $jobDescriptionMapper->fetchAllDataTable($search, $page, $records_x_page, $order_field, $order_direction);
-
 
153
                }
145
                
154
                $items = [];
-
 
155
                $records = $paginator->getCurrentItems();
-
 
156
                foreach ($records as $record) {
146
                $items = [];
157
 
-
 
158
                    $item = [
-
 
159
                        'name' => $record->name,
-
 
160
                        'status' => $record->status,
147
                
161
                        'actions' => [
148
                $jobDescriptionIdBoss = 0;
162
                            'link_report' => $this->url()->fromRoute('jobs-description/report', ['id' => $record->uuid]),
-
 
163
                            'link_edit' => $this->url()->fromRoute('jobs-description/edit', ['id' => $record->uuid]),
-
 
164
                            'link_delete' => $this->url()->fromRoute('jobs-description/delete', ['id' => $record->uuid])
-
 
165
                        ]
-
 
166
                    ];
149
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
167
 
-
 
168
                    array_push($items, $item);
-
 
-
 
150
                
169
                }
151
                
-
 
152
                
170
 
153
                $items = $this->recursiveLoad($currentUser, $currentCompany, $jobDescriptionMapper, $jobDescriptionIdBoss);
171
                return new JsonModel([
154
                return new JsonModel([
172
                    'success' => true,
155
                    'success' => true,
173
                    'data' => [
156
                    'data' => [
174
                        'items' => $items,
-
 
-
 
157
                        'items' => $items,
175
                        'total' => $paginator->getTotalItemCount(),
158
  
176
                    ]
159
                    ]
-
 
160
                ]);
177
                ]);
161
 
Línea 194... Línea 178...
194
            }
178
            }
195
        } else {
179
        } else {
196
            return new JsonModel([
180
            return new JsonModel([
197
                'success' => false,
181
                'success' => false,
198
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
182
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
199
            ]);;
183
            ]);
200
        }
184
        }
201
    }
185
    }
-
 
186
    
-
 
187
    /**
-
 
188
     * 
-
 
189
     * @param Company $currentCompany
-
 
190
     * @param JobDescriptionMapper $jobDescriptionMapper
-
 
191
     * @param int $jobDescriptionIdBoss
-
 
192
     * @param int $position
-
 
193
     * @param array $item
-
 
194
     */
-
 
195
    private function recursiveSave($currentCompany, $jobDescriptionMapper, $jobDescriptionIdBoss, $item, $position)
-
 
196
    {
-
 
197
        
-
 
198
 
-
 
199
        if(!empty($item) && is_array($item)) {
-
 
200
            foreach($item as $subitem)
-
 
201
            {
-
 
202
                $jobDescription = $jobDescriptionMapper->fetchOneByUuid($subitem['id']);
-
 
203
                if($jobDescriptionMapper) {
-
 
204
                    if($jobDescriptionIdBoss) {
-
 
205
 
-
 
206
            
-
 
207
                        $jobDescriptionMapper->setJobDescriptionIdBossByJobDescripcionId($jobDescription->id,  $jobDescriptionIdBoss, $position);
-
 
208
                    } else {
-
 
209
                        $jobDescriptionMapper->removeJobDescriptionIdBossByJobDescriptionId($jobDescription->id, $position);
-
 
210
                    }
-
 
211
                    
-
 
212
                    $position++;
-
 
213
                    
-
 
214
                    if(!empty($subitem['children']) && is_array($subitem['children'])) {
-
 
215
                        
-
 
216
                        $position2 = 0;
-
 
217
                        foreach($subitem['children'] as $subitem2)
-
 
218
                        {
-
 
219
                            $this->recursiveSave($currentCompany, $jobDescriptionMapper, $jobDescription->id,  $subitem2, $position2);
-
 
220
                            $position2++;
-
 
221
                        }
-
 
222
                        
-
 
223
                    }
-
 
224
    
-
 
225
                    
-
 
226
                }
-
 
227
            }
-
 
228
        }
-
 
229
    }
-
 
230
    
-
 
231
    
-
 
232
    /**
-
 
233
     * 
-
 
234
     * @param User $currentUser
-
 
235
     * @param Company $currentCompany
-
 
236
     * @param JobDescriptionMapper $jobDescriptionMapper
-
 
237
     * @param int $jobDescriptionIdBoss
-
 
238
     * @return array
-
 
239
     */
-
 
240
    private function recursiveLoad($currentUser, $currentCompany, $jobDescriptionMapper, $jobDescriptionIdBoss)
-
 
241
    {
-
 
242
        $acl            = $this->getEvent()->getViewModel()->getVariable('acl');
-
 
243
        $allowAdd       = $acl->isAllowed($currentUser->usertype_id, 'jobs-description/add') ? 1 : 0;
-
 
244
        $allowEdit      = $acl->isAllowed($currentUser->usertype_id, 'jobs-description/edit') ? 1 : 0;
-
 
245
        $allowDelete    = $acl->isAllowed($currentUser->usertype_id, 'jobs-description/delete') ? 1 : 0;
-
 
246
        $allowReport    = $acl->isAllowed($currentUser->usertype_id, 'jobs-description/report') ? 1 : 0;
-
 
247
        
-
 
248
        
-
 
249
        $items = [];
-
 
250
 
-
 
251
        
-
 
252
        if ($currentCompany) {
-
 
253
            $records = $jobDescriptionMapper->fetchAllByCompanyIdAndJobDescriptionIdBoss($currentCompany->id, $jobDescriptionIdBoss);
-
 
254
        } else {
-
 
255
            $records = $jobDescriptionMapper->fetchAllDefaultAndJobDescriptionIdBoss($jobDescriptionIdBoss);
-
 
256
        }
-
 
257
        
-
 
258
        foreach($records as $record)
-
 
259
        {
-
 
260
            array_push($items, [
-
 
261
                'uuid' => $record->uuid,
-
 
262
                'name' => $record->name,
-
 
263
                'children' => $this->recursiveLoad($currentUser, $currentCompany, $jobDescriptionMapper, $record->id),
-
 
264
                'status' => $record->status,
-
 
265
                'link_report' => $allowReport ? $this->url()->fromRoute('jobs-description/report', ['id' => $record->uuid]) : '',
-
 
266
                'link_edit' => $allowEdit ? $this->url()->fromRoute('jobs-description/edit', ['id' => $record->uuid]) : '',
-
 
267
                'link_delete' => $allowDelete ? $this->url()->fromRoute('jobs-description/delete', ['id' => $record->uuid]) : '',
-
 
268
                'link_add' => $allowAdd ? $this->url()->fromRoute('jobs-description/add', ['id' => $record->uuid]) : '',
-
 
269
            ]);
-
 
270
        }
-
 
271
        
-
 
272
        return $items;
-
 
273
    }
Línea 202... Línea 274...
202
 
274
 
203
    public function addAction()
275
    public function addAction()
204
    {
276
    {
205
        $currentUserPlugin = $this->plugin('currentUserPlugin');
277
        $currentUserPlugin = $this->plugin('currentUserPlugin');
Línea 338... Línea 410...
338
 
410
 
Línea 339... Línea 411...
339
 
411
 
340
            $form->setData($dataPost);
-
 
341
 
-
 
342
            if ($form->isValid()) {
-
 
343
                $dataPost = (array) $form->getData();
-
 
344
                
-
 
345
                $hydrator = new ObjectPropertyHydrator();
-
 
346
                $jobDescription = new JobDescription();
-
 
347
                
-
 
348
                $hydrator->hydrate($dataPost, $jobDescription);
-
 
349
       
-
 
350
                $dataPost['status'] = $dataPost['status'] ? $dataPost['status'] : JobDescription::STATUS_INACTIVE;
412
            $form->setData($dataPost);
351
 
-
 
Línea -... Línea 413...
-
 
413
 
352
 
414
            if ($form->isValid()) {
-
 
415
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
-
 
416
                
-
 
417
                $position =  0;
Línea 353... Línea 418...
353
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
418
                $job_description_boss_id = 0;
-
 
419
                
354
 
420
                $id = $this->params()->fromRoute('id');
355
                
-
 
Línea 356... Línea -...
356
                if (!empty( $jobDescription->job_description_id_boss)) {
-
 
357
                    
-
 
358
                    $jobDescriptionBoss = $jobDescriptionMapper->fetchOneByUuid($jobDescription->job_description_id_boss);
421
                if($id) {
359
                    if ($jobDescriptionBoss) {
-
 
360
                        
-
 
361
                        
-
 
362
                        
-
 
363
                        if ($jobDescriptionBoss->company_id == ($currentCompany ? $currentCompany->id : 0)) {
-
 
364
                            $jobDescription->job_description_id_boss = $jobDescriptionBoss->id;
422
                    
-
 
423
                    $jobDescriptionBoos = $jobDescriptionMapper->fetchOneByUuid($id);
-
 
424
                    if($jobDescriptionBoos && $jobDescriptionBoos->company_id == $currentCompany->id) {
365
                        } else {
425
                        $job_description_boss_id = $jobDescriptionBoos->id;
Línea 366... Línea 426...
366
                            $jobDescription->job_description_id_boss= null;
426
                        
-
 
427
                        $position = $jobDescriptionMapper->fetchMaxPositionByJobDescriptionIdBoss($jobDescriptionBoos->id);
-
 
428
                   }
367
                        }
429
                    
-
 
430
                    
-
 
431
                }
-
 
432
                
-
 
433
                
368
                    } else {
434
                $dataPost = (array) $form->getData();
369
                        $jobDescription->job_description_id_boss = null;
435
                $dataPost['status'] = empty($dataPost['status']) ? JobDescription::STATUS_INACTIVE : $dataPost['status'];
370
                    }
436
                
371
                }
437
                $hydrator = new ObjectPropertyHydrator();
372
                
438
                $jobDescription = new JobDescription();
373
 
439
                $jobDescription->job_description_id_boss = $job_description_boss_id;
-
 
440
                $jobDescription->position = $position;
374
 
441
                
Línea 375... Línea 442...
375
 
442
                if ($currentCompany) {
376
                if ($currentCompany) {
443
                    $jobDescription->company_id = $currentCompany ? $currentCompany->id : null;
377
                    $jobDescription->company_id = $currentCompany ? $currentCompany->id : null;
444
                }
378
                }
445
                
Línea 379... Línea 446...
379
 
446
                $hydrator->hydrate($dataPost, $jobDescription);
380
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
447
                
381
                $result = $jobDescriptionMapper->insert($jobDescription);
-
 
382
 
-
 
383
                if ($result) {
-
 
384
                    $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
-
 
385
                    $competencyMapper = CompetencyMapper::getInstance($this->adapter);
-
 
Línea 386... Línea 448...
386
                    $competencyBehaviorMapper = CompetencyBehaviorMapper::getInstance($this->adapter);
448
                $result = $jobDescriptionMapper->insert($jobDescription);
387
                    
449
 
388
                    
450
                if ($result) {
389
                    $jobDescriptionCompetencyBehaviorMapper = JobDescriptionCompetencyBehaviorMapper::getInstance($this->adapter);
-
 
390
                    $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
451
                    $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
391
                    $jobDescriptionSubordinateMapper = JobDescriptionSubordinateMapper::getInstance($this->adapter);
-
 
392
                    
452
                    $competencyMapper = CompetencyMapper::getInstance($this->adapter);
393
    
453
                    $competencyBehaviorMapper = CompetencyBehaviorMapper::getInstance($this->adapter);
Línea 394... Línea 454...
394
                    
454
                    
Línea 461... Línea 521...
461
                        $jobDescriptionCompetencyBehavior->job_description_id = $jobDescription->id;
521
                        $jobDescriptionCompetencyBehavior->job_description_id = $jobDescription->id;
462
                        $jobDescriptionCompetencyBehavior->competency_id = $competency->id;
522
                        $jobDescriptionCompetencyBehavior->competency_id = $competency->id;
463
                        $jobDescriptionCompetencyBehavior->behavior_id = $behavior->id;
523
                        $jobDescriptionCompetencyBehavior->behavior_id = $behavior->id;
464
                        $jobDescriptionCompetencyBehavior->level = $level;
524
                        $jobDescriptionCompetencyBehavior->level = $level;
465
                        $jobDescriptionCompetencyBehaviorMapper->insert($jobDescriptionCompetencyBehavior);
525
                        $jobDescriptionCompetencyBehaviorMapper->insert($jobDescriptionCompetencyBehavior);
466
   
-
 
467
                        
-
 
468
                        
-
 
469
                        
-
 
470
                    }
526
                    }
471
                 
-
 
472
                    $subordinates_selected = isset($dataPost['subordinates_selected']) ? $dataPost['subordinates_selected'] : [];
-
 
473
                    foreach($subordinates_selected  as $job_description_uuid) 
-
 
474
                    {
-
 
475
                        $jobDescriptionForSubordinate = $jobDescriptionMapper->fetchOneByUuid($job_description_uuid);
-
 
476
                        
-
 
477
                        
-
 
478
                        if($jobDescriptionForSubordinate) {
-
 
479
                            if($currentCompany) {
-
 
480
                                $ok = $jobDescriptionForSubordinate->company_id == $currentCompany->id;
-
 
481
                            } else {
-
 
482
                                $ok = empty($jobDescriptionForSubordinate->company_id);
-
 
483
                            }
-
 
484
                        } else {
-
 
485
                            $ok = false;
-
 
486
                        }
-
 
487
                        
-
 
488
                        if(!$ok) {
-
 
489
                            continue;
-
 
490
                        }
-
 
491
                        
-
 
492
 
-
 
493
                        $jobDescriptionSubordinate = new JobDescriptionSubordinate();
-
 
494
                        $jobDescriptionSubordinate->job_description_id_top_level = $jobDescription->id;
-
 
495
                        $jobDescriptionSubordinate->job_description_id_low_level = $jobDescriptionForSubordinate->id;
-
 
496
                        $jobDescriptionSubordinateMapper->insert($jobDescriptionSubordinate);
-
 
497
                        
-
 
498
                    }
-
 
499
                    
-
 
Línea 500... Línea 527...
500
 
527
 
Línea 501... Línea 528...
501
 
528
 
Línea 594... Línea 621...
594
                $hydrator = new ObjectPropertyHydrator();
621
                $hydrator = new ObjectPropertyHydrator();
595
                $hydrator->hydrate($dataPost, $jobDescription);
622
                $hydrator->hydrate($dataPost, $jobDescription);
Línea 596... Línea 623...
596
                
623
                
Línea 597... Línea -...
597
                $dataPost['status'] = $dataPost['status'] ? $dataPost['status'] : JobDescription::STATUS_INACTIVE;
-
 
598
                
624
                $dataPost['status'] = $dataPost['status'] ? $dataPost['status'] : JobDescription::STATUS_INACTIVE;
Línea 599... Línea -...
599
                
-
 
600
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
-
 
601
                
-
 
602
                if (!empty( $jobDescription->job_description_id_boss)) {
-
 
603
                    
-
 
604
                    $jobDescriptionBoss = $jobDescriptionMapper->fetchOneByUuid($jobDescription->job_description_id_boss);
-
 
605
                    if ($jobDescriptionBoss) {
-
 
606
                        
-
 
607
    
-
 
608
                        
-
 
609
                        if ($jobDescriptionBoss->company_id == ($currentCompany ? $currentCompany->id : 0)) {
-
 
610
                            $jobDescription->job_description_id_boss = $jobDescriptionBoss->id;
-
 
611
                        } else {
-
 
612
                            $jobDescription->job_description_id_boss= null;
-
 
613
                        }
-
 
614
                    } else {
-
 
615
                        $jobDescription->job_description_id_boss = null;
-
 
616
                    }
-
 
617
                }
-
 
618
                
-
 
619
                $subordinates_for_update = [];
-
 
620
                
-
 
621
                
-
 
622
                $subordinates_selected = isset($dataPost['subordinates_selected']) ? $dataPost['subordinates_selected'] : [];
-
 
623
                foreach($subordinates_selected  as $job_description_uuid)
-
 
624
                {
-
 
625
                    $jobDescriptionForSubordinate = $jobDescriptionMapper->fetchOneByUuid($job_description_uuid);
-
 
626
                    
-
 
627
                    
-
 
628
                    if($jobDescriptionForSubordinate) {
-
 
629
                        if($currentCompany) {
-
 
630
                            $ok = $jobDescriptionForSubordinate->company_id == $currentCompany->id;
-
 
631
                        } else {
-
 
632
                            $ok = empty($jobDescriptionForSubordinate->company_id);
-
 
633
                        }
-
 
634
                    } else {
-
 
635
                        $ok = false;
-
 
636
                    }
-
 
637
                    
-
 
638
                    if(!$ok) {
-
 
639
                        continue;
-
 
640
                    }
-
 
641
                    
-
 
642
                    array_push($subordinates_for_update, $jobDescriptionForSubordinate->id);
-
 
643
                    
-
 
644
                    
-
 
645
                    
-
 
646
                }
-
 
647
                
-
 
648
                $error_recursive_job_description = false;
-
 
649
                $jobDescriptionSubordinateMapper = JobDescriptionSubordinateMapper::getInstance($this->adapter);
-
 
650
 
-
 
651
                if($jobDescription->job_description_id_boss) {
-
 
652
                    $jobDescriptionSubordinate = $jobDescriptionSubordinateMapper->fetchOneByJobDescriptionIdTopAndLowLevel($jobDescription->id, $jobDescription->job_description_id_boss);
-
 
653
                    if($jobDescriptionSubordinate) {
-
 
654
                        $error_recursive_job_description = true;
-
 
655
                        
-
 
656
                        
-
 
657
                    }
-
 
658
                    
-
 
659
                    
-
 
660
                }
-
 
661
                
-
 
662
                if(!$error_recursive_job_description && $subordinates_for_update) {
-
 
663
                    foreach($subordinates_for_update as $subordinate_id)
-
 
664
                    {
-
 
665
                        if($jobDescription->job_description_id_boss) {
-
 
666
                            if($jobDescription->job_description_id_boss == $subordinate_id) {
-
 
667
                                $error_recursive_job_description = true;
-
 
668
                                break;
-
 
669
                            }
-
 
670
                        }
-
 
671
                        
-
 
672
                        
-
 
673
                        $jobDescriptionSubordinate = $jobDescriptionSubordinateMapper->fetchOneByJobDescriptionIdTopAndLowLevel($subordinate_id, $jobDescription->id);
-
 
674
                        if($jobDescriptionSubordinate) {
-
 
675
                            $error_recursive_job_description = true;
-
 
676
                            break;
-
 
677
                            
-
 
678
                        }
-
 
679
                        
-
 
680
                        
-
 
681
                    }
-
 
682
                }
-
 
683
                
-
 
684
                if($error_recursive_job_description) {
-
 
685
                    $data = [
-
 
686
                        'success' => false,
-
 
687
                        'data' =>  'ERROR_JOB_DESCRIPTIONS_RECURSIVE'
-
 
688
                    ];
-
 
689
                
-
 
690
                
-
 
691
                    return new JsonModel($data);
-
 
692
                }
-
 
Línea 693... Línea 625...
693
                
625
                
Línea 694... Línea 626...
694
                
626
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
695
                
627
                
Línea 706... Línea 638...
706
                    $jobDescriptionCompetencyBehaviorMapper->deleteAllBJobDescriptionId($jobDescription->id);
638
                    $jobDescriptionCompetencyBehaviorMapper->deleteAllBJobDescriptionId($jobDescription->id);
Línea 707... Línea 639...
707
                    
639
                    
708
                    $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
640
                    $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
Línea 709... Línea -...
709
                    $jobDescriptionCompetencyMapper->deleteAllBJobDescriptionId($jobDescription->id);
-
 
710
                    
-
 
711
                    
-
 
712
                 
-
 
713
                    $jobDescriptionSubordinateMapper->deleteAllByJobDescriptionIdTopLevel($jobDescription->id);
-
 
714
                    
641
                    $jobDescriptionCompetencyMapper->deleteAllBJobDescriptionId($jobDescription->id);
715
                    
642
                    
716
                    $competencies_selected = isset($dataPost['competencies_selected']) ? $dataPost['competencies_selected'] : [];
643
                    $competencies_selected = isset($dataPost['competencies_selected']) ? $dataPost['competencies_selected'] : [];
717
                    foreach($competencies_selected as $competency_selected)
-
 
718
                    {
-
 
719
                        
-
 
720
                        
644
                    foreach($competencies_selected as $competency_selected)
721
                        
645
                    {
Línea 722... Línea 646...
722
                        $competency_uuid = isset($competency_selected['competency_uuid']) ? $competency_selected['competency_uuid'] : '';
646
                        $competency_uuid = isset($competency_selected['competency_uuid']) ? $competency_selected['competency_uuid'] : '';
Línea 780... Línea 704...
780
                        $jobDescriptionCompetencyBehavior->job_description_id = $jobDescription->id;
704
                        $jobDescriptionCompetencyBehavior->job_description_id = $jobDescription->id;
781
                        $jobDescriptionCompetencyBehavior->competency_id = $competency->id;
705
                        $jobDescriptionCompetencyBehavior->competency_id = $competency->id;
782
                        $jobDescriptionCompetencyBehavior->behavior_id = $behavior->id;
706
                        $jobDescriptionCompetencyBehavior->behavior_id = $behavior->id;
783
                        $jobDescriptionCompetencyBehavior->level = $level;
707
                        $jobDescriptionCompetencyBehavior->level = $level;
784
                        $jobDescriptionCompetencyBehaviorMapper->insert($jobDescriptionCompetencyBehavior);
708
                        $jobDescriptionCompetencyBehaviorMapper->insert($jobDescriptionCompetencyBehavior);
785
                        
-
 
786
                        
-
 
787
                        foreach($subordinates_for_update as $subordinate_id)
-
 
788
                        {
-
 
789
                        
-
 
790
                            $jobDescriptionSubordinate = new JobDescriptionSubordinate();
-
 
791
                            $jobDescriptionSubordinate->job_description_id_top_level = $jobDescription->id;
-
 
792
                            $jobDescriptionSubordinate->job_description_id_low_level = $subordinate_id;
-
 
793
                            $jobDescriptionSubordinateMapper->insert($jobDescriptionSubordinate);
-
 
794
                        }
-
 
795
                        
-
 
796
                        
-
 
797
                    }
709
                    }
Línea 798... Línea 710...
798
                    
710
                    
Línea 823... Línea 735...
823
                    'success' => false,
735
                    'success' => false,
824
                    'data' => $messages
736
                    'data' => $messages
825
                ]);
737
                ]);
826
            }
738
            }
827
        } else if ($request->isGet()) {
739
        } else if ($request->isGet()) {
828
 
-
 
829
            if ($jobDescription->job_description_id_boss) {
-
 
830
                
-
 
831
                $jobDescriptionBoss = $jobDescriptionMapper->fetchOne($jobDescription->job_description_id_boss);
-
 
832
                if ($jobDescriptionBoss) {
-
 
833
                    $job_description_uuid_boss = $jobDescriptionBoss->uuid;
-
 
834
                } else {
-
 
835
                    $job_description_uuid_boss = '';
-
 
836
                }
-
 
837
            } else {
-
 
838
                $job_description_uuid_boss = '';
-
 
839
            }
-
 
840
            
-
 
841
            if($currentCompany) {
-
 
842
                $records = $jobDescriptionMapper->fetchAllActiveByCompanyId($currentCompany->id);
-
 
843
            } else {
-
 
844
                $jobDescriptionMapper->fetchAllActiveByDefault();
-
 
845
            }
-
 
846
            
-
 
847
            $jobsDescription = [];
-
 
848
            
-
 
849
            foreach ($records as $record)
-
 
850
            {
-
 
851
                
-
 
852
                if($jobDescription->id != $record->id) {
-
 
853
                
-
 
854
                    $jobsDescription[ $record->uuid ] = $record->name;
-
 
855
                }
-
 
856
            }
-
 
857
            
-
 
858
            $behaviors = [];
740
            $behaviors = [];
859
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
741
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
Línea 860... Línea 742...
860
            
742
            
Línea 943... Línea 825...
943
                    ]);
825
                    ]);
944
                }
826
                }
Línea 945... Línea 827...
945
                
827
                
946
                
-
 
947
            }
-
 
948
            
-
 
949
            
-
 
950
            
-
 
951
            
-
 
952
            
-
 
953
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
-
 
954
            if($currentCompany) {
-
 
955
                $records = $jobDescriptionMapper->fetchAllActiveByCompanyId($currentCompany->id);
-
 
956
            } else {
-
 
957
                $jobDescriptionMapper->fetchAllActiveByDefault();
-
 
958
            }
-
 
959
            
-
 
960
            $jobsDescription = [];
-
 
961
            
-
 
962
            foreach ($records as $record)
-
 
963
            {
-
 
964
                $jobsDescription[ $record->uuid ] = $record->name;
-
 
Línea 965... Línea 828...
965
            }
828
                
966
            
829
            }
967
 
830
 
968
            $data = [
831
            $data = [
969
                'name' => $jobDescription->name, 
832
                'name' => $jobDescription->name, 
970
                'functions' => $jobDescription->functions,
-
 
971
                'objectives' => $jobDescription->objectives,
-
 
972
                'status' => $jobDescription->status,
-
 
973
                'job_description_id_boss' => $job_description_uuid_boss,
833
                'functions' => $jobDescription->functions,
974
                'jobs_description' => $jobsDescription,
834
                'objectives' => $jobDescription->objectives,
975
                'subordinates_selected' => [],
835
                'status' => $jobDescription->status,
976
                'competencies_selected' => [],
836
                'competencies_selected' => [],
977
                'behaviors' => $behaviors,
837
                'behaviors' => $behaviors,
Línea 989... Línea 849...
989
            $jobDescriptionCompetencyBehaviorMapper = JobDescriptionCompetencyBehaviorMapper::getInstance($this->adapter);
849
            $jobDescriptionCompetencyBehaviorMapper = JobDescriptionCompetencyBehaviorMapper::getInstance($this->adapter);
Línea 990... Línea 850...
990
            
850
            
991
            $jobDescriptionCompetencies = $jobDescriptionCompetencyMapper->fetchAllByJobDescriptionId($jobDescription->id);
851
            $jobDescriptionCompetencies = $jobDescriptionCompetencyMapper->fetchAllByJobDescriptionId($jobDescription->id);
992
            foreach($jobDescriptionCompetencies as $jobDescriptionCompetency)
852
            foreach($jobDescriptionCompetencies as $jobDescriptionCompetency)
993
            {
-
 
994
                
-
 
995
                
-
 
996
                
853
            {
997
                $competency = $competencyMapper->fetchOne($jobDescriptionCompetency->competency_id);
854
                $competency = $competencyMapper->fetchOne($jobDescriptionCompetency->competency_id);
998
                if(!$competency) {
855
                if(!$competency) {
999
                    continue;
856
                    continue;
Línea 1051... Línea 908...
1051
                array_push($data['competencies_selected'], $competency_selected);
908
                array_push($data['competencies_selected'], $competency_selected);
Línea 1052... Línea 909...
1052
                
909
                
1053
                
-
 
1054
                
-
 
1055
            }
-
 
1056
            
-
 
1057
            $jobDescriptionSubordinateMapper = JobDescriptionSubordinateMapper::getInstance($this->adapter);
-
 
1058
            $jobDescriptionSubordinates = $jobDescriptionSubordinateMapper->fetchAllByJobDescriptionIdTopLevel($jobDescription->id);
-
 
1059
            
-
 
1060
            foreach($jobDescriptionSubordinates as $jobDescriptionSubordinate)
-
 
1061
            {
-
 
1062
                $jobDescriptionForSubordinate = $jobDescriptionMapper->fetchOne($jobDescriptionSubordinate->job_description_id_low_level);
-
 
1063
                if($jobDescriptionForSubordinate) {
-
 
1064
                    array_push($data['subordinates_selected'], ['uuid' => $jobDescriptionForSubordinate->uuid ]);
-
 
1065
                }
-
 
1066
                
-
 
1067
                
-
 
1068
                
-
 
Línea 1069... Línea 910...
1069
            }
910
                
1070
            
911
                
1071
                    
912
            }
1072
 
913
 
Línea 1127... Línea 968...
1127
            return new JsonModel($data);
968
            return new JsonModel($data);
1128
        }
969
        }
Línea 1129... Línea 970...
1129
 
970
 
-
 
971
 
-
 
972
        if ($request->isPost()) {
-
 
973
            $jobDescriptionMapper->removeAllJobDescriptionIdBossByJobDescripcionId($jobDescription->id);
1130
 
974
            
1131
        if ($request->isPost()) {
975
            
1132
            $result = $jobDescriptionMapper->delete($jobDescription);
976
            $result = $jobDescriptionMapper->delete($jobDescription);
Línea 1133... Línea 977...
1133
            if ($result) {
977
            if ($result) {
Línea 1311... Línea 1155...
1311
 
1155
 
Línea 1312... Línea 1156...
1312
 
1156
 
1313
        if ($request->isGet()) {
1157
        if ($request->isGet()) {
Línea 1326... Línea 1170...
1326
                    'basename' => $filename,
1170
                    'basename' => $filename,
1327
                    'content' => $content
1171
                    'content' => $content
1328
                ]
1172
                ]
1329
            ];
1173
            ];
Línea 1330... Línea 1174...
1330
            
1174
            
Línea 1331... Línea 1175...
1331
            return new JsonModel($data);
1175
            return new JsonModel($data);*/
Línea 1332... Línea 1176...
1332
       
1176
       
1333
            /*
1177
 
1334
  
1178
  
1335
            $content = $this->renderPdf($currentCompany, $jobDescription);
1179
            $content = $this->renderPdf($currentCompany, $jobDescription);
1336
            $response = new Response();
-
 
1337
            $response->setStatusCode(200);
1180
            $response = new Response();
1338
            $response->setContent($content);
-
 
1339
            
1181
            $response->setStatusCode(200);
1340
            
1182
            $response->setContent($content);
Línea 1341... Línea 1183...
1341
            
1183
 
1342
            $headers = $response->getHeaders();
1184
            $headers = $response->getHeaders();
Línea 1348... Línea 1190...
1348
            $headers->addHeaderLine('Content-Transfer-Encoding: binary');
1190
            $headers->addHeaderLine('Content-Transfer-Encoding: binary');
1349
            $headers->addHeaderLine('Expires: 0');
1191
            $headers->addHeaderLine('Expires: 0');
1350
            $headers->addHeaderLine('Cache-Control: must-revalidate');
1192
            $headers->addHeaderLine('Cache-Control: must-revalidate');
1351
            $headers->addHeaderLine('Pragma: public');
1193
            $headers->addHeaderLine('Pragma: public');
1352
            return $response;
1194
            return $response;
1353
*/
1195
 
Línea 1354... Línea 1196...
1354
            
1196
            
Línea 1422... Línea 1264...
1422
 
1264
 
Línea 1423... Línea 1265...
1423
 
1265
 
1424
        //Hierarchical Relationship
1266
        //Hierarchical Relationship
1425
 
-
 
1426
        $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
-
 
1427
 
-
 
1428
        $jobDescriptionSubordinateMapper = JobDescriptionSubordinateMapper::getInstance($this->adapter);
1267
 
1429
        $jobDescriptionSubordinate = $jobDescriptionSubordinateMapper->fetchAllByJobDescriptionIdTopLevel($jobDescription->id);
1268
        $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
1430
 
1269
        
-
 
1270
        $subordinate = '';
-
 
1271
        
-
 
1272
        if($jobDescription->company_id) {
-
 
1273
            $jobDescriptionSubordinates = $jobDescriptionMapper->fetchAllByCompanyIdAndJobDescriptionIdBoss($jobDescription->company_id,$jobDescription->id);
1431
        $subordinate = '';
1274
        } else {
1432
 
1275
            $jobDescriptionSubordinates = $jobDescriptionMapper->fetchAllDefaultAndJobDescriptionIdBoss($jobDescription->id);
1433
        if ($jobDescriptionSubordinate) {
1276
        }
1434
 
-
 
1435
            foreach ($jobDescriptionSubordinate as $rs) {
1277
        
1436
                $jobSubordinate = $jobDescriptionMapper->fetchOne($rs->job_description_id_low_level);
-
 
1437
                if ($jobSubordinate) {
1278
        if ($jobDescriptionSubordinates) {
1438
                    $subordinate .= $jobSubordinate->name . ' ';
1279
            foreach ($jobDescriptionSubordinates as $jobDescriptionSubordinate) {
Línea 1439... Línea 1280...
1439
                }
1280
                $subordinate .= $jobDescriptionSubordinate->name . ' ';