Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16790 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 16790 Rev 16791
Línea 6... Línea 6...
6
 
6
 
7
 
7
 
8
use Laminas\Mvc\Controller\AbstractActionController;
8
use Laminas\Mvc\Controller\AbstractActionController;
9
use Laminas\View\Model\ViewModel;
-
 
10
use Laminas\View\Model\JsonModel;
9
use Laminas\View\Model\ViewModel;
11
use LeadersLinked\Form\OrganizationPosition\OrganizationPositionForm;
-
 
12
use LeadersLinked\Model\Company;
-
 
13
use LeadersLinked\Model\OrganizationPosition;
-
 
14
use LeadersLinked\Model\OrganizationPositionCompetency;
-
 
15
use LeadersLinked\Model\OrganizationPositionCompetencyBehavior;
-
 
16
use LeadersLinked\Mapper\BehaviorMapper;
-
 
17
use LeadersLinked\Mapper\CompetencyMapper;
-
 
18
use LeadersLinked\Mapper\CompetencyBehaviorMapper;
10
use Laminas\View\Model\JsonModel;
19
use LeadersLinked\Mapper\CompetencyTypeMapper;
-
 
20
use LeadersLinked\Mapper\OrganizationPositionMapper;
-
 
21
use LeadersLinked\Mapper\OrganizationPositionCompetencyBehaviorMapper;
11
use LeadersLinked\Model\Company;
22
use LeadersLinked\Mapper\OrganizationPositionCompetencyMapper;
-
 
23
use LeadersLinked\Library\Functions;
12
use LeadersLinked\Mapper\OrganizationPositionMapper;
24
use LeadersLinked\Library\OrganizationPositionPdf;
13
use LeadersLinked\Library\Functions;
25
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
14
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
-
 
15
use LeadersLinked\Model\User;
-
 
16
use Laminas\Http\Response;
26
use LeadersLinked\Model\User;
17
use LeadersLinked\Form\Organization\PositionForm;
-
 
18
use LeadersLinked\Model\OrganizationPosition;
Línea 27... Línea 19...
27
use Laminas\Http\Response;
19
use LeadersLinked\Mapper\JobDescriptionMapper;
28
use LeadersLinked\Mapper\JobDescriptionMapper;
20
use LeadersLinked\Mapper\UserMapper;
29
 
21
 
Línea 89... Línea 81...
89
        
81
        
90
        $request = $this->getRequest();
82
        $request = $this->getRequest();
Línea 91... Línea 83...
91
        $headers = $request->getHeaders();
83
        $headers = $request->getHeaders();
92
 
-
 
93
        
-
 
94
        if ($request->isPost()) {
-
 
95
            
-
 
96
            $data = $this->params()->fromPost('data');
-
 
97
         
-
 
98
            if(!empty($data)) {
-
 
99
                
-
 
100
                $json = json_decode($data, true);
-
 
101
                if(is_array($json)) {
-
 
102
                    
-
 
103
                    $jobDescriptionIdBoss = 0;
-
 
104
                    $jobDescriptionMapper = OrganizationPositionMapper::getInstance($this->adapter);
-
 
105
                    
-
 
106
                    
-
 
107
                    
-
 
108
                    $position = 0;
-
 
109
                    foreach($json as $item)
-
 
110
                    {
-
 
111
 
-
 
112
                        $this->recursiveSave($currentCompany, $jobDescriptionMapper, $jobDescriptionIdBoss, $item, $position);
-
 
113
                        $position++;
-
 
114
                    }
-
 
115
 
-
 
116
                }
-
 
117
            }
-
 
118
            return new JsonModel([
-
 
119
                'success' => true,
-
 
120
            ]);
-
 
Línea 121... Línea 84...
121
            
84
 
Línea 122... Línea 85...
122
            
85
        
Línea 144... Línea 107...
144
                
107
                
Línea 145... Línea 108...
145
                
108
                
146
                
109
                
147
                $items = [];
-
 
-
 
110
                $items = [];
-
 
111
                
Línea 148... Línea 112...
148
                
112
                $bossId = 0;
Línea 149... Línea 113...
149
                $jobDescriptionIdBoss = 0;
113
                $organizationPositionMapper = OrganizationPositionMapper::getInstance($this->adapter);
Línea 164... Línea 128...
164
                    ]
128
                    ]
165
                ]);
129
                ]);
Línea 166... Línea 130...
166
 
130
 
Línea 167... Línea -...
167
            } else {
-
 
168
                
-
 
Línea 169... Línea 131...
169
                
131
            } else {
Línea 170... Línea 132...
170
                
132
                
171
 
133
 
172
                $form = new OrganizationPositionForm($this->adapter, $currentCompany ? $currentCompany->id : null);
134
                $form = new PositionForm($this->adapter, $currentCompany->id);
173
 
135
 
174
                $this->layout()->setTemplate('layout/layout-backend');
136
                $this->layout()->setTemplate('layout/layout-backend');
175
                $viewModel = new ViewModel();
137
                $viewModel = new ViewModel();
Línea 189... Línea 151...
189
            ]);
151
            ]);
190
        }
152
        }
191
    }
153
    }
Línea 192... Línea -...
192
    
-
 
193
    
-
 
194
    /**
-
 
195
     * 
-
 
196
     * @param Company $currentCompany
-
 
197
     * @param OrganizationPositionMapper $jobDescriptionMapper
-
 
198
     * @param int $jobDescriptionIdBoss
-
 
199
     * @param int $position
-
 
200
     * @param array $item
-
 
201
     */
-
 
202
    private function recursiveSave($currentCompany, $jobDescriptionMapper, $jobDescriptionIdBoss, $item, $position)
-
 
203
    {
-
 
204
        
-
 
205
 
-
 
206
        if(!empty($item) && is_array($item)) {
-
 
207
            foreach($item as $subitem)
-
 
208
            {
-
 
209
                $jobDescription = $jobDescriptionMapper->fetchOneByUuid($subitem['id']);
-
 
210
                if($jobDescriptionMapper) {
-
 
211
                    if($jobDescriptionIdBoss) {
-
 
212
 
-
 
213
            
-
 
214
                        $jobDescriptionMapper->setOrganizationPositionIdBossByJobDescripcionId($jobDescription->id,  $jobDescriptionIdBoss, $position);
-
 
215
                    } else {
-
 
216
                        $jobDescriptionMapper->removeOrganizationPositionIdBossByOrganizationPositionId($jobDescription->id, $position);
-
 
217
                    }
-
 
218
                    
-
 
219
                    $position++;
-
 
220
                    
-
 
221
                    if(!empty($subitem['children']) && is_array($subitem['children'])) {
-
 
222
                        
-
 
223
                        $position2 = 0;
-
 
224
                        foreach($subitem['children'] as $subitem2)
-
 
225
                        {
-
 
226
                            $this->recursiveSave($currentCompany, $jobDescriptionMapper, $jobDescription->id,  $subitem2, $position2);
-
 
227
                            $position2++;
-
 
228
                        }
-
 
229
                        
-
 
230
                    }
-
 
231
    
-
 
232
                    
-
 
233
                }
-
 
234
            }
-
 
235
        }
-
 
Línea 236... Línea 154...
236
    }
154
    
237
    
155
    
238
    
156
    
239
    /**
157
    /**
240
     * 
158
     * 
-
 
159
     * @param User $currentUser
-
 
160
     * @param Company $currentCompany
241
     * @param User $currentUser
161
     * @param OrganizationPositionMapper $organizationPositionMapper
242
     * @param Company $currentCompany
162
     * @param UserMapper $userMapper
243
     * @param OrganizationPositionMapper $jobDescriptionMapper
163
     * @param JobDescriptionMapper $jobDescriptionMapper
244
     * @param int $jobDescriptionIdBoss
164
     * @param int $bossId
245
     * @return array
165
     * @return array
246
     */
166
     */
247
    private function recursiveLoad($currentUser, $currentCompany, $jobDescriptionMapper, $jobDescriptionIdBoss)
-
 
248
    {
167
    private function recursiveLoad($currentUser, $currentCompany, $organizationPositionMapper, $userMapper, $jobDescriptionMapper, $bossId)
249
        $acl            = $this->getEvent()->getViewModel()->getVariable('acl');
168
    {
250
        $allowAdd       = $acl->isAllowed($currentUser->usertype_id, 'jobs-description/add') ? 1 : 0;
-
 
251
        $allowEdit      = $acl->isAllowed($currentUser->usertype_id, 'jobs-description/edit') ? 1 : 0;
-
 
252
        $allowDelete    = $acl->isAllowed($currentUser->usertype_id, 'jobs-description/delete') ? 1 : 0;
169
        $acl            = $this->getEvent()->getViewModel()->getVariable('acl');
253
        $allowReport    = $acl->isAllowed($currentUser->usertype_id, 'jobs-description/report') ? 1 : 0;
170
        $allowEdit      = $acl->isAllowed($currentUser->usertype_id, 'organization/positions/edit') ? 1 : 0;
Línea 254... Línea -...
254
        
-
 
255
        
171
        $allowDelete    = $acl->isAllowed($currentUser->usertype_id, 'organization/positions/delete') ? 1 : 0;
256
        $items = [];
-
 
257
 
-
 
258
        
-
 
Línea 259... Línea 172...
259
        if ($currentCompany) {
172
 
260
            $records = $jobDescriptionMapper->fetchAllByCompanyIdAndOrganizationPositionIdBoss($currentCompany->id, $jobDescriptionIdBoss);
173
        $items = [];
Línea -... Línea 174...
-
 
174
 
-
 
175
        
Línea 261... Línea 176...
261
        } else {
176
        $records = $organizationPositionMapper->fetchAllByCompanyIdAndBossId($currentCompany->id, $bossId);
262
            $records = $jobDescriptionMapper->fetchAllDefaultAndOrganizationPositionIdBoss($jobDescriptionIdBoss);
177
 
-
 
178
        
263
        }
179
        foreach($records as $record)
264
 
180
        {
265
        
181
            
266
        foreach($records as $record)
-
 
267
        {
182
            $user = $userMapper->fetchOne($record->employee_id);
268
            
183
            $jobDescription = $jobDescriptionMapper->fetchOne($record->job_description_id);
269
            
-
 
270
            
184
            
271
            array_push($items, [
185
            
Línea 272... Línea 186...
272
                'uuid' => $record->uuid,
186
            array_push($items, [
273
                'name' => $record->name,
187
                'uuid' => $record->uuid,
Línea -... Línea 188...
-
 
188
                'name' => trim($user->first_name . ' ' . $user->last_name),
274
                'children' => $this->recursiveLoad($currentUser, $currentCompany, $jobDescriptionMapper, $record->id),
189
                'title' => $jobDescription->name,
275
                'status' => $record->status,
190
                'children' => $this->recursiveLoad($currentUser, $currentCompany, $organizationPositionMapper, $userMapper, $jobDescriptionMapper, $record->employee_id),
276
                'link_report' => $allowReport ? $this->url()->fromRoute('jobs-description/report', ['id' => $record->uuid]) : '',
-
 
277
                'link_edit' => $allowEdit ? $this->url()->fromRoute('jobs-description/edit', ['id' => $record->uuid]) : '',
-
 
278
                'link_delete' => $allowDelete ? $this->url()->fromRoute('jobs-description/delete', ['id' => $record->uuid]) : '',
191
                'status' => $record->status,
279
                'link_add' => $allowAdd ? $this->url()->fromRoute('jobs-description/add', ['id' => $record->uuid]) : '',
192
                'link_edit' => $allowEdit ? $this->url()->fromRoute('organization/positions/edit', ['id' => $record->uuid]) : '',
280
            ]);
193
                'link_delete' => $allowDelete ? $this->url()->fromRoute('organization/positions/delete', ['id' => $record->uuid]) : '',
Línea 281... Línea 194...
281
        }
194
            ]);
Línea 282... Línea 195...
282
        
195
        }
283
        return $items;
-
 
284
    }
-
 
285
 
-
 
286
    public function addAction()
-
 
287
    {
-
 
288
 
-
 
289
        
-
 
290
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
291
        $currentUser = $currentUserPlugin->getUser();
-
 
292
        $currentCompany = $currentUserPlugin->getCompany();
-
 
293
 
-
 
294
        $request = $this->getRequest();
-
 
295
 
-
 
296
 
-
 
297
        if ($request->isGet()) {
-
 
298
            $behaviors = [];
-
 
299
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
-
 
300
            
-
 
301
            
-
 
302
            if($currentCompany) {
-
 
303
                $records = $behaviorMapper->fetchAllActiveByCompanyId($currentCompany->id);
-
 
304
            } else {
-
 
305
                $records = $behaviorMapper->fetchAllActiveByDefault();
-
 
306
            }
-
 
307
            
-
 
308
            $behaviorIds = [];
-
 
309
            foreach($records as $record)
-
 
310
            {
-
 
311
                
-
 
312
                $behaviorIds[ $record->id ] = $record->uuid;
-
 
313
                
-
 
314
                array_push($behaviors, [
-
 
315
                    'uuid' => $record->uuid,
-
 
316
                    'description' => $record->description
-
 
317
                ]);
-
 
318
            }
-
 
319
            
-
 
320
            
-
 
321
            $competencyTypes = [];
-
 
322
            
-
 
323
            
-
 
324
            $competencyTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
-
 
325
            
-
 
326
            if($currentCompany) {
-
 
327
                $records = $competencyTypeMapper->fetchAllActiveByCompanyId($currentCompany->id);
-
 
328
            } else {
-
 
329
                $records = $competencyTypeMapper->fetchAllActiveByDefault();
-
 
330
            }
-
 
331
            
-
 
332
            
-
 
333
            $competencyTypeIds = [];
-
 
334
            foreach($records as $record)
-
 
335
            {
-
 
336
                $competencyTypeIds[ $record->id ] =  $record->uuid;
-
 
337
                
-
 
338
                
-
 
339
                array_push($competencyTypes, [
-
 
340
                    'uuid' => $record->uuid,
-
 
341
                    'name' => $record->name,
-
 
342
                ]);
-
 
343
            }
-
 
344
            
-
 
345
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
-
 
346
            if($currentCompany) {
-
 
347
                $records = $competencyMapper->fetchAllActiveByCompanyId($currentCompany->id);
-
 
348
            } else {
-
 
349
                $records = $competencyMapper->fetchAllActiveByDefault();
-
 
350
            }
-
 
351
            
-
 
352
            $competencyBehaviorMapper = CompetencyBehaviorMapper::getInstance($this->adapter);
-
 
353
            
-
 
354
            
-
 
355
            
-
 
356
            $competencies = [];
-
 
357
            
-
 
358
            foreach($records as $record)
-
 
359
            {
-
 
360
                if(!isset($competencyTypeIds[ $record->competency_type_id ])) {
-
 
361
                    continue;
-
 
362
                }
-
 
363
                
-
 
364
                $behaviors_by_competency = [];
-
 
365
                
-
 
366
                $competencyBehaviors = $competencyBehaviorMapper->fetchAllByCompetencyId($record->id);
-
 
367
                foreach($competencyBehaviors as $competencyBehavior)
-
 
368
                {
-
 
369
                    if(!isset($behaviorIds[ $competencyBehavior->behavior_id ])) {
-
 
370
                        continue;
-
 
371
                    }
-
 
372
                    
-
 
373
                    array_push($behaviors_by_competency, $behaviorIds[ $competencyBehavior->behavior_id ]);
-
 
374
                }
-
 
375
                
-
 
376
                
-
 
377
                if($behaviors_by_competency) {
-
 
378
                    array_push($competencies, [
-
 
379
                        'competency_type_uuid' => $competencyTypeIds[ $record->competency_type_id ],
-
 
380
                        'uuid' => $record->uuid,
-
 
381
                        'name' => $record->name,
-
 
382
                        'behaviors' => $behaviors_by_competency,
196
        
383
                    ]);
-
 
384
                }
-
 
385
                
-
 
386
                
-
 
387
            }
-
 
388
            
-
 
389
            
-
 
390
            
-
 
391
            $jobDescriptionMapper = OrganizationPositionMapper::getInstance($this->adapter);
-
 
392
            $records = $jobDescriptionMapper->fetchAllByCompanyId($currentCompany->id);
-
 
393
            
-
 
394
            $jobsDescription = [];
-
 
395
            
-
 
396
            foreach ($records as $record) 
-
 
397
            {   
-
 
398
                $jobsDescription[ $record->uuid ] = $record->name;
-
 
399
            }
-
 
400
 
197
        return $items;
401
 
198
    }
Línea 402... Línea 199...
402
            $data = [
199
 
Línea 403... Línea 200...
403
                'success' => true,
200
 
-
 
201
    public function addAction()
-
 
202
    {
404
                'data' => [
203
        $currentUserPlugin = $this->plugin('currentUserPlugin');
Línea 405... Línea 204...
405
                    'jobs_description' => $jobsDescription,
204
        $currentUser = $currentUserPlugin->getUser();
Línea 406... Línea -...
406
                    'behaviors' => $behaviors,
-
 
407
                    'competency_types' => $competencyTypes,
-
 
408
                    'competencies' => $competencies,
-
 
409
                ] 
-
 
410
            ];
-
 
411
 
205
        $currentCompany = $currentUserPlugin->getCompany();
412
 
206
 
413
            return new JsonModel($data);
207
        $request = $this->getRequest();
414
        } else if ($request->isPost()) {
-
 
415
            $form = new OrganizationPositionForm($this->adapter, $currentCompany ? $currentCompany->id : null);
-
 
416
            $dataPost = $request->getPost()->toArray();
208
 
Línea 417... Línea -...
417
 
-
 
418
 
209
 
Línea 419... Línea 210...
419
            $form->setData($dataPost);
210
       if ($request->isPost()) 
420
 
211
       {
421
            if ($form->isValid()) {
-
 
Línea -... Línea 212...
-
 
212
            $form = new PositionForm($this->adapter, $currentCompany->id);
-
 
213
            $dataPost = $request->getPost()->toArray();
-
 
214
 
-
 
215
 
-
 
216
            $form->setData($dataPost);
422
                $jobDescriptionMapper = OrganizationPositionMapper::getInstance($this->adapter);
217
 
423
                
218
            if ($form->isValid()) {
-
 
219
                $userMapper = UserMapper::getInstance($this->adapter);
-
 
220
                
424
                $dataPost = (array) $form->getData();
221
                $organizationPositionMapper = OrganizationPositionMapper::getInstance($this->adapter);
Línea 425... Línea -...
425
 
-
 
426
                if(!empty($dataPost['job_description_id_boss'])) {
-
 
427
                    
222
                
428
                    $jobDescriptionBoos = $jobDescriptionMapper->fetchOneByUuid(Functions::sanitizeFilterString($dataPost['job_description_id_boss']));
-
 
429
                    if($jobDescriptionBoos && $jobDescriptionBoos->company_id == $currentCompany->id) {
223
                $dataPost = (array) $form->getData();
430
                        $dataPost['job_description_id_boss'] = $jobDescriptionBoos->id;
224
 
431
                    } else {
-
 
432
                        $dataPost['job_description_id_boss'] = 0;
-
 
433
                    }
-
 
434
                    
-
 
435
                    
-
 
436
                }
-
 
437
                
-
 
438
                
-
 
439
               
-
 
440
                $dataPost['status'] = empty($dataPost['status']) ? OrganizationPosition::STATUS_INACTIVE : $dataPost['status'];
-
 
441
                
-
 
442
                $hydrator = new ObjectPropertyHydrator();
-
 
443
                $jobDescription = new OrganizationPosition();
-
 
444
 
-
 
445
                
-
 
446
                if ($currentCompany) {
-
 
447
                    $jobDescription->company_id = $currentCompany ? $currentCompany->id : null;
-
 
448
                }
-
 
449
                
-
 
450
                $hydrator->hydrate($dataPost, $jobDescription);
-
 
451
                
-
 
452
                $result = $jobDescriptionMapper->insert($jobDescription);
-
 
453
 
-
 
454
                if ($result) {
-
 
455
                    $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
-
 
456
                    $competencyMapper = CompetencyMapper::getInstance($this->adapter);
-
 
457
                    $competencyBehaviorMapper = CompetencyBehaviorMapper::getInstance($this->adapter);
-
 
458
                    
-
 
459
                    
-
 
460
                    $jobDescriptionCompetencyBehaviorMapper = OrganizationPositionCompetencyBehaviorMapper::getInstance($this->adapter);
-
 
461
                    $jobDescriptionCompetencyMapper = OrganizationPositionCompetencyMapper::getInstance($this->adapter);
-
 
462
                    
-
 
463
                    $competencies_selected = isset($dataPost['competencies_selected']) ? $dataPost['competencies_selected'] : [];
-
 
464
                    foreach($competencies_selected as $competency_selected)
-
 
465
                    {
-
 
466
 
-
 
467
                        $competency_uuid = isset($competency_selected['competency_uuid']) ? $competency_selected['competency_uuid'] : '';
-
 
468
                        $competency = $competencyMapper->fetchOneByUuid($competency_uuid);
-
 
469
                        
-
 
470
                        
-
 
471
                        if($competency) {
-
 
472
                            if($currentCompany) {
-
 
473
                                $ok = $competency->company_id == $currentCompany->id;
-
 
474
                            } else {
-
 
475
                                $ok = empty($competency->company_id);
-
 
476
                            }
-
 
477
                        } else {
-
 
478
                            $ok = false;
-
 
479
                        }
-
 
480
                        
-
 
481
                        if(!$ok) {
-
 
482
                            continue;
-
 
483
                        }
-
 
484
                        
-
 
485
                        
-
 
486
                        $behavior_uuid = isset($competency_selected['behavior_uuid']) ? $competency_selected['behavior_uuid'] : '';
-
 
487
                        $behavior = $behaviorMapper->fetchOneByUuid($behavior_uuid);
-
 
488
                        if($behavior) {
-
 
489
                            if($currentCompany) {
-
 
490
                                $ok = $behavior->company_id == $currentCompany->id;
225
                $boss = null;
491
                            } else {
-
 
492
                                $ok = empty($behavior->company_id);
-
 
493
                            }
-
 
494
                            
-
 
495
                            
-
 
496
                        } else {
-
 
497
                            $ok = false;
-
 
498
                        }
-
 
499
                        
-
 
500
                        if($competency->company_id != $behavior->company_id) {
-
 
501
                            continue;
-
 
502
                        }
-
 
503
                        
-
 
504
                        $competencyBehavior = $competencyBehaviorMapper->fetchOneByBehaviorIdAndCompetencyId($behavior->id, $competency->id);
-
 
505
                        if(!$competencyBehavior) {
-
 
506
                            continue;
226
                if(!empty($dataPost['boss_id'])) {
Línea 507... Línea 227...
507
                        }
227
                    $boss = $userMapper->fetchOneByUuid( $dataPost['boss_id'] );
Línea 508... Línea 228...
508
                        
228
                }
509
                        $level = isset($competency_selected['level']) ? $competency_selected['level'] : 0;
229
                
510
                        $level = intval($level, 10);
230
                
511
                        
231
                $employee = $userMapper->fetchOneByUuid( $dataPost['employee_id'] );
512
                        
232
                
513
                        $jobDescriptionCompetency =  $jobDescriptionCompetencyMapper->fetchOneByOrganizationPositionIdAndCompetencyId($jobDescription->id, $competency->id);
233
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
514
                        if(!$jobDescriptionCompetency) {
234
                $jobDescription = $jobDescriptionMapper->fetchOneByUuid( $dataPost['job_description_id'] );
515
                            $jobDescriptionCompetency = new OrganizationPositionCompetency();
235
                
516
                            $jobDescriptionCompetency->competency_id = $competency->id;
236
                $organizationPosition = new OrganizationPosition();
517
                            $jobDescriptionCompetency->job_description_id = $jobDescription->id;
237
                $organizationPosition->company_id = $currentCompany->id;
Línea 518... Línea 238...
518
                            $jobDescriptionCompetencyMapper->insert($jobDescriptionCompetency);
238
                $organizationPosition->job_description_id = $jobDescription->id;
519
                            
239
                $organizationPosition->employee_id = $employee->id;
Línea 567... Línea 287...
567
        }
287
        }
Línea 568... Línea 288...
568
 
288
 
569
        return new JsonModel($data);
289
        return new JsonModel($data);
Línea -... Línea 290...
-
 
290
    }
570
    }
291
 
571
 
292
 
572
    public function editAction()
293
    public function editAction()
573
    {
294
    {
574
        $currentUserPlugin = $this->plugin('currentUserPlugin');
295
        $currentUserPlugin = $this->plugin('currentUserPlugin');
Línea 586... Línea 307...
586
            ];
307
            ];
Línea 587... Línea 308...
587
 
308
 
588
            return new JsonModel($data);
309
            return new JsonModel($data);
Línea 589... Línea 310...
589
        }
310
        }
590
 
311
 
591
        $jobDescriptionMapper = OrganizationPositionMapper::getInstance($this->adapter);
312
        $organizationPositionMapper = OrganizationPositionMapper::getInstance($this->adapter);
592
        $jobDescription = $jobDescriptionMapper->fetchOneByUuid($uuid);
313
        $organizationPosition = $organizationPositionMapper->fetchOneByUuid($uuid);
593
        if (!$jobDescription) {
314
        if (!$organizationPosition) {
594
            $data = [
315
            $data = [
595
                'success' => false,
316
                'success' => false,
Línea 596... Línea 317...
596
                'data' => 'ERROR_RECORD_NOT_FOUND'
317
                'data' => 'ERROR_RECORD_NOT_FOUND'
597
            ];
318
            ];
Línea 598... Línea 319...
598
 
319
 
599
            return new JsonModel($data);
320
            return new JsonModel($data);
600
        }
321
        }
601
 
322
 
602
        if ($currentCompany && $jobDescription->company_id != $currentCompany->id) {
323
        if ($currentCompany && $organizationPosition->company_id != $currentCompany->id) {
Línea 603... Línea 324...
603
            $data = [
324
            $data = [
604
                'success' => false,
325
                'success' => false,
Línea 605... Línea 326...
605
                'data' => 'ERROR_UNAUTHORIZED'
326
                'data' => 'ERROR_UNAUTHORIZED'
606
            ];
327
            ];
607
 
328
 
Línea 608... Línea 329...
608
            return new JsonModel($data);
329
            return new JsonModel($data);
Línea 609... Línea 330...
609
        }
330
        }
610
 
331
 
611
 
-
 
612
        if ($request->isPost()) {
-
 
613
            $form = new OrganizationPositionForm($this->adapter, $currentCompany ? $currentCompany->id : null, $jobDescription->id);
-
 
614
            $dataPost = $request->getPost()->toArray();
-
 
615
 
-
 
616
            $form->setData($dataPost);
332
 
617
 
333
        if ($request->isPost()) {
618
            if ($form->isValid()) {
334
            $form = new PositionForm($this->adapter, $currentCompany->id);
619
                $dataPost = (array) $form->getData();
335
            $dataPost = $request->getPost()->toArray();
620
                if(!empty($dataPost['job_description_id_boss'])) {
-
 
621
                    
-
 
622
                    $jobDescriptionBoos = $jobDescriptionMapper->fetchOneByUuid(Functions::sanitizeFilterString($dataPost['job_description_id_boss']));
-
 
Línea 623... Línea 336...
623
                    if($jobDescriptionBoos && $jobDescriptionBoos->company_id == $currentCompany->id) {
336
 
Línea 624... Línea 337...
624
                        $dataPost['job_description_id_boss'] = $jobDescriptionBoos->id;
337
            $form->setData($dataPost);
-
 
338
 
-
 
339
            if ($form->isValid()) {
-
 
340
                $userMapper = UserMapper::getInstance($this->adapter);
-
 
341
                $boss = null;
-
 
342
                if(!empty($dataPost['boss_id'])) {
-
 
343
                    $boss = $userMapper->fetchOneByUuid( $dataPost['boss_id'] );
-
 
344
                }
-
 
345
                
-
 
346
                $employee = $userMapper->fetchOneByUuid( $dataPost['employee_id'] );
-
 
347
                
-
 
348
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
-
 
349
                $jobDescription = $jobDescriptionMapper->fetchOneByUuid( $dataPost['job_description_id'] );
Línea 625... Línea 350...
625
                    } else {
350
                
Línea 626... Línea 351...
626
                        $dataPost['job_description_id_boss'] = 0;
351
                $organizationPosition->job_description_id = $jobDescription->id;
627
                    }
352
                $organizationPosition->employee_id = $employee->id;
628
                }
-
 
629
 
-
 
630
                $hydrator = new ObjectPropertyHydrator();
-
 
631
                $hydrator->hydrate($dataPost, $jobDescription);
-
 
632
                
-
 
633
                $dataPost['status'] = $dataPost['status'] ? $dataPost['status'] : OrganizationPosition::STATUS_INACTIVE;
353
                $organizationPosition->boss_id = $boss ? $boss->id : null;
Línea 634... Línea -...
634
                
-
 
635
                $jobDescriptionMapper = OrganizationPositionMapper::getInstance($this->adapter);
-
 
636
                
-
 
637
                
-
 
638
                $result = $jobDescriptionMapper->update($jobDescription);
-
 
639
 
-
 
640
                if ($result) {
-
 
641
                    $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
-
 
642
                    $competencyMapper = CompetencyMapper::getInstance($this->adapter);
-
 
643
                    $competencyBehaviorMapper = CompetencyBehaviorMapper::getInstance($this->adapter);
-
 
644
                    
-
 
645
                    
-
 
646
                    $jobDescriptionCompetencyBehaviorMapper = OrganizationPositionCompetencyBehaviorMapper::getInstance($this->adapter);
-
 
647
                    $jobDescriptionCompetencyBehaviorMapper->deleteAllBOrganizationPositionId($jobDescription->id);
-
 
648
                    
-
 
649
                    $jobDescriptionCompetencyMapper = OrganizationPositionCompetencyMapper::getInstance($this->adapter);
-
 
650
                    $jobDescriptionCompetencyMapper->deleteAllBOrganizationPositionId($jobDescription->id);
-
 
651
                    
-
 
652
                    $competencies_selected = isset($dataPost['competencies_selected']) ? $dataPost['competencies_selected'] : [];
-
 
653
                    foreach($competencies_selected as $competency_selected)
-
 
654
                    {
-
 
655
                        $competency_uuid = isset($competency_selected['competency_uuid']) ? $competency_selected['competency_uuid'] : '';
-
 
656
                        $competency = $competencyMapper->fetchOneByUuid($competency_uuid);
-
 
657
                        
-
 
658
                        
-
 
659
                        if($competency) {
-
 
660
                            if($currentCompany) {
-
 
661
                                $ok = $competency->company_id == $currentCompany->id;
-
 
662
                            } else {
-
 
663
                                $ok = empty($competency->company_id);
-
 
664
                            }
-
 
665
                        } else {
-
 
666
                            $ok = false;
-
 
667
                        }
-
 
668
                        
-
 
669
                        if(!$ok) {
-
 
670
                            continue;
-
 
671
                        }
-
 
672
                        
-
 
673
                        
-
 
674
                        $behavior_uuid = isset($competency_selected['behavior_uuid']) ? $competency_selected['behavior_uuid'] : '';
-
 
675
                        $behavior = $behaviorMapper->fetchOneByUuid($behavior_uuid);
-
 
676
                        if($behavior) {
-
 
677
                            if($currentCompany) {
-
 
678
                                $ok = $behavior->company_id == $currentCompany->id;
-
 
679
                            } else {
-
 
680
                                $ok = empty($behavior->company_id);
-
 
681
                            }
-
 
682
                            
-
 
683
                            
-
 
684
                        } else {
-
 
685
                            $ok = false;
-
 
686
                        }
-
 
687
                        
-
 
688
                        if($competency->company_id != $behavior->company_id) {
-
 
689
                            continue;
-
 
690
                        }
-
 
691
                        
-
 
692
                        $competencyBehavior = $competencyBehaviorMapper->fetchOneByBehaviorIdAndCompetencyId($behavior->id, $competency->id);
-
 
693
                        if(!$competencyBehavior) {
-
 
694
                            continue;
-
 
695
                        }
-
 
696
                        
-
 
697
                        $level = isset($competency_selected['level']) ? $competency_selected['level'] : 0;
-
 
698
                        $level = intval($level, 10);
-
 
699
                        
-
 
700
                        
-
 
701
                        $jobDescriptionCompetency =  $jobDescriptionCompetencyMapper->fetchOneByOrganizationPositionIdAndCompetencyId($jobDescription->id, $competency->id);
-
 
702
                        if(!$jobDescriptionCompetency) {
-
 
703
                            $jobDescriptionCompetency = new OrganizationPositionCompetency();
-
 
Línea 704... Línea -...
704
                            $jobDescriptionCompetency->competency_id = $competency->id;
-
 
705
                            $jobDescriptionCompetency->job_description_id = $jobDescription->id;
-
 
706
                            $jobDescriptionCompetencyMapper->insert($jobDescriptionCompetency);
354
                
Línea 707... Línea 355...
707
                            
355
                
708
                        }
356
                if(empty($dataPost['status'])) {
709
                        
357
                    $organizationPosition->status = OrganizationPosition::STATUS_INACTIVE;
710
                        
358
                } else {
711
                        
359
                    $organizationPosition->status = $dataPost['status'] == OrganizationPosition::STATUS_ACTIVE ? OrganizationPosition::STATUS_ACTIVE : OrganizationPosition::STATUS_INACTIVE;
712
                        $jobDescriptionCompetencyBehavior = new OrganizationPositionCompetencyBehavior();
360
                }
713
                        $jobDescriptionCompetencyBehavior->job_description_id = $jobDescription->id;
361
                
714
                        $jobDescriptionCompetencyBehavior->competency_id = $competency->id;
362
                
715
                        $jobDescriptionCompetencyBehavior->behavior_id = $behavior->id;
363
                $result = $organizationPositionMapper->update($organizationPosition);
716
                        $jobDescriptionCompetencyBehavior->level = $level;
364
 
Línea 717... Línea 365...
717
                        $jobDescriptionCompetencyBehaviorMapper->insert($jobDescriptionCompetencyBehavior);
365
                if ($result) {
718
                    }
366
                    $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
Línea 744... Línea 392...
744
                    'success' => false,
392
                    'success' => false,
745
                    'data' => $messages
393
                    'data' => $messages
746
                ]);
394
                ]);
747
            }
395
            }
748
        } else if ($request->isGet()) {
396
        } else if ($request->isGet()) {
749
            $behaviors = [];
-
 
750
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
-
 
751
            
-
 
752
            
397
 
753
            if($currentCompany) {
-
 
754
                $records = $behaviorMapper->fetchAllActiveByCompanyId($currentCompany->id);
-
 
755
            } else {
-
 
756
                $records = $behaviorMapper->fetchAllActiveByDefault();
398
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
757
            }
-
 
758
            
-
 
759
            $behaviorIds = [];
-
 
760
            foreach($records as $record)
-
 
761
            {
-
 
762
                
-
 
763
                $behaviorIds[ $record->id ] = $record->uuid;
-
 
764
                
-
 
765
                array_push($behaviors, [
-
 
766
                    'uuid' => $record->uuid,
-
 
767
                    'description' => $record->description
-
 
768
                ]);
-
 
769
            }
-
 
770
            
-
 
771
            
-
 
772
            $competencyTypes = [];
-
 
773
            
-
 
774
            
-
 
775
            $competencyTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
399
            $jobDescription = $jobDescriptionMapper->fetchOne($organizationPosition->job_description_id);
776
            
400
 
777
            if($currentCompany) {
-
 
778
                $records = $competencyTypeMapper->fetchAllActiveByCompanyId($currentCompany->id);
-
 
779
            } else {
-
 
780
                $records = $competencyTypeMapper->fetchAllActiveByDefault();
-
 
781
            }
-
 
Línea -... Línea 401...
-
 
401
            
-
 
402
            $userMapper = UserMapper::getInstance($this->adapter);
Línea 782... Línea 403...
782
            
403
            $employee = $userMapper->fetchOne($organizationPosition->employee_id);
783
            
404
            
784
            $competencyTypeIds = [];
-
 
785
            foreach($records as $record)
405
            $boss = '';
786
            {
-
 
787
                $competencyTypeIds[ $record->id ] =  $record->uuid;
-
 
788
                
-
 
789
                
-
 
790
                array_push($competencyTypes, [
-
 
791
                    'uuid' => $record->uuid,
-
 
792
                    'name' => $record->name,
406
            if($organizationPosition->boss_id) {
Línea 793... Línea -...
793
                ]);
-
 
794
            }
-
 
795
            
-
 
796
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
407
                $boss  = $userMapper->fetchOne($organizationPosition->boss_id);
797
            if($currentCompany) {
408
            }
798
                $records = $competencyMapper->fetchAllActiveByCompanyId($currentCompany->id);
-
 
799
            } else {
-
 
800
                $records = $competencyMapper->fetchAllActiveByDefault();
409
            
801
            }
-
 
802
            
-
 
803
            $competencyBehaviorMapper = CompetencyBehaviorMapper::getInstance($this->adapter);
-
 
804
            
-
 
805
            
-
 
806
            
410
            $options = [];
807
            $competencies = [];
-
 
808
            
-
 
809
            foreach($records as $record)
-
 
810
            {
-
 
811
                if(!isset($competencyTypeIds[ $record->competency_type_id ])) {
-
 
812
                    continue;
-
 
813
                }
-
 
814
                
-
 
815
                $behaviors_by_competency = [];
-
 
816
                
411
            if($jobDescription->job_description_id_boss) {
817
                $competencyBehaviors = $competencyBehaviorMapper->fetchAllByCompetencyId($record->id);
412
                $records = $organizationPositionMapper->fetchAllByCompanyIdAndJobDescriptionId($jobDescription->company_id, $jobDescription->job_description_id_boss);
818
                foreach($competencyBehaviors as $competencyBehavior)
413
                foreach($records as $record)
-
 
414
                {
819
                {
415
                    $user = $userMapper->fetchOne($record->employee_id);
820
                    if(!isset($behaviorIds[ $competencyBehavior->behavior_id ])) {
-
 
821
                        continue;
-
 
822
                    }
416
                    if($user) {
Línea 823... Línea -...
823
                    
-
 
824
                    array_push($behaviors_by_competency, $behaviorIds[ $competencyBehavior->behavior_id ]);
-
 
825
                }
-
 
826
                
-
 
827
                
-
 
828
                if($behaviors_by_competency) {
-
 
829
                    array_push($competencies, [
-
 
830
                        'competency_type_uuid' => $competencyTypeIds[ $record->competency_type_id ],
-
 
831
                        'uuid' => $record->uuid,
-
 
832
                        'name' => $record->name,
-
 
833
                        'behaviors' => $behaviors_by_competency,
-
 
834
                    ]);
417
                        $options[ $user->uuid ] = trim($user->first_name . ' ' . $user->last_name);
Línea 835... Línea -...
835
                }
-
 
836
                
-
 
837
                
-
 
838
            }
-
 
839
            
-
 
840
            
-
 
841
            $jobDescriptionMapper = OrganizationPositionMapper::getInstance($this->adapter);
-
 
842
            $records = $jobDescriptionMapper->fetchAllByCompanyId($currentCompany->id);
-
 
843
            
-
 
844
            $jobsDescription = [];
-
 
845
            
-
 
846
            foreach ($records as $record)
-
 
847
            {
-
 
Línea 848... Línea -...
848
                if($jobDescription->id == $record->id) {
-
 
849
                    continue;
-
 
850
                }
-
 
851
                
-
 
852
                $jobsDescription[ $record->uuid ] = $record->name;
-
 
853
            }
-
 
854
            
-
 
Línea 855... Línea 418...
855
            $job_description_id_boss = '';
418
                    }
856
            if($jobDescription->job_description_id_boss) {
419
                }
857
                $jobDescriptionBoss = $jobDescriptionMapper->fetchOne($jobDescription->job_description_id_boss);
420
                
858
                if($jobDescriptionBoss) {
421
            }
859
                    $job_description_id_boss = $jobDescriptionBoss->uuid;
-
 
860
                }
422
            
861
            }
-
 
862
 
423
            
863
            $data = [
-
 
864
                'id' => $jobDescription->uuid,
-
 
865
                'name' => $jobDescription->name, 
-
 
866
                'functions' => $jobDescription->functions,
-
 
867
                'objectives' => $jobDescription->objectives,
-
 
868
                'status' => $jobDescription->status,
-
 
869
                'competencies_selected' => [],
-
 
870
                'behaviors' => $behaviors,
-
 
871
                'competency_types' => $competencyTypes,
-
 
872
                'competencies' => $competencies,
-
 
873
                'jobs_description' => $jobsDescription,
-
 
874
                'job_description_id_boss' => $job_description_id_boss,
-
 
875
            ]; 
-
 
876
            
-
 
877
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
-
 
878
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
-
 
879
            $competencyTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
-
 
880
            
-
 
881
            $competencyTypes = [];
-
 
882
 
-
 
883
            $jobDescriptionCompetencyMapper = OrganizationPositionCompetencyMapper::getInstance($this->adapter);
-
 
884
            $jobDescriptionCompetencyBehaviorMapper = OrganizationPositionCompetencyBehaviorMapper::getInstance($this->adapter);
-
 
Línea 885... Línea -...
885
            
-
 
886
            $jobDescriptionCompetencies = $jobDescriptionCompetencyMapper->fetchAllByOrganizationPositionId($jobDescription->id);
-
 
887
            foreach($jobDescriptionCompetencies as $jobDescriptionCompetency)
-
 
888
            {
-
 
889
                $competency = $competencyMapper->fetchOne($jobDescriptionCompetency->competency_id);
-
 
890
                if(!$competency) {
-
 
891
                    continue;
-
 
892
                }
-
 
893
                
-
 
894
                if(isset($competencyTypes[$competency->competency_type_id])) {
-
 
895
                    $competencyType = $competencyTypes[$competency->competency_type_id];
-
 
896
                } else {
-
 
897
                
-
 
898
                    $competencyType = $competencyTypeMapper->fetchOne($competency->competency_type_id);
-
 
899
                    if(!$competencyType) {
-
 
900
                        continue;
-
 
901
                    }
424
            
902
                    
-
 
903
                    $competencyTypes[$competency->competency_type_id] = $competencyType;
-
 
904
                }
-
 
905
                
-
 
906
                $competency_selected = [
-
 
907
                    'uuid' => $competency->uuid,
-
 
908
                    'competency_type_uuid' => $competencyType->uuid,
-
 
909
                    'behaviors' => []
-
 
910
                ];
-
 
911
                
-
 
912
 
-
 
913
                
-
 
914
                foreach($competencies as $record_competency) 
-
 
915
                {
-
 
916
                    if($record_competency['uuid'] == $competency->uuid) {
-
 
917
                        
-
 
918
                        foreach($record_competency['behaviors'] as $uuid_behavior)
-
 
919
                        {
-
 
920
 
-
 
921
                            
-
 
922
                            $behavior = $behaviorMapper->fetchOneByUuid($uuid_behavior);
-
 
923
                            if($behavior) {
-
 
924
                            
-
 
925
                                $jobDescriptionCompetencyBehavior = $jobDescriptionCompetencyBehaviorMapper->fetchOneByOrganizationPositionIdAndCompetencyIdAndBehaviorId($jobDescription->id, $competency->id, $behavior->id);
-
 
926
                                if($jobDescriptionCompetencyBehavior) {
-
 
927
                                    $level = $jobDescriptionCompetencyBehavior->level;
-
 
928
                                } else {
-
 
929
                                    $level = 0;
-
 
930
                                }
-
 
931
                                
-
 
932
                                array_push($competency_selected['behaviors'], ['uuid' => $behavior->uuid, 'level' => $level]);
-
 
933
                            }
-
 
934
                        }
-
 
935
                        
-
 
936
                    }
-
 
937
                    
425
 
938
                    
-
 
Línea 939... Línea 426...
939
                }
426
            $data = [
940
                
427
                'job_description_id' => $jobDescription->uuid,
941
 
428
                'employee_id' => $employee->uuid, 
942
                
429
                'boss_id' =>  $boss ? $boss->uuid : '',
Línea 981... Línea 468...
981
 
468
 
982
            return new JsonModel($data);
469
            return new JsonModel($data);
Línea 983... Línea 470...
983
        }
470
        }
984
 
471
 
985
 
472
 
986
        $jobDescriptionMapper = OrganizationPositionMapper::getInstance($this->adapter);
473
        $organizationPositionMapper = OrganizationPositionMapper::getInstance($this->adapter);
987
        $jobDescription = $jobDescriptionMapper->fetchOneByUuid($uuid);
474
        $organizationPosition = $organizationPositionMapper->fetchOneByUuid($uuid);
988
        if (!$jobDescription) {
475
        if (!$organizationPosition) {
989
            $data = [
476
            $data = [
Línea 990... Línea 477...
990
                'success' => false,
477
                'success' => false,
991
                'data' => 'ERROR_RECORD_NOT_FOUND'
478
                'data' => 'ERROR_RECORD_NOT_FOUND'
Línea 992... Línea 479...
992
            ];
479
            ];
993
 
480
 
994
            return new JsonModel($data);
481
            return new JsonModel($data);
995
        }
482
        }
996
 
483
 
Línea 997... Línea 484...
997
        if ($currentCompany && $jobDescription->company_id != $currentCompany->id) {
484
        if ($currentCompany && $organizationPosition->company_id != $currentCompany->id) {
998
            $data = [
485
            $data = [
Línea 999... Línea 486...
999
                'success' => false,
486
                'success' => false,
1000
                'data' => 'ERROR_UNAUTHORIZED'
-
 
Línea -... Línea 487...
-
 
487
                'data' => 'ERROR_UNAUTHORIZED'
1001
            ];
488
            ];
1002
 
489
 
1003
            return new JsonModel($data);
490
            return new JsonModel($data);
-
 
491
        }
-
 
492
 
-
 
493
 
1004
        }
494
        if ($request->isPost()) {
Línea 1005... Línea 495...
1005
 
495
            
1006
 
496
            $organizationPositionMapper->removeParentByEmployeeId($organizationPosition->employee_id);
1007
        if ($request->isPost()) {
497
 
1008
            $jobDescriptionMapper->removeAllOrganizationPositionIdBossByJobDescripcionId($jobDescription->id);
498
            $result = $organizationPositionMapper->delete($organizationPosition);
1009
            
499
            if ($result) {
Línea 1010... Línea 500...
1010
            
500
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
1011
            $result = $jobDescriptionMapper->delete($jobDescription);
501
                $jobDescription = $jobDescriptionMapper->fetchOne($organizationPosition->job_description_id);
1012
            if ($result) {
502
                
1013
                $this->logger->info('Se borro el cargo de trabajo ' . $jobDescription->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
-
 
1014
 
-
 
1015
                $data = [
-
 
1016
                    'success' => true,
-
 
1017
                    'data' => 'LABEL_RECORD_DELETED'
-
 
1018
                ];
-
 
1019
            } else {
-
 
1020
 
-
 
1021
                $data = [
-
 
1022
                    'success' => false,
-
 
1023
                    'data' => $jobDescriptionMapper->getError()
-
 
1024
                ];
-
 
1025
 
-
 
1026
                return new JsonModel($data);
-
 
1027
            }
-
 
1028
        } else {
-
 
1029
            $data = [
-
 
1030
                'success' => false,
-
 
1031
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
1032
            ];
-
 
1033
 
-
 
1034
            return new JsonModel($data);
-
 
1035
        }
-
 
1036
 
-
 
1037
        return new JsonModel($data);
-
 
1038
    }
-
 
1039
 
-
 
1040
    public function importAction()
-
 
1041
    {
-
 
1042
 
-
 
1043
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
1044
        $currentUser = $currentUserPlugin->getUser();
-
 
1045
        $currentCompany = $currentUserPlugin->getCompany();
-
 
1046
 
-
 
1047
        if (!$currentCompany) {
-
 
1048
            $data = [
-
 
1049
                'success' => false,
-
 
1050
                'data' => 'ERROR_UNAUTHORIZED'
-
 
1051
            ];
-
 
1052
 
-
 
1053
            return new JsonModel($data);
-
 
1054
        }
-
 
1055
 
-
 
1056
        $request = $this->getRequest();
-
 
1057
 
-
 
1058
        if ($request->isPost()) {
-
 
1059
 
-
 
1060
            $jobDescriptionMapper = OrganizationPositionMapper::getInstance($this->adapter);
-
 
1061
            $jobDescriptionsDefault = $jobDescriptionMapper->fetchAllByDefault();
-
 
1062
 
-
 
1063
            $new_records = 0;
-
 
1064
            foreach ($jobDescriptionsDefault as $jobDescriptionDefault) {
-
 
1065
                if ($jobDescriptionDefault->status == OrganizationPosition::STATUS_INACTIVE) {
-
 
1066
                    continue;
-
 
1067
                }
-
 
1068
 
-
 
1069
                $jobDescription = $jobDescriptionMapper->fetchOneByCompanyId($currentCompany->id, $jobDescriptionDefault->id);
-
 
1070
                if (!$jobDescription) {
-
 
1071
 
-
 
1072
                    $jobDescription = new OrganizationPosition();
-
 
1073
                    $jobDescription->company_id = $currentCompany->id;
-
 
1074
                    $jobDescription->job_description_id_default = $jobDescriptionDefault->id;
-
 
1075
                    $jobDescription->name = $jobDescriptionDefault->name;
-
 
1076
                    $jobDescription->functions = $jobDescriptionDefault->functions;
-
 
1077
                    $jobDescription->objectives = $jobDescriptionDefault->objectives;
-
 
1078
                    $jobDescription->status = OrganizationPosition::STATUS_ACTIVE;
-
 
1079
 
-
 
1080
                    $result = $jobDescriptionMapper->insert($jobDescription);
-
 
1081
 
-
 
1082
                    if ($result) {
-
 
1083
 
-
 
1084
                        //Add Competencies
-
 
1085
                        $competenceMapper = CompetencyMapper::getInstance($this->adapter);
-
 
1086
                        $jobDescriptionCompetencyMapper = OrganizationPositionCompetencyMapper::getInstance($this->adapter);
-
 
1087
                        $jobDescriptionCompetencies = $jobDescriptionCompetencyMapper->fetchByOrganizationPositionId($jobDescriptionDefault->id);
-
 
1088
 
-
 
1089
                        if (count($jobDescriptionCompetencies) != 0) {
-
 
1090
                            foreach ($jobDescriptionCompetencies as $record) {
-
 
1091
 
-
 
1092
                                $competence = $competenceMapper->fetchOneByCompanyIdAndCompetencyIdDefault($currentCompany->id, $record->competency_id);
-
 
1093
                                if ($competence) {
-
 
1094
                                    $newDescriptionCompetency = new OrganizationPositionCompetency();
-
 
1095
                                    $newDescriptionCompetency->competency_id = $competence->id;
-
 
1096
                                    $newDescriptionCompetency->job_description_id = $jobDescription->id;
-
 
1097
                                    $newDescriptionCompetency->level = $record->level;
-
 
1098
                                    $jobDescriptionCompetencyMapper->insert($newDescriptionCompetency);
-
 
1099
                                }
-
 
1100
                            }
-
 
1101
                        }
-
 
1102
 
-
 
1103
                        $new_records++;
-
 
1104
                    } else {
-
 
1105
                        $data = [
-
 
1106
                            'success' => false,
-
 
1107
                            'data' => 'ERROR_CANT_ADD_JOB_DESCRIPTION'
-
 
1108
                        ];
-
 
1109
 
-
 
1110
                        return new JsonModel($data);
-
 
1111
                    }
-
 
1112
                }
-
 
1113
            }
-
 
1114
 
-
 
1115
            if ($new_records) {
-
 
1116
 
-
 
1117
                if (1 == $new_records) {
-
 
1118
                    $data = [
-
 
1119
                        'success' => true,
-
 
1120
                        'data' => 'LABEL_1_JOB_DESCRIPTION_IMPORTED'
-
 
1121
                    ];
-
 
1122
 
-
 
1123
                    return new JsonModel($data);
-
 
1124
                } else {
-
 
1125
                    $data = [
503
                $this->logger->info('Se borro un puesto de la descripción de ' . $jobDescription->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
Línea 1126... Línea 504...
1126
                        'success' => true,
504
 
1127
                        'data' => $new_records . ' LABEL_MULTI_JOB_DESCRIPTION_IMPORTED'
505
                $data = [
1128
                    ];
506
                    'success' => true,
Línea 1147... Línea 525...
1147
        }
525
        }
Línea 1148... Línea 526...
1148
 
526
 
1149
        return new JsonModel($data);
527
        return new JsonModel($data);
Línea -... Línea 528...
-
 
528
    }
1150
    }
529
 
1151
 
530
   
1152
    public function bossAction()
531
    public function bossAction()
1153
    {
532
    {
1154
        $currentUserPlugin = $this->plugin('currentUserPlugin');
533
        $currentUserPlugin = $this->plugin('currentUserPlugin');
Línea 1155... Línea 534...
1155
        $currentUser = $currentUserPlugin->getUser();
534
        $currentUser = $currentUserPlugin->getUser();
1156
        $currentCompany = $currentUserPlugin->getCompany();
535
        $currentCompany = $currentUserPlugin->getCompany();
Línea 1157... Línea 536...
1157
 
536
 
1158
        $request = $this->getRequest();
537
        $request = $this->getRequest();
1159
        $uuid = $this->params()->fromRoute('id');
538
        $uuid = $this->params()->fromQuery('job_description_id');
Línea 1188... Línea 567...
1188
            return new JsonModel($data);
567
            return new JsonModel($data);
1189
        }
568
        }
Línea 1190... Línea 569...
1190
 
569
 
1191
 
-
 
1192
        if ($request->isGet()) {
570
 
Línea 1193... Línea 571...
1193
 
571
        if ($request->isGet()) {
Línea -... Línea 572...
-
 
572
            $items = [];
1194
            $data = [];
573
            
1195
            
574
            if($jobDescription->job_description_id_boss) {
Línea -... Línea 575...
-
 
575
                
-
 
576
                $userMapper = UserMapper::getInstance($this->adapter);
-
 
577
                $organizationPositionMapper = OrganizationPositionMapper::getInstance($this->adapter);
-
 
578
                $records = $organizationPositionMapper->fetchAllByCompanyIdAndJobDescriptionId($jobDescription->company_id, $jobDescription->job_description_id_boss);
-
 
579
                
-
 
580
              
-
 
581
                foreach($records as $record)
-
 
582
                {
1196
            if(!$jobDescription->job_description_id_boss) {
583
                    $user = $userMapper->fetchOne($record->employee_id);
Línea -... Línea 584...
-
 
584
                    if($user) {
-
 
585
                        $items[ $user->uuid ] = trim( $user->first_name . ' ' . $user->last_name );
-
 
586
                    }
-
 
587
                }
-
 
588
            }
-
 
589
            
-
 
590
            
Línea 1197... Línea 591...
1197
                
591
            $data = [
1198
                $organizationPositionMapper = OrganizationPositionMapper::getInstance($this->adapter);
592
                'success' => true,
1199
                $users = $organizationPositionMapper->fetchAllByJobDescriptionIdAndCompanyId($job_description_id, $company_id)
593
                'data' => $items
1200
                
594
            ];
Línea 1214... Línea 608...
1214
        return new JsonModel($data);
608
        return new JsonModel($data);
1215
    }
609
    }
Línea -... Línea 610...
-
 
610
    
Línea 1216... Línea 611...
1216
    
611