Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev 15371 Rev 15403
Línea 5... Línea 5...
5
namespace LeadersLinked\Controller;
5
namespace LeadersLinked\Controller;
Línea 6... Línea 6...
6
 
6
 
7
use Laminas\Db\Adapter\AdapterInterface;
7
use Laminas\Db\Adapter\AdapterInterface;
8
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
8
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
9
use Laminas\Mvc\Controller\AbstractActionController;
-
 
-
 
9
use Laminas\Mvc\Controller\AbstractActionController;
10
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
10
 
11
use Laminas\Log\LoggerInterface;
11
use Laminas\Log\LoggerInterface;
12
use Laminas\View\Model\ViewModel;
12
use Laminas\View\Model\ViewModel;
13
use Laminas\View\Model\JsonModel;
-
 
14
use LeadersLinked\Library\Functions;
-
 
-
 
13
use Laminas\View\Model\JsonModel;
-
 
14
 
15
use LeadersLinked\Mapper\CompanyMapper;
15
 
-
 
16
use LeadersLinked\Form\JobDescription\JobDescriptionForm;
-
 
17
 
-
 
18
 
-
 
19
 
16
use LeadersLinked\Mapper\JobDescriptionMapper;
20
 
17
use LeadersLinked\Mapper\CompetencyTypeMapper;
21
use LeadersLinked\Model\Company;
18
use LeadersLinked\Model\JobDescription;
-
 
19
use LeadersLinked\Form\JobDescriptionForm;
-
 
20
use LeadersLinked\Mapper\CompetencyMapper;
-
 
21
use LeadersLinked\Library\JobPdf;
-
 
22
use LeadersLinked\Mapper\JobDescriptionCompetencyMapper;
-
 
23
use LeadersLinked\Mapper\JobDescriptionSubordinateMapper;
22
use LeadersLinked\Model\JobDescription;
24
use LeadersLinked\Model\JobDescriptionCompetency;
23
use LeadersLinked\Model\JobDescriptionCompetency;
25
use LeadersLinked\Model\JobDescriptionBehaviorCompetency;
-
 
26
use LeadersLinked\Mapper\JobDescriptionBehaviorCompetencyMapper;
24
use LeadersLinked\Model\JobDescriptionCompetencyBehavior;
-
 
25
use LeadersLinked\Model\JobDescriptionSubordinate;
27
use LeadersLinked\Model\JobDescriptionSubordinate;
26
 
28
use LeadersLinked\Mapper\BehaviorMapper;
-
 
29
use LeadersLinked\Model\Company;
27
use LeadersLinked\Mapper\BehaviorMapper;
30
use LeadersLinked\Model\CompetencyBehavior;
28
use LeadersLinked\Mapper\CompetencyMapper;
-
 
29
use LeadersLinked\Mapper\CompetencyBehaviorMapper;
Línea -... Línea 30...
-
 
30
use LeadersLinked\Mapper\CompetencyTypeMapper;
-
 
31
 
-
 
32
use LeadersLinked\Mapper\JobDescriptionMapper;
-
 
33
use LeadersLinked\Mapper\JobDescriptionCompetencyBehaviorMapper;
-
 
34
use LeadersLinked\Mapper\JobDescriptionCompetencyMapper;
-
 
35
use LeadersLinked\Mapper\JobDescriptionSubordinateMapper;
-
 
36
 
-
 
37
use LeadersLinked\Library\Functions;
-
 
38
use LeadersLinked\Library\JobDescriptionPdf;
-
 
39
 
-
 
40
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
-
 
41
use Laminas\Mvc\I18n\Translator;
-
 
42
use function PHPUnit\Framework\isEmpty;
Línea 31... Línea 43...
31
use LeadersLinked\Mapper\CompetencyBehaviorMapper;
43
use LeadersLinked\Model\Competency;
32
 
44
use Laminas\Http\Response;
Línea 33... Línea 45...
33
 
45
 
Línea 55... Línea 67...
55
    /**
67
    /**
56
     *
68
     *
57
     * @var array
69
     * @var array
58
     */
70
     */
59
    private $config;
71
    private $config;
-
 
72
    
-
 
73
    /**
-
 
74
     * 
-
 
75
     * @var Translator
-
 
76
     */
-
 
77
    private $translator;
Línea 60... Línea 78...
60
 
78
 
61
    /**
79
    /**
62
     *
80
     *
63
     * @param AdapterInterface $adapter
81
     * @param AdapterInterface $adapter
64
     * @param AbstractAdapter $cache
82
     * @param AbstractAdapter $cache
65
     * @param LoggerInterface $logger
83
     * @param LoggerInterface $logger
-
 
84
     * @param array $config
66
     * @param array $config
85
     * @param Translator $translator
67
     */
86
     */
68
    public function __construct($adapter, $cache, $logger, $config)
87
    public function __construct($adapter, $cache, $logger, $config,  $translator)
69
    {
88
    {
70
        $this->adapter = $adapter;
89
        $this->adapter = $adapter;
71
        $this->cache = $cache;
90
        $this->cache = $cache;
72
        $this->logger = $logger;
91
        $this->logger = $logger;
-
 
92
        $this->config = $config;
73
        $this->config = $config;
93
        $this->translator = $translator;
Línea 74... Línea 94...
74
    }
94
    }
75
 
95
 
76
    public function indexAction()
96
    public function indexAction()
Línea 154... Línea 174...
154
                        'items' => $items,
174
                        'items' => $items,
155
                        'total' => $paginator->getTotalItemCount(),
175
                        'total' => $paginator->getTotalItemCount(),
156
                    ]
176
                    ]
157
                ]);
177
                ]);
158
            } else {
178
            } else {
-
 
179
                
-
 
180
                $behaviors = [];
-
 
181
                $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
-
 
182
                
-
 
183
                
-
 
184
                if($currentCompany) {
-
 
185
                    $records = $behaviorMapper->fetchAllActiveByCompanyId($currentCompany->id);
-
 
186
                } else {
-
 
187
                    $records = $behaviorMapper->fetchAllActiveByDefault();
-
 
188
                }
-
 
189
                
-
 
190
                $behaviorIds = [];
-
 
191
                foreach($records as $record)
-
 
192
                {
-
 
193
                    
-
 
194
                    $behaviorIds[ $record->id ] = $record->uuid;
-
 
195
                    
-
 
196
                    array_push($behaviors, [
-
 
197
                        'uuid' => $record->uuid,
-
 
198
                        'description' => $record->description
-
 
199
                    ]);
-
 
200
                }
-
 
201
                
-
 
202
                
-
 
203
                $competencyTypes = [];
-
 
204
                
-
 
205
                
-
 
206
                $competencyTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
-
 
207
                
-
 
208
                if($currentCompany) {
-
 
209
                    $records = $competencyTypeMapper->fetchAllActiveByCompanyId($currentCompany->id);
-
 
210
                } else {
-
 
211
                    $records = $competencyTypeMapper->fetchAllActiveByDefault();
-
 
212
                }
-
 
213
                
-
 
214
               
-
 
215
                $competencyTypeIds = [];
-
 
216
                foreach($records as $record)
-
 
217
                {
-
 
218
                    $competencyTypeIds[ $record->id ] =  $record->uuid;
-
 
219
                    
-
 
220
                    
-
 
221
                    array_push($competencyTypes, [
-
 
222
                        'uuid' => $record->uuid,
-
 
223
                        'name' => $record->name,
-
 
224
                    ]);
-
 
225
                }
-
 
226
                
-
 
227
                $competencyMapper = CompetencyMapper::getInstance($this->adapter);
-
 
228
                if($currentCompany) {
-
 
229
                    $records = $competencyMapper->fetchAllActiveByCompanyId($currentCompany->id);
-
 
230
                } else {
-
 
231
                    $records = $competencyMapper->fetchAllActiveByDefault();
-
 
232
                }
-
 
233
                
-
 
234
                $competencyBehaviorMapper = CompetencyBehaviorMapper::getInstance($this->adapter);
-
 
235
                
-
 
236
                
-
 
237
                
-
 
238
                $competencies = [];
-
 
239
                
-
 
240
                foreach($records as $record)
-
 
241
                {
-
 
242
                    if(!isset($competencyTypeIds[ $record->competency_type_id ])) {
-
 
243
                        continue;      
-
 
244
                    }
-
 
245
                    
-
 
246
                    $behaviors_by_competency = [];
-
 
247
                    
-
 
248
                    $competencyBehaviors = $competencyBehaviorMapper->fetchAllByCompetencyId($record->id);
-
 
249
                    foreach($competencyBehaviors as $competencyBehavior)
-
 
250
                    {
-
 
251
                        if(!isset($behaviorIds[ $competencyBehavior->behavior_id ])) {
-
 
252
                            continue;
-
 
253
                        }
-
 
254
                        
-
 
255
                        array_push($behaviors_by_competency, $behaviorIds[ $competencyBehavior->behavior_id ]);
-
 
256
                    }
-
 
257
                    
-
 
258
                    
-
 
259
                    if($behaviors_by_competency) {
-
 
260
                        array_push($competencies, [
-
 
261
                            'competency_type_uuid' => $competencyTypeIds[ $record->competency_type_id ],
-
 
262
                            'uuid' => $record->uuid,
-
 
263
                            'name' => $record->name,
-
 
264
                            'behaviors_by_competency' => $behaviors_by_competency,
-
 
265
                        ]);
-
 
266
                    }
-
 
267
                    
-
 
268
                
-
 
269
                }
-
 
270
                
-
 
271
                
-
 
272
                
-
 
273
                
Línea 159... Línea 274...
159
 
274
 
Línea 160... Línea 275...
160
                $form = new JobDescriptionForm($this->adapter, $currentCompany ? $currentCompany->id : null);
275
                $form = new JobDescriptionForm($this->adapter, $currentCompany ? $currentCompany->id : null);
161
 
276
 
162
                $this->layout()->setTemplate('layout/layout-backend');
277
                $this->layout()->setTemplate('layout/layout-backend');
163
                $viewModel = new ViewModel();
278
                $viewModel = new ViewModel();
-
 
279
                $viewModel->setTemplate('leaders-linked/jobs-description/index.phtml');
-
 
280
                $viewModel->setVariables([
-
 
281
                    'form' => $form,
-
 
282
                    'behaviors' => $behaviors,
-
 
283
                    'competency_types' => $competencyTypes,
-
 
284
                    'competencies' => $competencies,
164
                $viewModel->setTemplate('leaders-linked/jobs-description/index.phtml');
285
                    
165
                $viewModel->setVariable('form', $form);
286
                ]);
166
                return $viewModel;
287
                return $viewModel;
167
            }
288
            }
168
        } else {
289
        } else {
Línea 182... Línea 303...
182
        $request = $this->getRequest();
303
        $request = $this->getRequest();
Línea 183... Línea 304...
183
 
304
 
Línea 184... Línea -...
184
 
-
 
185
        if ($request->isGet()) {
-
 
186
 
-
 
187
            $data = [
-
 
188
                'competency_types' => [],
-
 
189
                'competencies' => [],
-
 
190
                'jobs_description' => [],
-
 
191
            ];
-
 
192
 
-
 
193
            $competencyTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
-
 
194
 
-
 
195
            $records = $currentCompany ?
-
 
196
                $competencyTypeMapper->fetchAllByCompanyId($currentCompany->id) :
-
 
197
                $competencyTypeMapper->fetchAllActiveByDefault();
-
 
198
 
-
 
199
            $competencyTypesUUID = [];
-
 
200
            foreach ($records as $record) {
-
 
201
                array_push($data['competency_types'], [
-
 
202
                    'competency_type_id' => $record->uuid,
-
 
203
                    'name' => $record->name,
-
 
204
                ]);
-
 
205
 
-
 
206
                $competencyTypesUUID[$record->id] = $record->uuid;
-
 
207
            }
-
 
208
 
-
 
209
 
-
 
210
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
-
 
211
            $competencyBehaviorMapper = CompetencyBehaviorMapper::getInstance($this->adapter);
-
 
212
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
-
 
213
 
-
 
214
            $records = $currentCompany ?
-
 
215
                $competencyMapper->fetchAllActiveByCompanyId($currentCompany->id) :
-
 
216
                $competencyMapper->fetchAllByDefault();
-
 
217
 
-
 
218
            foreach ($records as $record) {
-
 
219
                if (isset($competencyTypesUUID[$record->competency_type_id])) {
-
 
220
 
-
 
221
 
-
 
222
                    $behaviorCompetencies = $competencyBehaviorMapper->fetchAllByCompetencyId($record->id);
-
 
223
                    $behaviors = [];
305
 
224
 
-
 
Línea 225... Línea -...
225
                    foreach ($behaviorCompetencies as $rows) {
-
 
226
 
-
 
227
                        $behavior = $behaviorMapper->fetchOne($rows->behavior_id);
-
 
228
 
-
 
229
                        if ($behavior) {
-
 
230
                            array_push($behaviors, [
-
 
231
                                'behavior_id' => $behavior->id,
-
 
232
                                'competency_id' => $record->uuid,
-
 
233
                                'description' => $behavior->description,
-
 
234
                                'level' => 0
-
 
235
                            ]);
-
 
236
                        }
-
 
237
                    }
-
 
238
 
-
 
239
                    array_push($data['competencies'], [
-
 
240
                        'competency_type_id' => $competencyTypesUUID[$record->competency_type_id],
-
 
241
                        'competency_id' => $record->uuid,
-
 
242
                        'name' => $record->name,
-
 
Línea 243... Línea 306...
243
                        'behaviors' => $behaviors
306
        if ($request->isGet()) {
244
                    ]);
307
 
245
                }
308
            
-
 
309
 
246
            }
310
 
-
 
311
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
247
 
312
            if($currentCompany) {
248
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
-
 
249
            $records = $currentCompany ?
313
                $records = $jobDescriptionMapper->fetchAllActiveByCompanyId($currentCompany->id);
250
                $jobDescriptionMapper->fetchAllActiveByCompanyId($currentCompany->id) :
-
 
-
 
314
            } else {
251
                $jobDescriptionMapper->fetchAllByDefault();
315
                $jobDescriptionMapper->fetchAllActiveByDefault();
252
 
316
            }
-
 
317
            
253
            foreach ($records as $record) {
318
            $jobsDescription = [];
Línea 254... Línea 319...
254
                array_push($data['jobs_description'], [
319
            
255
                    'job_description_id' => $record->uuid,
320
            foreach ($records as $record) 
256
                    'name' => $record->name
321
            {
-
 
322
                $jobsDescription[ $record->uuid ] = $record->name;
-
 
323
            }
257
                ]);
324
 
Línea 258... Línea 325...
258
            }
325
 
259
 
326
            $data = [
Línea 272... Línea 339...
272
 
339
 
Línea 273... Línea 340...
273
            $form->setData($dataPost);
340
            $form->setData($dataPost);
274
 
341
 
-
 
342
            if ($form->isValid()) {
-
 
343
                $dataPost = (array) $form->getData();
-
 
344
                
-
 
345
                $hydrator = new ObjectPropertyHydrator();
-
 
346
                $jobDescription = new JobDescription();
-
 
347
                
275
            if ($form->isValid()) {
348
                $hydrator->hydrate($dataPost, $jobDescription);
Línea 276... Línea 349...
276
                $dataPost = (array) $form->getData();
349
       
Línea -... Línea 350...
-
 
350
                $dataPost['status'] = $dataPost['status'] ? $dataPost['status'] : JobDescription::STATUS_INACTIVE;
277
                $dataPost['status'] = $dataPost['status'] ? $dataPost['status'] : JobDescription::STATUS_INACTIVE;
351
 
278
 
352
 
279
 
353
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
280
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
354
 
Línea -... Línea 355...
-
 
355
                
281
 
356
                if (!empty( $jobDescription->job_description_id_boss)) {
282
                if (!empty($dataPost['job_description_id_boss'])) {
357
                    
283
 
358
                    $jobDescriptionBoss = $jobDescriptionMapper->fetchOneByUuid($jobDescription->job_description_id_boss);
284
                    $jobDescriptionBoss = $jobDescriptionMapper->fetchOneByUuid($dataPost['job_description_id_boss']);
359
                    if ($jobDescriptionBoss) {
285
                    if ($jobDescriptionBoss) {
360
                        
286
                        
361
                        
287
                        
362
                        
288
                        if ($jobDescriptionBoss->company_id == ($currentCompany ? $currentCompany->id : 0)) {
363
                        if ($jobDescriptionBoss->company_id == ($currentCompany ? $currentCompany->id : 0)) {
289
                            $dataPost['job_description_id_boss'] = $jobDescriptionBoss->id;
364
                            $jobDescription->job_description_id_boss = $jobDescriptionBoss->id;
Línea 290... Línea -...
290
                        } else {
-
 
291
                            $dataPost['job_description_id_boss'] = null;
-
 
Línea 292... Línea -...
292
                        }
-
 
Línea 293... Línea 365...
293
                    } else {
365
                        } else {
294
                        $dataPost['job_description_id_boss'] = null;
366
                            $jobDescription->job_description_id_boss= null;
295
                    }
367
                        }
Línea 296... Línea 368...
296
                }
368
                    } else {
297
                
369
                        $jobDescription->job_description_id_boss = null;
Línea 298... Línea 370...
298
 
370
                    }
299
                $hydrator = new ObjectPropertyHydrator();
-
 
300
                $jobDescription = new JobDescription();
-
 
301
 
-
 
302
                $hydrator->hydrate($dataPost, $jobDescription);
-
 
303
 
-
 
304
                if ($currentCompany) {
371
                }
-
 
372
                
-
 
373
 
-
 
374
 
305
                    $jobDescription->company_id = $currentCompany ? $currentCompany->id : null;
375
 
306
                }
376
                if ($currentCompany) {
307
 
377
                    $jobDescription->company_id = $currentCompany ? $currentCompany->id : null;
308
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
378
                }
-
 
379
 
-
 
380
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
-
 
381
                $result = $jobDescriptionMapper->insert($jobDescription);
309
                $result = $jobDescriptionMapper->insert($jobDescription);
382
 
310
 
383
                if ($result) {
311
                if ($result) {
384
                    $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
-
 
385
                    $competencyMapper = CompetencyMapper::getInstance($this->adapter);
-
 
386
                    $competencyBehaviorMapper = CompetencyBehaviorMapper::getInstance($this->adapter);
-
 
387
                    
-
 
388
                    
-
 
389
                    $jobDescriptionCompetencyBehaviorMapper = JobDescriptionCompetencyBehaviorMapper::getInstance($this->adapter);
-
 
390
                    $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
-
 
391
                    $jobDescriptionSubordinateMapper = JobDescriptionSubordinateMapper::getInstance($this->adapter);
-
 
392
                    
312
 
393
    
-
 
394
                    
-
 
395
                    
-
 
396
                    
-
 
397
                    $competencies_selected = isset($dataPost['competencies_selected']) ? $dataPost['competencies_selected'] : [];
313
                    $jobDescriptionSubordinateMapper = JobDescriptionSubordinateMapper::getInstance($this->adapter);
398
                    foreach($competencies_selected as $competency_selected)
-
 
399
                    {
-
 
400
         
-
 
401
                        
-
 
402
                        
-
 
403
                        $competency_uuid = isset($competency_selected['competency_uuid']) ? $competency_selected['competency_uuid'] : '';
-
 
404
                        $competency = $competencyMapper->fetchOneByUuid($competency_uuid);
-
 
405
                        
-
 
406
                        
-
 
407
                        if($competency) {
-
 
408
                            if($currentCompany) {
-
 
409
                                $ok = $competency->company_id == $currentCompany->id;
-
 
410
                            } else {
-
 
411
                                $ok = empty($competency->company_id);
-
 
412
                            }
-
 
413
                        } else {
-
 
414
                            $ok = false;
-
 
415
                        }
-
 
416
                        
-
 
417
                        if(!$ok) {
-
 
418
                            continue;
-
 
419
                        }
-
 
420
                        
-
 
421
                        
-
 
422
                        $behavior_uuid = isset($competency_selected['behavior_uuid']) ? $competency_selected['behavior_uuid'] : '';
-
 
423
                        $behavior = $behaviorMapper->fetchOneByUuid($behavior_uuid);
-
 
424
                        if($behavior) {
-
 
425
                            if($currentCompany) {
-
 
426
                                $ok = $behavior->company_id == $currentCompany->id;
314
                    $jobDescriptionBehaviorCompetencyMapper = JobDescriptionBehaviorCompetencyMapper::getInstance($this->adapter);
427
                            } else {
315
                    $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
428
                                $ok = empty($behavior->company_id);
-
 
429
                            }
-
 
430
                            
-
 
431
                            
-
 
432
                        } else {
-
 
433
                            $ok = false;
-
 
434
                        }
-
 
435
                        
-
 
436
                        if($competency->company_id != $behavior->company_id) {
-
 
437
                            continue;
316
                    $competencyMapper = CompetencyMapper::getInstance($this->adapter);
438
                        }
317
                    $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
439
                        
318
 
440
                        $competencyBehavior = $competencyBehaviorMapper->fetchOneByBehaviorIdAndCompetencyId($behavior->id, $competency->id);
319
                    $jobDescriptionSubordinateMapper->deleteAllByJobDescriptionIdTopLevel($jobDescription->id);
441
                        if(!$competencyBehavior) {
320
                    $jobDescriptionCompetencyMapper->deleteAllBJobDescriptionId($jobDescription->id);
442
                            continue;
321
                    $jobDescriptionBehaviorCompetencyMapper->deleteAllBJobDescriptionId($jobDescription->id);
-
 
322
 
-
 
323
 
-
 
324
                    $competencies_selected = json_decode($dataPost['competencies_selected'], true);
-
 
325
 
-
 
326
                    for ($i = 0; $i < count($competencies_selected); $i++) {
-
 
327
                        $competency = $competencyMapper->fetchOneByUuid($competencies_selected[$i]['competency_id']);
-
 
328
                        if ($competency) {
-
 
329
                            $jobDescriptionCompetency = new JobDescriptionCompetency();
443
                        }
-
 
444
                        
-
 
445
                        $level = isset($competency_selected['level']) ? $competency_selected['level'] : 0;
-
 
446
                        $level = intval($level, 10);
-
 
447
                        
-
 
448
                        
-
 
449
                        $jobDescriptionCompetency =  $jobDescriptionCompetencyMapper->fetchOneByJobDescriptionIdAndCompetencyId($jobDescription->id, $competency->id);
-
 
450
                        if(!$jobDescriptionCompetency) {
-
 
451
                            $jobDescriptionCompetency = new JobDescriptionCompetency();
-
 
452
                            $jobDescriptionCompetency->competency_id = $competency->id;
-
 
453
                            $jobDescriptionCompetency->job_description_id = $jobDescription->id;
-
 
454
                            $jobDescriptionCompetencyMapper->insert($jobDescriptionCompetency);
-
 
455
                            
-
 
456
                        }
330
                            $jobDescriptionCompetency->competency_id = $competency->id;
457
                        
331
                            $jobDescriptionCompetency->job_description_id = $jobDescription->id;
458
                        
332
                            $jobDescriptionCompetencyMapper->insert($jobDescriptionCompetency);
459
                        
333
 
460
                        $jobDescriptionCompetencyBehavior = new JobDescriptionCompetencyBehavior();
-
 
461
                        $jobDescriptionCompetencyBehavior->job_description_id = $jobDescription->id;
-
 
462
                        $jobDescriptionCompetencyBehavior->competency_id = $competency->id;
-
 
463
                        $jobDescriptionCompetencyBehavior->behavior_id = $behavior->id;
334
                            for ($b = 0; $b < count($competencies_selected[$i]['behaviors']); $b++) {
464
                        $jobDescriptionCompetencyBehavior->level = $level;
335
                                $jobDescriptionBehaviorCompetency = new JobDescriptionBehaviorCompetency();
465
                        $jobDescriptionCompetencyBehaviorMapper->insert($jobDescriptionCompetencyBehavior);
336
                                $jobDescriptionBehaviorCompetency->competency_id = $competency->id;
466
   
337
                                $jobDescriptionBehaviorCompetency->behavior_id = $competencies_selected[$i]['behaviors'][$b]['behavior_id'];
467
                        
338
                                $jobDescriptionBehaviorCompetency->level = $competencies_selected[$i]['behaviors'][$b]['level'];
468
                        
339
                                $jobDescriptionBehaviorCompetency->job_description_id = $jobDescription->id;
469
                        
-
 
470
                    }
-
 
471
                 
340
                                $jobDescriptionBehaviorCompetencyMapper->insert($jobDescriptionBehaviorCompetency);
472
                    $subordinates_selected = isset($dataPost['subordinates_selected']) ? $dataPost['subordinates_selected'] : [];
341
                            }
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 {
342
                        }
485
                            $ok = false;
-
 
486
                        }
-
 
487
                        
Línea 343... Línea 488...
343
                    }
488
                        if(!$ok) {
Línea 344... Línea 489...
344
 
489
                            continue;
345
                    $subordinates_selected = json_decode($dataPost['subordinates_selected'], true);
490
                        }
Línea 439... Línea 584...
439
 
584
 
Línea 440... Línea 585...
440
 
585
 
-
 
586
            $form->setData($dataPost);
-
 
587
 
-
 
588
            if ($form->isValid()) {
441
            $form->setData($dataPost);
589
            
442
 
-
 
Línea -... Línea 590...
-
 
590
                
-
 
591
                
443
            if ($form->isValid()) {
592
                $dataPost = (array) $form->getData();
-
 
593
 
-
 
594
                $hydrator = new ObjectPropertyHydrator();
-
 
595
                $hydrator->hydrate($dataPost, $jobDescription);
-
 
596
                
-
 
597
                $dataPost['status'] = $dataPost['status'] ? $dataPost['status'] : JobDescription::STATUS_INACTIVE;
444
                $dataPost = (array) $form->getData();
598
                
445
                $dataPost['status'] = $dataPost['status'] ? $dataPost['status'] : JobDescription::STATUS_INACTIVE;
599
                
446
 
600
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
447
 
601
                
-
 
602
                if (!empty( $jobDescription->job_description_id_boss)) {
-
 
603
                    
-
 
604
                    $jobDescriptionBoss = $jobDescriptionMapper->fetchOneByUuid($jobDescription->job_description_id_boss);
448
                if (!empty($dataPost['job_description_id_boss'])) {
605
                    if ($jobDescriptionBoss) {
449
 
606
                        
450
                    $jobDescriptionBoss = $jobDescriptionMapper->fetchOneByUuid($dataPost['job_description_id_boss']);
607
    
451
                    if ($jobDescriptionBoss) {
608
                        
452
                        if ($jobDescriptionBoss->id != $jobDescription->id && $jobDescriptionBoss->company_id ==  ($currentCompany ? $currentCompany->id : 0)) {
609
                        if ($jobDescriptionBoss->company_id == ($currentCompany ? $currentCompany->id : 0)) {
453
                            $dataPost['job_description_id_boss'] = $jobDescriptionBoss->id;
610
                            $jobDescription->job_description_id_boss = $jobDescriptionBoss->id;
454
                        } else {
611
                        } else {
455
                            $dataPost['job_description_id_boss'] = null;
612
                            $jobDescription->job_description_id_boss= null;
456
                        }
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
                    
Línea -... Línea 646...
-
 
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 = [
457
                    } else {
686
                        'success' => false,
-
 
687
                        'data' =>  'ERROR_JOB_DESCRIPTIONS_RECURSIVE'
-
 
688
                    ];
-
 
689
                
-
 
690
                
Línea 458... Línea -...
458
                        $dataPost['job_description_id_boss'] = null;
-
 
459
                    }
691
                    return new JsonModel($data);
Línea 460... Línea 692...
460
                }
692
                }
461
 
-
 
462
                $hydrator = new ObjectPropertyHydrator();
-
 
463
                
-
 
464
                $hydrator->hydrate($dataPost, $jobDescription);
-
 
465
                $result = $jobDescriptionMapper->update($jobDescription);
-
 
466
 
693
                
-
 
694
                
-
 
695
                
-
 
696
                
467
                if ($result) {
697
                $result = $jobDescriptionMapper->update($jobDescription);
-
 
698
 
468
 
699
                if ($result) {
-
 
700
                    $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
-
 
701
                    $competencyMapper = CompetencyMapper::getInstance($this->adapter);
469
                    $jobDescriptionSubordinateMapper = JobDescriptionSubordinateMapper::getInstance($this->adapter);
702
                    $competencyBehaviorMapper = CompetencyBehaviorMapper::getInstance($this->adapter);
-
 
703
                    
-
 
704
                    
-
 
705
                    $jobDescriptionCompetencyBehaviorMapper = JobDescriptionCompetencyBehaviorMapper::getInstance($this->adapter);
470
                    $jobDescriptionBehaviorCompetencyMapper = JobDescriptionBehaviorCompetencyMapper::getInstance($this->adapter);
706
                    $jobDescriptionCompetencyBehaviorMapper->deleteAllBJobDescriptionId($jobDescription->id);
471
                    $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
707
                    
472
                    $competencyMapper = CompetencyMapper::getInstance($this->adapter);
708
                    $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
473
                    $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
709
                    $jobDescriptionCompetencyMapper->deleteAllBJobDescriptionId($jobDescription->id);
-
 
710
                    
-
 
711
                    
-
 
712
                 
-
 
713
                    $jobDescriptionSubordinateMapper->deleteAllByJobDescriptionIdTopLevel($jobDescription->id);
-
 
714
                    
-
 
715
                    
-
 
716
                    $competencies_selected = isset($dataPost['competencies_selected']) ? $dataPost['competencies_selected'] : [];
-
 
717
                    foreach($competencies_selected as $competency_selected)
474
 
718
                    {
-
 
719
                        
-
 
720
                        
-
 
721
                        
-
 
722
                        $competency_uuid = isset($competency_selected['competency_uuid']) ? $competency_selected['competency_uuid'] : '';
475
                    $jobDescriptionSubordinateMapper->deleteAllByJobDescriptionIdTopLevel($jobDescription->id);
723
                        $competency = $competencyMapper->fetchOneByUuid($competency_uuid);
-
 
724
                        
-
 
725
                        
-
 
726
                        if($competency) {
-
 
727
                            if($currentCompany) {
-
 
728
                                $ok = $competency->company_id == $currentCompany->id;
-
 
729
                            } else {
-
 
730
                                $ok = empty($competency->company_id);
-
 
731
                            }
-
 
732
                        } else {
-
 
733
                            $ok = false;
-
 
734
                        }
-
 
735
                        
-
 
736
                        if(!$ok) {
-
 
737
                            continue;
-
 
738
                        }
-
 
739
                        
-
 
740
                        
-
 
741
                        $behavior_uuid = isset($competency_selected['behavior_uuid']) ? $competency_selected['behavior_uuid'] : '';
-
 
742
                        $behavior = $behaviorMapper->fetchOneByUuid($behavior_uuid);
-
 
743
                        if($behavior) {
-
 
744
                            if($currentCompany) {
-
 
745
                                $ok = $behavior->company_id == $currentCompany->id;
-
 
746
                            } else {
-
 
747
                                $ok = empty($behavior->company_id);
-
 
748
                            }
-
 
749
                            
-
 
750
                            
-
 
751
                        } else {
476
                    $jobDescriptionCompetencyMapper->deleteAllBJobDescriptionId($jobDescription->id);
752
                            $ok = false;
477
                    $jobDescriptionBehaviorCompetencyMapper->deleteAllBJobDescriptionId($jobDescription->id);
753
                        }
-
 
754
                        
-
 
755
                        if($competency->company_id != $behavior->company_id) {
-
 
756
                            continue;
-
 
757
                        }
-
 
758
                        
-
 
759
                        $competencyBehavior = $competencyBehaviorMapper->fetchOneByBehaviorIdAndCompetencyId($behavior->id, $competency->id);
-
 
760
                        if(!$competencyBehavior) {
-
 
761
                            continue;
-
 
762
                        }
478
 
763
                        
479
 
764
                        $level = isset($competency_selected['level']) ? $competency_selected['level'] : 0;
480
                    $competencies_selected = json_decode($dataPost['competencies_selected'], true);
765
                        $level = intval($level, 10);
481
 
766
                        
482
                    for ($i = 0; $i < count($competencies_selected); $i++) {
767
                        
483
                        $competency = $competencyMapper->fetchOneByUuid($competencies_selected[$i]['competency_id']);
-
 
484
                        if ($competency) {
-
 
485
                            $jobDescriptionCompetency = new JobDescriptionCompetency();
-
 
486
                            $jobDescriptionCompetency->competency_id = $competency->id;
-
 
487
                            $jobDescriptionCompetency->job_description_id = $jobDescription->id;
-
 
488
                            $jobDescriptionCompetencyMapper->insert($jobDescriptionCompetency);
-
 
489
 
-
 
490
                            for ($b = 0; $b < count($competencies_selected[$i]['behaviors']); $b++) {
-
 
491
                                $jobDescriptionBehaviorCompetency = new JobDescriptionBehaviorCompetency();
768
                        $jobDescriptionCompetency =  $jobDescriptionCompetencyMapper->fetchOneByJobDescriptionIdAndCompetencyId($jobDescription->id, $competency->id);
492
                                $jobDescriptionBehaviorCompetency->competency_id = $competency->id;
-
 
493
                                $jobDescriptionBehaviorCompetency->behavior_id = $competencies_selected[$i]['behaviors'][$b]['behavior_id'];
-
 
494
                                $jobDescriptionBehaviorCompetency->level = $competencies_selected[$i]['behaviors'][$b]['level'];
-
 
495
                                $jobDescriptionBehaviorCompetency->job_description_id = $jobDescription->id;
-
 
496
                                $jobDescriptionBehaviorCompetencyMapper->insert($jobDescriptionBehaviorCompetency);
-
 
497
                            }
-
 
Línea -... Línea 769...
-
 
769
                        if(!$jobDescriptionCompetency) {
-
 
770
                            $jobDescriptionCompetency = new JobDescriptionCompetency();
-
 
771
                            $jobDescriptionCompetency->competency_id = $competency->id;
498
                        }
772
                            $jobDescriptionCompetency->job_description_id = $jobDescription->id;
-
 
773
                            $jobDescriptionCompetencyMapper->insert($jobDescriptionCompetency);
-
 
774
                            
499
                    }
775
                        }
-
 
776
                        
-
 
777
                        
-
 
778
                        
-
 
779
                        $jobDescriptionCompetencyBehavior = new JobDescriptionCompetencyBehavior();
-
 
780
                        $jobDescriptionCompetencyBehavior->job_description_id = $jobDescription->id;
-
 
781
                        $jobDescriptionCompetencyBehavior->competency_id = $competency->id;
500
 
782
                        $jobDescriptionCompetencyBehavior->behavior_id = $behavior->id;
501
                    $subordinates_selected = json_decode($dataPost['subordinates_selected'], true);
783
                        $jobDescriptionCompetencyBehavior->level = $level;
502
                    for ($i = 0; $max = count($subordinates_selected),  $i < $max ; $i++) {
784
                        $jobDescriptionCompetencyBehaviorMapper->insert($jobDescriptionCompetencyBehavior);
503
 
785
                        
504
       
786
                        
-
 
787
                        foreach($subordinates_for_update as $subordinate_id)
-
 
788
                        {
505
                        
789
                        
-
 
790
                            $jobDescriptionSubordinate = new JobDescriptionSubordinate();
506
                        $jobDescriptionListingSubordinate = $jobDescriptionMapper->fetchOneByUuid($subordinates_selected[$i]['job_description_id']);
791
                            $jobDescriptionSubordinate->job_description_id_top_level = $jobDescription->id;
-
 
792
                            $jobDescriptionSubordinate->job_description_id_low_level = $subordinate_id;
507
                        if ($jobDescriptionListingSubordinate) {
793
                            $jobDescriptionSubordinateMapper->insert($jobDescriptionSubordinate);
Línea 508... Línea 794...
508
                            $jobDescriptionSubordinate = new JobDescriptionSubordinate();
794
                        }
509
                            $jobDescriptionSubordinate->job_description_id_top_level = $jobDescription->id;
795
                        
510
                            $jobDescriptionSubordinate->job_description_id_low_level = $jobDescriptionListingSubordinate->id;
796
                        
Línea 538... Línea 824...
538
                    'data' => $messages
824
                    'data' => $messages
539
                ]);
825
                ]);
540
            }
826
            }
541
        } else if ($request->isGet()) {
827
        } else if ($request->isGet()) {
Línea 542... Línea -...
542
 
-
 
543
            $hydrator = new ObjectPropertyHydrator();
-
 
544
 
-
 
545
            $data = $hydrator->extract($jobDescription);
-
 
546
 
828
 
547
            if (!empty($data['job_description_id_boss'])) {
829
            if ($jobDescription->job_description_id_boss) {
548
 
830
                
549
                $jobDescriptionBoss = $jobDescriptionMapper->fetchOne($data['job_description_id_boss']);
831
                $jobDescriptionBoss = $jobDescriptionMapper->fetchOne($jobDescription->job_description_id_boss);
550
                if ($jobDescriptionBoss) {
832
                if ($jobDescriptionBoss) {
551
                    $data['job_description_id_boss'] = $jobDescriptionBoss->uuid;
833
                    $job_description_uuid_boss = $jobDescriptionBoss->uuid;
552
                } else {
834
                } else {
553
                    $data['job_description_id_boss'] = '';
835
                    $job_description_uuid_boss = '';
554
                }
836
                }
555
            } else {
837
            } else {
556
                $data['job_description_id_boss'] = '';
838
                $job_description_uuid_boss = '';
557
            }
-
 
558
 
839
            }
559
 
-
 
560
            $data['competency_types'] = [];
-
 
561
 
-
 
562
            $competencyTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
-
 
563
 
840
            
564
            $data['supervisers'] = $currentCompany ?
841
            if($currentCompany) {
-
 
842
                $records = $jobDescriptionMapper->fetchAllActiveByCompanyId($currentCompany->id);
565
                $jobDescriptionMapper->fetchAllByCompanyId($currentCompany->id) :
843
            } else {
566
                $jobDescriptionMapper->fetchAllActiveByDefault();
-
 
567
 
-
 
568
            $records = $currentCompany ?
-
 
569
                $competencyTypeMapper->fetchAllByCompanyId($currentCompany->id) :
-
 
570
                $competencyTypeMapper->fetchAllActiveByDefault();
-
 
571
 
-
 
572
            $competencyTypesUUID = [];
-
 
573
            foreach ($records as $record) {
-
 
574
                array_push($data['competency_types'], [
-
 
575
                    'competency_type_id' => $record->uuid,
-
 
576
                    'name' => $record->name
-
 
577
                ]);
-
 
578
 
-
 
579
                $competencyTypesUUID[$record->id] = $record->uuid;
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
            }
Línea -... Línea 857...
-
 
857
            
-
 
858
 
-
 
859
            $data = [
-
 
860
                'name' => $jobDescription->name, 
-
 
861
                'functions' => $jobDescription->functions,
-
 
862
                'objectives' => $jobDescription->objectives,
-
 
863
                'status' => $jobDescription->status,
580
            }
864
                'job_description_id_boss' => $job_description_uuid_boss,
581
 
865
                'jobs_description' => $jobsDescription,
-
 
866
                'subordinates_selected' => [],
582
            $data['competencies'] = [];
867
                'competencies_selected' => [],
583
            $data['competencies_selected'] = [];
-
 
584
 
-
 
585
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
868
            ]; 
586
            $competencyBehaviorMapper = CompetencyBehaviorMapper::getInstance($this->adapter);
-
 
587
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
869
            
-
 
870
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
-
 
871
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
-
 
872
            $competencyTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
Línea 588... Línea -...
588
            $jobDescriptionBehaviorCompetencyMapper = JobDescriptionBehaviorCompetencyMapper::getInstance($this->adapter);
-
 
589
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
873
            
590
 
874
            $competencyTypes = [];
591
            $records = $currentCompany ?
875
 
592
                $competencyMapper->fetchAllActiveByCompanyId($currentCompany->id) :
876
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
593
                $competencyMapper->fetchAllByDefault();
877
            $jobDescriptionCompetencyBehaviorMapper = JobDescriptionCompetencyBehaviorMapper::getInstance($this->adapter);
594
 
878
            
595
            foreach ($records as $record) {
879
            $jobDescriptionCompetencies = $jobDescriptionCompetencyMapper->fetchAllByJobDescriptionId($jobDescription->id);
596
                if (isset($competencyTypesUUID[$record->competency_type_id])) {
-
 
597
 
-
 
598
 
-
 
599
                    $behaviorCompetencies = $competencyBehaviorMapper->fetchAllByCompetencyId($record->id);
880
            foreach($jobDescriptionCompetencies as $jobDescriptionCompetency)
600
                    $behaviors = [];
-
 
601
                    $behaviors_selected = [];
881
            {
602
 
882
                
603
                    foreach ($behaviorCompetencies as $rows) {
-
 
604
 
-
 
605
                        $behavior = $behaviorMapper->fetchOne($rows->behavior_id);
-
 
606
                        if ($behavior) {
-
 
607
                            array_push($behaviors, [
-
 
608
                                'behavior_id' => $behavior->id,
-
 
609
                                'competency_id' => $record->uuid,
883
                
610
                                'description' => $behavior->description,
884
                
611
                                'level' => 0
885
                $competency = $competencyMapper->fetchOne($jobDescriptionCompetency->competency_id);
612
                            ]);
886
                if(!$competency) {
613
                        }
-
 
614
                    }
887
                    continue;
615
 
-
 
616
                    $jobDescriptionCompetency = $jobDescriptionCompetencyMapper->fetchOneByJobDescriptionIdAndCompetencyId($jobDescription->id, $record->id);
-
 
617
                    if ($jobDescriptionCompetency) {
-
 
618
 
888
                }
619
                        foreach ($behaviorCompetencies as $rows) {
-
 
620
 
-
 
621
                            $behavior = $behaviorMapper->fetchOne($rows->behavior_id);
889
                
622
                            $jobDescriptionBehaviorCompetency = $jobDescriptionBehaviorCompetencyMapper->fetchOneByBehavior($jobDescription->id, $record->id, $rows->behavior_id);
890
                if(isset($competencyTypes[$competency->competency_type_id])) {
623
 
-
 
624
                            if ($behavior && $jobDescriptionBehaviorCompetency) {
-
 
625
 
-
 
626
                                array_push($behaviors_selected, [
-
 
627
                                    'behavior_id' => $behavior->id,
-
 
628
                                    'competency_id' => $record->uuid,
-
 
629
                                    'description' => $behavior->description,
-
 
630
                                    'level' => $jobDescriptionBehaviorCompetency->level
-
 
631
                                ]);
-
 
632
                            }
891
                    $competencyType = $competencyTypes[$competency->competency_type_id];
633
                        }
892
                } else {
634
                        array_push($data['competencies_selected'], [
-
 
635
                            'competency_type_id' => $competencyTypesUUID[$record->competency_type_id],
-
 
636
                            'competency_id' => $record->uuid,
893
                
637
                            'name' => $record->name,
894
                    $competencyType = $competencyTypeMapper->fetchOne($competency->competency_type_id);
638
                            'behaviors' => $behaviors_selected
895
                    if(!$competencyType) {
639
                        ]);
-
 
640
                    }
896
                        continue;
641
 
-
 
642
                    array_push($data['competencies'], [
-
 
643
                        'competency_type_id' => $competencyTypesUUID[$record->competency_type_id],
-
 
644
                        'competency_id' => $record->uuid,
-
 
645
                        'name' => $record->name,
897
                    }
-
 
898
                    
-
 
899
                    $competencyTypes[$competency->competency_type_id] = $competencyType;
-
 
900
                }
-
 
901
                
-
 
902
                $competency_selected = [
646
                        'behaviors' => $behaviors
903
                    'uuid' => $competency->uuid,
647
                    ]);
904
                    'competency_type_uuid' => $competencyType->uuid,
648
                }
-
 
649
            }
905
                    'behaviors' => []
-
 
906
                ];
-
 
907
                
650
 
908
                
651
            $data['jobs_description'] = [];
909
                $jobDescriptionCompetencyBehaviors = $jobDescriptionCompetencyBehaviorMapper->fetchAllByJobDescriptionIdAndCompetencyId($jobDescriptionCompetency->job_description_id, $jobDescriptionCompetency->competency_id);
-
 
910
                foreach($jobDescriptionCompetencyBehaviors as $jobDescriptionCompetencyBehavior)
-
 
911
                {
Línea 652... Línea -...
652
 
-
 
653
            $jobsDescriptionUUID = [];
912
                    $behavior = $behaviorMapper->fetchOne($jobDescriptionCompetencyBehavior->behavior_id);
654
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
-
 
655
 
-
 
656
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
-
 
657
            $records = $currentCompany ?
-
 
658
                $jobDescriptionMapper->fetchAllActiveByCompanyId($currentCompany->id) :
913
                    if($behavior) {
659
                $jobDescriptionMapper->fetchAllByDefault();
-
 
660
 
-
 
661
            foreach ($records as $record) {
-
 
662
 
-
 
663
                $jobsDescriptionUUID[$record->id] = $record->uuid;
-
 
664
                if ($record->id != $jobDescription->id) {
-
 
665
                    array_push($data['jobs_description'], [
914
                        array_push($competency_selected['behaviors'], ['uuid' => $behavior->uuid, 'level' => $jobDescriptionCompetencyBehavior->level]);
-
 
915
 
-
 
916
                    }
-
 
917
                    
-
 
918
                }
-
 
919
                
666
                        'job_description_id' => $record->uuid,
920
                array_push($data['competencies_selected'], $competency_selected);
667
                        'name' => $record->name
921
                
668
                    ]);
-
 
669
                }
922
                
670
            }
923
                
671
 
-
 
672
            $data['subordinates_selected'] = [];
-
 
673
            $jobDescriptionSubordinateMapper = JobDescriptionSubordinateMapper::getInstance($this->adapter);
924
            }
674
            $records = $jobDescriptionSubordinateMapper->fetchAllByJobDescriptionIdTopLevel($jobDescription->id);
925
            
675
 
926
            $jobDescriptionSubordinateMapper = JobDescriptionSubordinateMapper::getInstance($this->adapter);
676
            foreach ($records as $record) {
927
            $jobDescriptionSubordinates = $jobDescriptionSubordinateMapper->fetchAllByJobDescriptionIdTopLevel($jobDescription->id);
677
 
928
            
678
                if (isset($jobsDescriptionUUID[$record->job_description_id_low_level])) {
-
 
679
 
929
            foreach($jobDescriptionSubordinates as $jobDescriptionSubordinate)
680
                    $jobDescriptionSub = $jobDescriptionMapper->fetchOne($record->job_description_id_low_level);
-
 
681
                    if ($jobDescriptionSub) {
-
 
682
 
-
 
683
                        array_push($data['subordinates_selected'], [
-
 
684
                            'job_description_id' => $jobDescriptionSub->uuid,
930
            {
-
 
931
                $jobDescriptionForSubordinate = $jobDescriptionMapper->fetchOne($jobDescriptionSubordinate->job_description_id_low_level);
-
 
932
                if($jobDescriptionForSubordinate) {
-
 
933
                    array_push($data['subordinates_selected'], ['uuid' => $jobDescriptionForSubordinate->uuid ]);
685
                            'name' => $jobDescriptionSub->name
934
                }
-
 
935
                
-
 
936
                
Línea 686... Línea 937...
686
                        ]);
937
                
687
                    }
938
            }
688
                }
939
            
689
            }
940
                    
Línea 928... Línea 1179...
928
        }
1179
        }
Línea 929... Línea 1180...
929
 
1180
 
Línea -... Línea 1181...
-
 
1181
 
Línea -... Línea 1182...
-
 
1182
        if ($request->isGet()) {
-
 
1183
 
-
 
1184
            $filename = Functions::normalizeStringFilename($jobDescription->name . '-' . date('Y-m-d H:i a') . '.pdf');
-
 
1185
 
930
 
1186
            
-
 
1187
            $content = base64_encode($this->renderPdf($currentCompany, $jobDescription));
-
 
1188
            
-
 
1189
            /*
-
 
1190
             $content = $this->renderPdf($currentCompany, $jobDescription);
-
 
1191
            $response = new Response();
-
 
1192
            $response->setStatusCode(200);
-
 
1193
            $response->setContent($content);
-
 
1194
            
-
 
1195
            
-
 
1196
            
-
 
1197
            $headers = $response->getHeaders();
-
 
1198
            $headers->clearHeaders();
-
 
1199
 
-
 
1200
            $headers->addHeaderLine('Content-Description: File Transfer');
-
 
1201
            $headers->addHeaderLine('Content-Type: application/pdf');
-
 
1202
            //$headers->addHeaderLine('Content-Disposition: attachment; filename=' . $filename);
-
 
1203
            $headers->addHeaderLine('Content-Transfer-Encoding: binary');
-
 
1204
            $headers->addHeaderLine('Expires: 0');
-
 
1205
            $headers->addHeaderLine('Cache-Control: must-revalidate');
-
 
1206
            $headers->addHeaderLine('Pragma: public');
-
 
1207
            return $response;
-
 
1208
            */
-
 
1209
            
-
 
1210
            $data = [
-
 
1211
                'success' => true,
-
 
1212
                'data' => [
-
 
1213
                    'basename' => $filename,
-
 
1214
                    'content' => $content
-
 
1215
                ]
-
 
1216
            ];
931
        if ($request->isGet()) {
1217
            
932
 
1218
            return new JsonModel($data);
933
 
1219
            
934
            return $this->renderPdf($currentCompany, $jobDescription);
1220
         
935
        } else {
1221
        } else {
Línea 941... Línea 1227...
941
            return new JsonModel($data);
1227
            return new JsonModel($data);
942
        }
1228
        }
Línea 943... Línea 1229...
943
 
1229
 
944
        return new JsonModel($data);
1230
        return new JsonModel($data);
-
 
1231
    }
-
 
1232
    
-
 
1233
    
-
 
1234
 
Línea 945... Línea 1235...
945
    }
1235
    
946
 
1236
 
947
    /**
1237
    /**
948
     * Render PDF
1238
     * Render PDF
949
     * @param Company $company;
1239
     * @param Company $company;
950
     * @param JobDescription $jobDescription
1240
     * @param JobDescription $jobDescription
951
     * @return mixed
1241
     * @return mixed
952
     */
1242
     */
Línea 953... Línea 1243...
953
    public function renderPDF($company, $jobDescription)
1243
    private function renderPDF($company, $jobDescription)
954
    {
1244
    {
955
 
-
 
-
 
1245
 
Línea 956... Línea 1246...
956
        //Generate New PDF
1246
        //Generate New PDF
Línea 957... Línea 1247...
957
        $pdf = new JobPdf();
1247
        $pdf = new JobDescriptionPdf();
Línea 970... Línea 1260...
970
            $footer = $this->config['leaderslinked.images_default.company_pdf_footer'];
1260
            $footer = $this->config['leaderslinked.images_default.company_pdf_footer'];
971
        }
1261
        }
Línea 972... Línea 1262...
972
        
1262
        
973
        $pdf->header = $header;
1263
        $pdf->header = $header;
-
 
1264
        $pdf->footer = $footer;
Línea 974... Línea 1265...
974
        $pdf->footer = $footer;
1265
        $pdf->translator = $this->translator;
Línea 975... Línea 1266...
975
 
1266
 
Línea 983... Línea 1274...
983
        $pdf->customHeader();
1274
        $pdf->customHeader();
Línea 984... Línea 1275...
984
 
1275
 
Línea 985... Línea 1276...
985
        // Job Description Name
1276
        // Job Description Name
986
 
1277
 
987
        $job_descrition[] = array(
1278
        $job_descrition[] = array(
988
            'title' => 'Categoría Laboral:',
1279
            'title' => $this->translator->translate('LABEL_PDF_JOB_DESCRIPTION_LABORAL_CATEGORY') .  ' : ' ,
Línea -... Línea 1280...
-
 
1280
            'content' => ' ' . $jobDescription->name
989
            'content' => ' ' . $jobDescription->name
1281
        );
Línea 990... Línea 1282...
990
        );
1282
 
Línea 991... Línea 1283...
991
 
1283
 
Línea 1012... Línea 1304...
1012
        }
1304
        }
Línea 1013... Línea 1305...
1013
 
1305
 
Línea 1014... Línea 1306...
1014
        $jobDescriptionBoss = $jobDescriptionMapper->fetchOne($jobDescription->job_description_id_boss);
1306
        $jobDescriptionBoss = $jobDescriptionMapper->fetchOne($jobDescription->job_description_id_boss);
1015
 
1307
 
1016
        $relationship = [
1308
        $relationship = [
1017
            array(
1309
            [
1018
                'title' => 'Supervisa a: ',
1310
                'title' => $this->translator->translate('LABEL_PDF_JOB_SUPERVISES') . ': ',
1019
                'content' => $subordinate ? ' ' . $subordinate : ' No aplica'
1311
                'content' => $subordinate ? ' ' . $subordinate : ' No aplica'
1020
            ),
1312
            ],
1021
            array(
1313
            [
1022
                'title' => 'Supervisado por: ',
1314
                'title' => $this->translator->translate('LABEL_PDF_JOB_SUPERVISED_BY') . ': ',
1023
                'content' => $jobDescriptionBoss ? ' ' . $jobDescriptionBoss->name : ' No aplica'
1315
                'content' => $jobDescriptionBoss ? ' ' . $jobDescriptionBoss->name : ' ' .  $this->translator->translate('LABEL_PDF_JOB_DOES_NOT_APPLY'),
Línea 1024... Línea 1316...
1024
            )
1316
            ]
Línea 1025... Línea 1317...
1025
        ];
1317
        ];
Línea 1026... Línea 1318...
1026
 
1318
 
1027
        $pdf->borderTable('Relación jerárquica:', $relationship);
1319
        $pdf->borderTable($this->translator->translate('LABEL_PDF_JOB_HIERARCHICAL_RELATIONSHIP') . ' : ', $relationship);
Línea 1028... Línea 1320...
1028
 
1320
 
Línea 1029... Línea 1321...
1029
        // Objetives
1321
        // Objetives
1030
 
1322
 
Línea 1031... Línea 1323...
1031
        $objetives[] = array('content' => strip_tags($jobDescription->objectives));
1323
        $objetives[] = array('content' => strip_tags($jobDescription->objectives));
1032
        $pdf->borderTable('Objetivos:', $objetives);
1324
        $pdf->borderTable($this->translator->translate('LABEL_PDF_JOB_OBJECTIVES') . ' : ', $objetives);
Línea 1033... Línea 1325...
1033
 
1325
 
Línea 1034... Línea 1326...
1034
        // Functions
1326
        // Functions
1035
 
1327
 
Línea 1036... Línea 1328...
1036
        $functions[] = array('content' => strip_tags($jobDescription->functions));
1328
        $functions[] = array('content' => strip_tags($jobDescription->functions));
1037
        $pdf->borderTable('Funciones principales:', $functions);
1329
        $pdf->borderTable($this->translator->translate('LABEL_PDF_JOB_PRINCIPAL_FUNCTIONS') . ' : ', $functions);
1038
 
1330
 
1039
        // add section signature
1331
        // add section signature
1040
        $pdf->sectionSignature();
1332
        $pdf->sectionSignature();
Línea 1041... Línea 1333...
1041
 
1333
 
Línea 1042... Línea 1334...
1042
        //Competencies
1334
        //Competencies
Línea 1043... Línea 1335...
1043
 
1335
 
Línea 1044... Línea 1336...
1044
        $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
1336
        $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
Línea 1076... Línea 1368...
1076
                $behaviors = [];
1368
                $behaviors = [];
Línea 1077... Línea 1369...
1077
 
1369
 
Línea 1078... Línea 1370...
1078
                foreach ($behaviorCompetencies as $rows) {
1370
                foreach ($behaviorCompetencies as $rows) {
1079
 
1371
 
Línea 1080... Línea 1372...
1080
                    $behavior = $behaviorMapper->fetchOne($rows->behavior_id);
1372
                    $behavior = $behaviorMapper->fetchOne($rows->behavior_id);
Línea 1081... Línea 1373...
1081
                    $jobDescriptionBehaviorCompetency = $jobDescriptionBehaviorCompetencyMapper->fetchOneByBehavior($jobDescription->id, $record->competency_id, $rows->behavior_id);
1373
                    $jobDescriptionCompetencyBehavior = $jobDescriptionCompetencyBehaviorMapper->fetchOneByBehavior($jobDescription->id, $record->competency_id, $rows->behavior_id);
1082
 
1374
 
1083
                    if ($behavior && $jobDescriptionBehaviorCompetency) {
1375
                    if ($behavior && $jobDescriptionCompetencyBehavior) {
1084
 
1376
 
1085
                        array_push($behaviors, [
1377
                        array_push($behaviors, [
1086
                            'description' => $behavior->description,
1378
                            'description' => $behavior->description,
Línea 1087... Línea 1379...
1087
                            'level' => $jobDescriptionBehaviorCompetency->level
1379
                            'level' => $jobDescriptionCompetencyBehavior->level
Línea 1097... Línea 1389...
1097
                if ($i % 3 == 0 && $i < $countCompetencies) {
1389
                if ($i % 3 == 0 && $i < $countCompetencies) {
1098
                    $pdf->AddPage();
1390
                    $pdf->AddPage();
1099
                }
1391
                }
1100
            }
1392
            }
1101
        }
1393
        }
-
 
1394
        
-
 
1395
        /*
-
 
1396
     
-
 
1397
        $temp_file = tempnam(sys_get_temp_dir(), 'job-description');
-
 
1398
        $pdf->Output('F', $temp_file);
Línea -... Línea 1399...
-
 
1399
 
1102
 
1400
        return $temp_file;*/
1103
 
1401
        
1104
        return $pdf->Output();
1402
        return $pdf->Output('S');
Línea -... Línea 1403...
-
 
1403
    }
-
 
1404
    
Línea 1105... Línea 1405...
1105
    }
1405