Proyectos de Subversion LeadersLinked - Backend

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1384 efrain 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Controller;
6
 
7
use Laminas\Db\Adapter\AdapterInterface;
8
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
9
use Laminas\Mvc\Controller\AbstractActionController;
10
use Laminas\Log\LoggerInterface;
11
use Laminas\View\Model\ViewModel;
12
use Laminas\View\Model\JsonModel;
7778 eleazar 13
use LeadersLinked\Library\Functions;
1384 efrain 14
use LeadersLinked\Mapper\QueryMapper;
15
use LeadersLinked\Mapper\UserMapper;
16
use Laminas\Hydrator\ArraySerializableHydrator;
17
use Laminas\Db\ResultSet\HydratingResultSet;
18
use Laminas\Paginator\Adapter\DbSelect;
8169 eleazar 19
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
1384 efrain 20
use Laminas\Paginator\Paginator;
21
use LeadersLinked\Mapper\CompanyPerformanceEvaluationFormMapper;
8203 eleazar 22
use LeadersLinked\Mapper\CompanyMapper;
1384 efrain 23
use LeadersLinked\Mapper\CompanyUserMapper;
8100 eleazar 24
use LeadersLinked\Mapper\JobDescriptionMapper;
8101 eleazar 25
use LeadersLinked\Mapper\CompetencyTypeMapper;
26
use LeadersLinked\Model\JobDescription;
27
use LeadersLinked\Mapper\CompetencyMapper;
28
use LeadersLinked\Mapper\BehaviorCompetencyMapper;
29
use LeadersLinked\Model\BehaviorCompetency;
30
use LeadersLinked\Library\JobPdf;
31
use LeadersLinked\Mapper\JobDescriptionCompetencyMapper;
32
use LeadersLinked\Mapper\JobDescriptionSubordinateMapper;
33
use LeadersLinked\Model\JobDescriptionCompetency;
34
use LeadersLinked\Model\JobDescriptionBehaviorCompetency;
35
use LeadersLinked\Mapper\JobDescriptionBehaviorCompetencyMapper;
36
use LeadersLinked\Model\JobDescriptionSubordinate;
37
use LeadersLinked\Mapper\BehaviorMapper;
8190 eleazar 38
use LeadersLinked\Library\InterviewPDF;
8101 eleazar 39
use LeadersLinked\Model\Behavior;
1384 efrain 40
use LeadersLinked\Form\PerformanceEvaluationEvaluationForm;
8087 eleazar 41
use LeadersLinked\Form\PerformanceEvaluationEvaluationSelfForm;
8179 eleazar 42
use LeadersLinked\Form\PerformanceEvaluationEvaluationBothForm;
43
use LeadersLinked\Form\PerformanceEvaluationEvaluationSupervisorForm;
1384 efrain 44
use LeadersLinked\Mapper\CompanyPerformanceEvaluationTestMapper;
8170 eleazar 45
use LeadersLinked\Mapper\CompanyPerformanceEvaluationTestSelfMapper;
8179 eleazar 46
use LeadersLinked\Mapper\CompanyPerformanceEvaluationTestBothMapper;
47
use LeadersLinked\Mapper\CompanyPerformanceEvaluationTestSupervisorMapper;
1384 efrain 48
use LeadersLinked\Model\CompanyPerformanceEvaluationTest;
49
use LeadersLinked\Model\CompanyPerformanceEvaluationForm;
8087 eleazar 50
use LeadersLinked\Model\CompanyPerformanceEvaluationTestSelf;
8179 eleazar 51
use LeadersLinked\Model\CompanyPerformanceEvaluationTestBoth;
52
use LeadersLinked\Model\CompanyPerformanceEvaluationTestSupervisor;
1384 efrain 53
 
54
class PerformanceEvaluationEvaluationController extends AbstractActionController {
55
 
56
    /**
57
     *
58
     * @var AdapterInterface
59
     */
60
    private $adapter;
61
 
62
    /**
63
     *
64
     * @var AbstractAdapter
65
     */
66
    private $cache;
67
 
68
    /**
69
     *
70
     * @var  LoggerInterface
71
     */
72
    private $logger;
73
 
74
    /**
75
     *
76
     * @var array
77
     */
78
    private $config;
79
 
80
    /**
81
     *
82
     * @param AdapterInterface $adapter
83
     * @param AbstractAdapter $cache
84
     * @param LoggerInterface $logger
85
     * @param array $config
86
     */
87
    public function __construct($adapter, $cache, $logger, $config) {
88
        $this->adapter = $adapter;
89
        $this->cache = $cache;
90
        $this->logger = $logger;
91
        $this->config = $config;
92
    }
93
 
94
    public function indexAction() {
95
        $currentUserPlugin = $this->plugin('currentUserPlugin');
96
        $currentUser = $currentUserPlugin->getUser();
97
        $currentCompany = $currentUserPlugin->getCompany();
98
 
7897 eleazar 99
        try{
1384 efrain 100
        $request = $this->getRequest();
101
 
102
        if ($request->isGet()) {
103
 
104
            $headers = $request->getHeaders();
105
 
106
            $isJson = false;
107
            if ($headers->has('Accept')) {
108
                $accept = $headers->get('Accept');
109
 
110
                $prioritized = $accept->getPrioritized();
111
 
112
                foreach ($prioritized as $key => $value) {
113
                    $raw = trim($value->getRaw());
114
 
115
                    if (!$isJson) {
116
                        $isJson = strpos($raw, 'json');
117
                    }
118
                }
119
            }
120
 
121
            //$isJson = true;
122
            if ($isJson) {
123
 
124
 
125
                $data = [
126
                    'items' => [],
127
                    'total' => 0,
128
                ];
129
 
130
 
131
                $search = $this->params()->fromQuery('search', []);
132
                $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
133
 
134
                $page = intval($this->params()->fromQuery('start', 1), 10);
135
                $records_x_page = intval($this->params()->fromQuery('length', 10), 10);
136
                $order = $this->params()->fromQuery('order', []);
137
                $order_field = empty($order[0]['column']) ? 99 : intval($order[0]['column'], 10);
138
                $order_direction = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var($order[0]['dir'], FILTER_SANITIZE_STRING));
139
 
140
                $fields = ['max_date'];
141
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'first_name';
142
 
143
                if (!in_array($order_direction, ['ASC', 'DESC'])) {
144
                    $order_direction = 'ASC';
145
                }
146
 
147
 
148
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
149
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'performance-evaluation/evaluations/delete');
7913 eleazar 150
 
1384 efrain 151
 
7906 eleazar 152
 
1384 efrain 153
                $queryMapper = QueryMapper::getInstance($this->adapter);
154
                $sql = $queryMapper->getSql();
155
                $select = $sql->select();
8082 eleazar 156
                $select->columns(['uuid', 'last_date', 'form_id']);
1384 efrain 157
                $select->from(['tb1' => CompanyPerformanceEvaluationTestMapper::_TABLE]);
158
                $select->join(['tb2' => CompanyPerformanceEvaluationFormMapper::_TABLE], 'tb1.form_id = tb2.id ', ['form' =>'name']);
159
                $select->join(['tb3' => UserMapper::_TABLE], 'tb1.supervisor_id = tb3.id ', ['first_name', 'last_name', 'email']);
160
                $select->where->equalTo('tb1.company_id', $currentCompany->id);
161
 
162
                if ($search) {
163
                    $select->where->nest()
164
                            ->like('tb1.last_date', '%' . $search . '%')
165
                            ->like('tb2.name', '%' . $search . '%')
166
                            ->like('tb3.first_name', '%' . $search . '%')
167
                            ->or->like('tb3.last_name', '%' . $search . '%')
168
                            ->or->like('tb3.email', '%' . $search . '%')
169
                            ->unnest();
170
                }
171
 
172
 
173
                $select->order($order_field . ' ' . $order_direction);
174
 
175
                $hydrator = new ArraySerializableHydrator();
176
                $resultset = new HydratingResultSet($hydrator);
177
 
178
                $adapter = new DbSelect($select, $sql, $resultset);
179
                $paginator = new Paginator($adapter);
180
                $paginator->setItemCountPerPage($records_x_page);
181
                $paginator->setCurrentPageNumber($page);
182
 
183
                $items = [];
184
                $records = $paginator->getCurrentItems();
8175 eleazar 185
                $testSelfMapper = CompanyPerformanceEvaluationTestSelfMapper::getInstance($this->adapter);
8188 eleazar 186
                $testBothMapper = CompanyPerformanceEvaluationTestBothMapper::getInstance($this->adapter);
187
                $testSupervisorMapper = CompanyPerformanceEvaluationTestSupervisorMapper::getInstance($this->adapter);
1384 efrain 188
                foreach ($records as $record)
189
                {
8082 eleazar 190
                    $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
191
                    $test =  $testMapper->fetchOneByUuid($record['uuid']);
8083 eleazar 192
 
1384 efrain 193
                    $dt = \DateTime::createFromFormat('Y-m-d', $record['last_date']);
194
                    $last_date = $dt->format('d/m/Y');
195
 
8175 eleazar 196
                    $testSelf = $testSelfMapper->fetchOneByTestId($test->id);
8188 eleazar 197
                    $testBoth = $testBothMapper->fetchOneByTestId($test->id);
198
                    $testSupervisor = $testSupervisorMapper->fetchOneByTestId($test->id);
7778 eleazar 199
                    $link_delete = $this->url()->fromRoute('performance-evaluation/evaluations/delete', ['id' => $record['uuid'] ]);
8182 eleazar 200
 
7897 eleazar 201
                    $item = [
1384 efrain 202
                        'last_date' => $last_date,
203
                        'form' => $record['form'],
8083 eleazar 204
                        'first_name' => $test->first_name,
205
                        'last_name' => $test->last_name,
1384 efrain 206
                        'supervisor' => trim(trim($record['first_name']) . ' ' . trim($record['last_name'])) . ' (' . trim($record['email']) . ')',
207
                        'actions' => [
208
                            'link_delete' => $allowDelete ? $link_delete : '',
209
                        ]
210
                    ];
8184 eleazar 211
                    if($testSelf) {
8220 eleazar 212
                        $item['actions']['link_report_self'] = $this->url()->fromRoute('performance-evaluation/evaluations/report-self', ['id' => $record['uuid'] ]);
8182 eleazar 213
                    } else{
8184 eleazar 214
                        $item['actions']['link_self'] = $this->url()->fromRoute('performance-evaluation/evaluations/self', ['id' => $record['uuid'] ]);
8182 eleazar 215
                    }
8188 eleazar 216
                    if($testBoth) {
8220 eleazar 217
                        $item['actions']['link_report_both'] = $this->url()->fromRoute('performance-evaluation/evaluations/report-both', ['id' => $record['uuid'] ]);
8188 eleazar 218
                    } else{
219
                        $item['actions']['link_both'] = $this->url()->fromRoute('performance-evaluation/evaluations/both', ['id' => $record['uuid'] ]);
220
                    }
221
                    if($testSupervisor) {
8220 eleazar 222
                        $item['actions']['link_report_superviser'] = $this->url()->fromRoute('performance-evaluation/evaluations/report-superviser', ['id' => $record['uuid'] ]);
8188 eleazar 223
                    } else{
224
                        $item['actions']['link_superviser'] = $this->url()->fromRoute('performance-evaluation/evaluations/superviser', ['id' => $record['uuid'] ]);
225
                    }
1384 efrain 226
 
227
                    array_push($items, $item);
228
                }
229
 
230
                $data['items'] = $items;
231
                $data['total'] = $paginator->getTotalItemCount();
232
 
233
 
234
                return new JsonModel([
7890 eleazar 235
                    'success' => true,
1384 efrain 236
                    'data' => $data
237
                ]);
238
            } else {
239
 
240
 
241
                $form = new PerformanceEvaluationEvaluationForm($this->adapter, $currentCompany->id);
8088 eleazar 242
                $formSelf = new PerformanceEvaluationEvaluationSelfForm($this->adapter, $currentCompany->id);
1384 efrain 243
 
244
 
245
                $this->layout()->setTemplate('layout/layout-backend');
246
                $viewModel = new ViewModel();
247
                $viewModel->setTemplate('leaders-linked/performance-evaluation-evaluations/index.phtml');
248
                $viewModel->setVariables([
249
                    'form' => $form,
8088 eleazar 250
                    'formSelf' => $formSelf,
1384 efrain 251
                ]);
252
 
253
                return $viewModel;
254
            }
255
        } else {
256
            return new JsonModel([
257
                'success' => false,
258
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
259
            ]);
7897 eleazar 260
 
1384 efrain 261
        }
7897 eleazar 262
        } catch (\Throwable $e) {
263
            $e->getMessage();
264
            return new JsonModel([
265
                'success' => false,
266
                'data' => $e
267
            ]);
268
        }
1384 efrain 269
    }
270
 
8068 eleazar 271
 
272
    public function emailAction() {
273
        $request = $this->getRequest();
274
        $currentUserPlugin = $this->plugin('currentUserPlugin');
275
        $currentCompany = $currentUserPlugin->getCompany();
276
        $currentUser = $currentUserPlugin->getUser();
277
 
278
        $email = $request->getQuery('email');
279
 
280
        if(!$email){
281
            $data = [
282
                'success' => false,
283
                'data' => 'ERROR_INVALID_PARAMETER'
284
            ];
285
 
286
            return new JsonModel($data);
287
        }
288
 
289
        $userMapper = UserMapper::getInstance($this->adapter);
290
        $user = $userMapper->fetchOneByEmail($email);
291
 
292
        if (!$user) {
293
            return new JsonModel([
294
                'success' => false,
295
                'data' => 'ERROR_USER_NOT_FOUND',
296
            ]);
297
        } else if($request->isGet()){
298
            $data = [
299
                'success' => true,
300
                'data' => [
301
                    'user_id' => $user->id,
302
                    'first_name' => $user->first_name,
303
                    'last_name' => $user->last_name,
304
 
305
                ]
306
            ];
307
            return new JsonModel($data);
308
 
309
        }else {
310
            $data = [
311
                'success' => false,
312
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
313
            ];
314
 
315
            return new JsonModel($data);
316
        }
317
    }
318
 
1384 efrain 319
    public function addAction() {
320
        $request = $this->getRequest();
321
 
322
        $currentUserPlugin = $this->plugin('currentUserPlugin');
323
        $currentUser = $currentUserPlugin->getUser();
324
        $currentCompany = $currentUserPlugin->getCompany();
325
 
326
        $request = $this->getRequest();
12094 eleazar 327
 
1384 efrain 328
 
329
        if ($request->isPost()) {
330
            $dataPost = $request->getPost()->toArray();
331
            $form = new  PerformanceEvaluationEvaluationForm($this->adapter, $currentCompany->id);
12094 eleazar 332
            $actual_date = time();
333
            $last_dt = strtotime($dataPost['last_date']);
12105 eleazar 334
                // return new JsonModel([
335
                //     'success' => false,
336
                //     'data' => $last_dt
337
                // ]);
338
                if($actual_date > $last_dt){
339
                    return new JsonModel([
340
                        'success' => false,
341
                        'data' => 'ERROR_UNAUTHORIZED'
342
                    ]);
343
                }
12091 eleazar 344
 
12087 eleazar 345
            $form->setData($dataPost);
12088 eleazar 346
 
1384 efrain 347
            if($form->isValid()) {
348
                $dataPost = (array) $form->getData();
12094 eleazar 349
 
1384 efrain 350
                $form_id = $dataPost['form_id'];
8072 eleazar 351
                $supervisor_id = $dataPost['supervisor_id'];
352
                $first_name= $dataPost['first_name'];
353
                $last_name= $dataPost['last_name'];
354
                $email= $dataPost['email'];
355
                $user_id= $dataPost['user_id'];
12107 eleazar 356
                $dt = $dataPost['last_date'];
12105 eleazar 357
 
1384 efrain 358
                $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
359
                $form = $formMapper->fetchOneByUuid($form_id);
360
                if (!$form) {
361
                    return new JsonModel([
362
                        'success' => true,
363
                        'data' => 'ERROR_FORM_NOT_FOUND'
364
                    ]);
365
                }
366
 
367
                if ($form->company_id != $currentCompany->id) {
368
                    return new JsonModel([
369
                        'success' => true,
370
                        'data' => 'ERROR_UNAUTHORIZED'
371
                    ]);
372
                }
373
 
374
 
375
                $userMapper = UserMapper::getInstance($this->adapter);
8073 eleazar 376
                $supervisor = $userMapper->fetchOneByUuid($supervisor_id);
1384 efrain 377
 
8072 eleazar 378
                if (!$supervisor) {
1384 efrain 379
                    return new JsonModel([
380
                        'success' => false,
381
                        'data' => 'ERROR_USER_NOT_FOUND'
382
                    ]);
383
                }
384
 
385
 
386
 
387
                $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
8074 eleazar 388
                $companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($form->company_id, $supervisor->id);
1384 efrain 389
                if (!$companyUser) {
390
                    return new JsonModel([
391
                        'success' => false,
392
                        'data' => 'ERROR_UNAUTHORIZED'
393
                    ]);
394
                }
395
 
396
 
397
                $test = new CompanyPerformanceEvaluationTest();
398
                $test->company_id = $form->company_id;
399
                $test->form_id = $form->id;
8072 eleazar 400
                $test->supervisor_id = $supervisor->id;
12107 eleazar 401
                $test->last_date = $dt;
8072 eleazar 402
                $test->first_name = $first_name;
403
                $test->last_name = $last_name;
404
                $test->email = $email;
8078 eleazar 405
                //$tst->user_id = $user_id;
1384 efrain 406
 
407
 
408
                $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
409
                $result = $testMapper->insert($test);
410
 
411
                if($result) {
412
                    $this->logger->info('Se agrego el Test de Performance ' . $form->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
413
 
414
                    $data = [
415
                        'success'   => true,
416
                        'data'   => 'LABEL_RECORD_ADDED'
417
                    ];
418
                } else {
419
                    $data = [
420
                        'success'   => false,
421
                        'data'      => $testMapper->getError()
422
                    ];
423
 
424
                }
425
 
426
                return new JsonModel($data);
427
 
428
            } else {
429
                $messages = [];
430
                $form_messages = (array) $form->getMessages();
431
                foreach($form_messages  as $fieldname => $field_messages)
432
                {
433
 
434
                    $messages[$fieldname] = array_values($field_messages);
435
                }
436
 
437
                return new JsonModel([
438
                    'success'   => false,
439
                    'data'   => $messages
440
                ]);
441
            }
442
 
443
 
444
 
445
        }
446
 
447
        return new JsonModel([
448
            'success' => false,
449
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
450
        ]);
451
    }
8087 eleazar 452
 
453
    public function selfAction() {
454
        $currentUserPlugin = $this->plugin('currentUserPlugin');
455
        $currentUser = $currentUserPlugin->getUser();
456
        $currentCompany = $currentUserPlugin->getCompany();
457
 
458
        $request = $this->getRequest();
459
 
460
        $uuid = $this->params()->fromRoute('id');
461
 
462
        if ($request->isGet()) {
463
            $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
464
            $test = $testMapper->fetchOneByUuid($uuid);
8094 eleazar 465
 
466
            $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
8097 eleazar 467
            $form = $formMapper->fetchOne($test->form_id);
8099 eleazar 468
 
8087 eleazar 469
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
470
            $jobDescription = $jobDescriptionMapper->fetchOne($form->job_description_id);
8101 eleazar 471
 
472
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
473
            $jobDescriptionCompetencies = $jobDescriptionCompetencyMapper->fetchByJobDescriptionId($jobDescription->id);
8102 eleazar 474
            // return new JsonModel([
475
            //     'success' => false,
476
            //     'data' => $jobDescriptionCompetencies
477
            // ]);
8087 eleazar 478
            $competencyTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
479
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
480
            $behaviorCompetencyMapper = BehaviorCompetencyMapper::getInstance($this->adapter);
481
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
1384 efrain 482
 
8087 eleazar 483
            $data = [
484
                'job_description' => [
485
                    'uuid' => $jobDescription->uuid,
486
                    'name' => $jobDescription->name,
487
                    'functions' => $jobDescription->functions,
488
                    'objectives' => $jobDescription->objectives,
489
                    'competencies' => []
490
                ],
491
                'self' => [
492
                    'points' => 0,
493
                    'comment' => '',
494
                ],
495
                'test' => $test,
496
            ];
497
 
498
            foreach ($jobDescriptionCompetencies as $jobDescriptionCompetency) {
499
                $competency = $competencyMapper->fetchOne($jobDescriptionCompetency->competency_id);
500
                $competencyType = $competencyTypeMapper->fetchOne($competency->competency_type_id);
501
                $behaviorCompetencies = $behaviorCompetencyMapper->fetchByCompetencyId($competency->id);
502
 
503
                $behaviors = [];
504
 
505
                foreach ($behaviorCompetencies as $behaviorCompetency) {
506
                    $behavior = $behaviorMapper->fetchOne($behaviorCompetency->behavior_id);
507
 
508
                    $behaviors []= [
509
                        'uuid' => $behavior->uuid,
510
                        'description' => $behavior->description,
511
                        'points' => 0,
512
                        'comment' => '',
513
                        'competency_uuid' => $competency->uuid,
514
                    ];
515
                }
516
 
517
                array_push($data['job_description']['competencies'], [
518
                    'competency_uuid' => $competency->uuid,
519
                    'competency_name' => $competency->name,
520
                    'competency_type_uuid' => $competencyType->uuid,
521
                    'competency_type_name' => $competencyType->name,
522
                    'behaviors' => $behaviors,
523
                ]);
524
            }
525
 
526
            return new JsonModel([
527
                'success' => true,
528
                'data' => $data
529
            ]);
530
 
531
        } else if($request->isPost()){
8168 eleazar 532
            try{
8087 eleazar 533
            $dataPost = $request->getPost()->toArray();
534
 
535
            $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
8162 eleazar 536
            $test = $testMapper->fetchOneByUuid($uuid);
8166 eleazar 537
 
8088 eleazar 538
            $formSelf = new PerformanceEvaluationEvaluationSelfForm($this->adapter, $currentCompany->id);
8167 eleazar 539
            $dataPost['first_name'] = $test->first_name;
540
            $dataPost['last_name'] = $test->last_name;
541
            $dataPost['email'] = $test->email;
8091 eleazar 542
            $formSelf->setData($dataPost);
8087 eleazar 543
 
8091 eleazar 544
            if ($formSelf->isValid()) {
545
                $dataPost = (array) $formSelf->getData();
8087 eleazar 546
 
547
                $hydrator = new ObjectPropertyHydrator();
548
                $performanceEvaluationTestSelf = new CompanyPerformanceEvaluationTestSelf();
549
                $hydrator->hydrate($dataPost, $performanceEvaluationTestSelf);
550
 
551
                $performanceEvaluationTestSelf->company_id = $currentCompany->id;
552
                $performanceEvaluationTestSelf->test_id = $test->id;
8171 eleazar 553
                $performanceEvaluationTestSelf->form_id = $test->form_id;
8173 eleazar 554
                $performanceEvaluationTestSelf->supervisor_id = $test->supervisor_id;
8087 eleazar 555
 
556
                $performanceEvaluationTestSelfMapper = CompanyPerformanceEvaluationTestSelfMapper::getInstance($this->adapter);
557
 
558
                $result = $performanceEvaluationTestSelfMapper->insert($performanceEvaluationTestSelf);
559
 
560
 
561
                if ($result) {
8174 eleazar 562
                    $this->logger->info('Se agrego la entrevista ' . $performanceEvaluationTestSelf->id, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
8087 eleazar 563
 
564
                    // Get record by id
565
                    $performanceEvaluationTestSelfMapper = CompanyPerformanceEvaluationTestSelfMapper::getInstance($this->adapter);
566
                    $record = $performanceEvaluationTestSelfMapper->fetchOne($performanceEvaluationTestSelf->id);
567
 
568
 
569
                    if ($record) {
570
 
571
                        $data = [
572
                            'success' => true,
573
                            'id' => $record->id,
574
                            'data' => 'LABEL_RECORD_ADDED'
575
                        ];
576
                    } else {
577
 
578
                        $data = [
579
                            'success' => false,
580
                            'data' => 'ERROR_RECORD_NOT_FOUND'
581
                        ];
582
                    }
583
                } else {
584
                    $data = [
585
                        'success' => false,
586
                        'data' => $performanceEvaluationTestSelfMapper->getError()
587
                    ];
588
                }
589
 
590
                return new JsonModel($data);
591
            } else {
592
                $messages = [];
8163 eleazar 593
                $form_messages = (array) $formSelf->getMessages();
8087 eleazar 594
                foreach ($form_messages as $fieldname => $field_messages) {
595
 
596
                    $messages[$fieldname] = array_values($field_messages);
597
                }
598
 
599
                return new JsonModel([
600
                    'success' => false,
601
                    'data' => $messages
602
                ]);
8168 eleazar 603
            }}catch (\Throwable $e) {
604
                $e->getMessage();
605
                return new JsonModel([
606
                    'success' => false,
607
                    'data' => $e
608
                ]);
8087 eleazar 609
            }
610
        } else {
611
            $data = [
612
                'success' => false,
613
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
614
            ];
615
 
616
            return new JsonModel($data);
617
        }
618
 
619
        return new JsonModel($data);
620
    }
8179 eleazar 621
 
622
    public function bothAction() {
623
        $currentUserPlugin = $this->plugin('currentUserPlugin');
624
        $currentUser = $currentUserPlugin->getUser();
625
        $currentCompany = $currentUserPlugin->getCompany();
626
 
627
        $request = $this->getRequest();
628
 
629
        $uuid = $this->params()->fromRoute('id');
630
 
631
        if ($request->isGet()) {
632
            $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
633
            $test = $testMapper->fetchOneByUuid($uuid);
634
 
635
            $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
636
            $form = $formMapper->fetchOne($test->form_id);
637
 
638
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
639
            $jobDescription = $jobDescriptionMapper->fetchOne($form->job_description_id);
640
 
641
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
642
            $jobDescriptionCompetencies = $jobDescriptionCompetencyMapper->fetchByJobDescriptionId($jobDescription->id);
643
            // return new JsonModel([
644
            //     'success' => false,
645
            //     'data' => $jobDescriptionCompetencies
646
            // ]);
647
            $competencyTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
648
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
649
            $behaviorCompetencyMapper = BehaviorCompetencyMapper::getInstance($this->adapter);
650
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
8087 eleazar 651
 
8179 eleazar 652
            $data = [
653
                'job_description' => [
654
                    'uuid' => $jobDescription->uuid,
655
                    'name' => $jobDescription->name,
656
                    'functions' => $jobDescription->functions,
657
                    'objectives' => $jobDescription->objectives,
658
                    'competencies' => []
659
                ],
660
                'both' => [
661
                    'points' => 0,
662
                    'comment' => '',
663
                ],
664
                'test' => $test,
665
            ];
666
 
667
            foreach ($jobDescriptionCompetencies as $jobDescriptionCompetency) {
668
                $competency = $competencyMapper->fetchOne($jobDescriptionCompetency->competency_id);
669
                $competencyType = $competencyTypeMapper->fetchOne($competency->competency_type_id);
670
                $behaviorCompetencies = $behaviorCompetencyMapper->fetchByCompetencyId($competency->id);
671
 
672
                $behaviors = [];
673
 
674
                foreach ($behaviorCompetencies as $behaviorCompetency) {
675
                    $behavior = $behaviorMapper->fetchOne($behaviorCompetency->behavior_id);
676
 
677
                    $behaviors []= [
678
                        'uuid' => $behavior->uuid,
679
                        'description' => $behavior->description,
680
                        'points' => 0,
681
                        'comment' => '',
682
                        'competency_uuid' => $competency->uuid,
683
                    ];
684
                }
685
 
686
                array_push($data['job_description']['competencies'], [
687
                    'competency_uuid' => $competency->uuid,
688
                    'competency_name' => $competency->name,
689
                    'competency_type_uuid' => $competencyType->uuid,
690
                    'competency_type_name' => $competencyType->name,
691
                    'behaviors' => $behaviors,
692
                ]);
693
            }
694
 
695
            return new JsonModel([
696
                'success' => true,
697
                'data' => $data
698
            ]);
699
 
700
        } else if($request->isPost()){
701
            try{
702
            $dataPost = $request->getPost()->toArray();
703
 
704
            $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
705
            $test = $testMapper->fetchOneByUuid($uuid);
706
 
707
            $formSelf = new PerformanceEvaluationEvaluationSelfForm($this->adapter, $currentCompany->id);
708
            $dataPost['first_name'] = $test->first_name;
709
            $dataPost['last_name'] = $test->last_name;
710
            $dataPost['email'] = $test->email;
711
            $formSelf->setData($dataPost);
712
 
713
            if ($formSelf->isValid()) {
714
                $dataPost = (array) $formSelf->getData();
715
 
716
                $hydrator = new ObjectPropertyHydrator();
717
                $performanceEvaluationTestBoth = new CompanyPerformanceEvaluationTestBoth();
718
                $hydrator->hydrate($dataPost, $performanceEvaluationTestBoth);
719
 
720
                $performanceEvaluationTestBoth->company_id = $currentCompany->id;
721
                $performanceEvaluationTestBoth->test_id = $test->id;
722
                $performanceEvaluationTestBoth->form_id = $test->form_id;
723
                $performanceEvaluationTestBoth->supervisor_id = $test->supervisor_id;
724
 
725
                $performanceEvaluationTestBothMapper = CompanyPerformanceEvaluationTestBothMapper::getInstance($this->adapter);
726
 
727
                $result = $performanceEvaluationTestBothMapper->insert($performanceEvaluationTestBoth);
728
 
729
 
730
                if ($result) {
731
                    $this->logger->info('Se agrego la entrevista ' . $performanceEvaluationTestBoth->id, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
732
 
733
                    // Get record by id
734
                    $performanceEvaluationTestBothMapper = CompanyPerformanceEvaluationTestBothMapper::getInstance($this->adapter);
735
                    $record = $performanceEvaluationTestBothMapper->fetchOne($performanceEvaluationTestBoth->id);
736
 
737
 
738
                    if ($record) {
739
 
740
                        $data = [
741
                            'success' => true,
742
                            'id' => $record->id,
743
                            'data' => 'LABEL_RECORD_ADDED'
744
                        ];
745
                    } else {
746
 
747
                        $data = [
748
                            'success' => false,
749
                            'data' => 'ERROR_RECORD_NOT_FOUND'
750
                        ];
751
                    }
752
                } else {
753
                    $data = [
754
                        'success' => false,
755
                        'data' => $performanceEvaluationTestBothMapper->getError()
756
                    ];
757
                }
758
 
759
                return new JsonModel($data);
760
            } else {
761
                $messages = [];
762
                $form_messages = (array) $formSelf->getMessages();
763
                foreach ($form_messages as $fieldname => $field_messages) {
764
 
765
                    $messages[$fieldname] = array_values($field_messages);
766
                }
767
 
768
                return new JsonModel([
769
                    'success' => false,
770
                    'data' => $messages
771
                ]);
772
            }}catch (\Throwable $e) {
773
                $e->getMessage();
774
                return new JsonModel([
775
                    'success' => false,
776
                    'data' => $e
777
                ]);
778
            }
779
        } else {
780
            $data = [
781
                'success' => false,
782
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
783
            ];
784
 
785
            return new JsonModel($data);
786
        }
787
 
788
        return new JsonModel($data);
789
    }
790
 
8181 eleazar 791
    public function superviserAction() {
8179 eleazar 792
        $currentUserPlugin = $this->plugin('currentUserPlugin');
793
        $currentUser = $currentUserPlugin->getUser();
794
        $currentCompany = $currentUserPlugin->getCompany();
795
 
796
        $request = $this->getRequest();
797
 
798
        $uuid = $this->params()->fromRoute('id');
799
 
800
        if ($request->isGet()) {
801
            $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
802
            $test = $testMapper->fetchOneByUuid($uuid);
803
 
804
            $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
805
            $form = $formMapper->fetchOne($test->form_id);
806
 
807
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
808
            $jobDescription = $jobDescriptionMapper->fetchOne($form->job_description_id);
809
 
810
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
811
            $jobDescriptionCompetencies = $jobDescriptionCompetencyMapper->fetchByJobDescriptionId($jobDescription->id);
812
            // return new JsonModel([
813
            //     'success' => false,
814
            //     'data' => $jobDescriptionCompetencies
815
            // ]);
816
            $competencyTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
817
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
818
            $behaviorCompetencyMapper = BehaviorCompetencyMapper::getInstance($this->adapter);
819
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
820
 
821
            $data = [
822
                'job_description' => [
823
                    'uuid' => $jobDescription->uuid,
824
                    'name' => $jobDescription->name,
825
                    'functions' => $jobDescription->functions,
826
                    'objectives' => $jobDescription->objectives,
827
                    'competencies' => []
828
                ],
829
                'supervisor' => [
830
                    'points' => 0,
831
                    'comment' => '',
832
                ],
833
                'test' => $test,
834
            ];
835
 
836
            foreach ($jobDescriptionCompetencies as $jobDescriptionCompetency) {
837
                $competency = $competencyMapper->fetchOne($jobDescriptionCompetency->competency_id);
838
                $competencyType = $competencyTypeMapper->fetchOne($competency->competency_type_id);
839
                $behaviorCompetencies = $behaviorCompetencyMapper->fetchByCompetencyId($competency->id);
840
 
841
                $behaviors = [];
842
 
843
                foreach ($behaviorCompetencies as $behaviorCompetency) {
844
                    $behavior = $behaviorMapper->fetchOne($behaviorCompetency->behavior_id);
845
 
846
                    $behaviors []= [
847
                        'uuid' => $behavior->uuid,
848
                        'description' => $behavior->description,
849
                        'points' => 0,
850
                        'comment' => '',
851
                        'competency_uuid' => $competency->uuid,
852
                    ];
853
                }
854
 
855
                array_push($data['job_description']['competencies'], [
856
                    'competency_uuid' => $competency->uuid,
857
                    'competency_name' => $competency->name,
858
                    'competency_type_uuid' => $competencyType->uuid,
859
                    'competency_type_name' => $competencyType->name,
860
                    'behaviors' => $behaviors,
861
                ]);
862
            }
863
 
864
            return new JsonModel([
865
                'success' => true,
866
                'data' => $data
867
            ]);
868
 
869
        } else if($request->isPost()){
870
            try{
871
            $dataPost = $request->getPost()->toArray();
872
 
873
            $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
874
            $test = $testMapper->fetchOneByUuid($uuid);
875
 
876
            $formSelf = new PerformanceEvaluationEvaluationSelfForm($this->adapter, $currentCompany->id);
877
            $dataPost['first_name'] = $test->first_name;
878
            $dataPost['last_name'] = $test->last_name;
879
            $dataPost['email'] = $test->email;
880
            $formSelf->setData($dataPost);
881
 
882
            if ($formSelf->isValid()) {
883
                $dataPost = (array) $formSelf->getData();
884
 
885
                $hydrator = new ObjectPropertyHydrator();
886
                $performanceEvaluationTestSupervisor = new CompanyPerformanceEvaluationTestSupervisor();
887
                $hydrator->hydrate($dataPost, $performanceEvaluationTestSupervisor);
888
 
889
                $performanceEvaluationTestSupervisor->company_id = $currentCompany->id;
890
                $performanceEvaluationTestSupervisor->test_id = $test->id;
891
                $performanceEvaluationTestSupervisor->form_id = $test->form_id;
892
                $performanceEvaluationTestSupervisor->supervisor_id = $test->supervisor_id;
893
 
894
                $performanceEvaluationTestSupervisorMapper = CompanyPerformanceEvaluationTestSupervisorMapper::getInstance($this->adapter);
895
 
896
                $result = $performanceEvaluationTestSupervisorMapper->insert($performanceEvaluationTestSupervisor);
897
 
898
 
899
                if ($result) {
900
                    $this->logger->info('Se agrego la entrevista ' . $performanceEvaluationTestSupervisor->id, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
901
 
902
                    // Get record by id
903
                    $performanceEvaluationTestSupervisorMapper = CompanyPerformanceEvaluationTestSupervisorMapper::getInstance($this->adapter);
904
                    $record = $performanceEvaluationTestSupervisorMapper->fetchOne($performanceEvaluationTestSupervisor->id);
905
 
906
 
907
                    if ($record) {
908
 
909
                        $data = [
910
                            'success' => true,
911
                            'id' => $record->id,
912
                            'data' => 'LABEL_RECORD_ADDED'
913
                        ];
914
                    } else {
915
 
916
                        $data = [
917
                            'success' => false,
918
                            'data' => 'ERROR_RECORD_NOT_FOUND'
919
                        ];
920
                    }
921
                } else {
922
                    $data = [
923
                        'success' => false,
924
                        'data' => $performanceEvaluationTestSupervisorMapper->getError()
925
                    ];
926
                }
927
 
928
                return new JsonModel($data);
929
            } else {
930
                $messages = [];
931
                $form_messages = (array) $formSelf->getMessages();
932
                foreach ($form_messages as $fieldname => $field_messages) {
933
 
934
                    $messages[$fieldname] = array_values($field_messages);
935
                }
936
 
937
                return new JsonModel([
938
                    'success' => false,
939
                    'data' => $messages
940
                ]);
941
            }}catch (\Throwable $e) {
942
                $e->getMessage();
943
                return new JsonModel([
944
                    'success' => false,
945
                    'data' => $e
946
                ]);
947
            }
948
        } else {
949
            $data = [
950
                'success' => false,
951
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
952
            ];
953
 
954
            return new JsonModel($data);
955
        }
956
 
957
        return new JsonModel($data);
958
    }
959
 
1384 efrain 960
    public function editAction() {
961
        $request = $this->getRequest();
962
 
963
        $currentUserPlugin = $this->plugin('currentUserPlugin');
964
        $currentUser = $currentUserPlugin->getUser();
965
        $currentCompany = $currentUserPlugin->getCompany();
966
 
967
        $request = $this->getRequest();
968
        $id = $this->params()->fromRoute('id');
969
 
970
        $formTestMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
971
        $formTest =  $formTestMapper->fetchOneByUuid($id);
8080 eleazar 972
 
1384 efrain 973
        if (!$formTest) {
974
            return new JsonModel([
975
                'success' => true,
976
                'data' => 'ERROR_RECORD_NOT_FOUND'
977
            ]);
978
        }
979
 
980
        if ($formTest->company_id != $currentCompany->id) {
981
            return new JsonModel([
982
                'success' => true,
983
                'data' => 'ERROR_UNAUTHORIZED'
984
            ]);
985
        }
986
 
987
 
988
        $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
989
        $companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($formTest->company_id, $currentUser->id);
990
        if (!$companyUser) {
991
            return new JsonModel([
992
                'success' => false,
993
                'data' => 'ERROR_UNAUTHORIZED'
994
            ]);
995
        }
996
 
997
        if ($request->isGet()) {
998
 
999
            $dt = \DateTime::createFromFormat('Y-m-d', $formTest->last_date);
1000
 
1001
            $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
1002
            $form = $formMapper->fetchOne($formTest->form_id);
1003
 
1004
            $userMapper = UserMapper::getInstance($this->adapter);
7785 eleazar 1005
            $user = $userMapper->fetchOne($formTest->supervisor_id);
1384 efrain 1006
 
1007
            $data = [
1008
                'success'   => true,
1009
                'data'   => [
1010
                    'last_date' => $dt->format('d/m/Y'),
1011
                    'form' => $form->uuid,
1012
                    'supervisor' => $user->uuid,
1013
                ]
1014
            ];
1015
 
1016
            return new JsonModel($data);
1017
 
1018
 
1019
 
1020
        } else if ($request->isPost()) {
1021
 
1022
 
1023
            $dataPost = $request->getPost()->toArray();
1024
            $form = new  PerformanceEvaluationEvaluationForm($this->adapter, $currentCompany->id);
1025
            $form->setData($dataPost);
1026
 
1027
            if($form->isValid()) {
1028
                $dataPost = (array) $form->getData();
1029
 
1030
                $form_id = $dataPost['form_id'];
1031
                $user_id = $dataPost['supervisor_id'];
1032
                $dt = \DateTime::createFromFormat('d/m/Y', $dataPost['last_date']);
1033
                $last_date = $dt->format('Y-m-d');
1034
 
1035
                $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
1036
                $form = $formMapper->fetchOneByUuid($form_id);
1037
                if (!$form) {
1038
                    return new JsonModel([
1039
                        'success' => true,
1040
                        'data' => 'ERROR_FORM_NOT_FOUND'
1041
                    ]);
1042
                }
1043
 
1044
                if ($form->company_id != $currentCompany->id) {
1045
                    return new JsonModel([
1046
                        'success' => true,
1047
                        'data' => 'ERROR_UNAUTHORIZED'
1048
                    ]);
1049
                }
1050
 
1051
 
1052
                $userMapper = UserMapper::getInstance($this->adapter);
1053
                $user = $userMapper->fetchOneByUuid($user_id);
1054
 
1055
                if (!$user) {
1056
                    return new JsonModel([
1057
                        'success' => false,
1058
                        'data' => 'ERROR_USER_NOT_FOUND'
1059
                    ]);
1060
                }
1061
 
1062
 
1063
 
1064
                $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
1065
                $companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($form->company_id, $user->id);
1066
                if (!$companyUser) {
1067
                    return new JsonModel([
1068
                        'success' => false,
1069
                        'data' => 'ERROR_UNAUTHORIZED'
1070
                    ]);
1071
                }
1072
 
1073
                $formTest->supervisor_id = $user->id;
1074
                $formTest->last_date = $last_date;
1075
 
1076
                $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1077
                $result = $testMapper->update($formTest);
1078
 
1079
                if($result) {
1080
                    $this->logger->info('Se actualizo el Test de Performance ' . $form->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1081
 
1082
                    $data = [
1083
                        'success'   => true,
1084
                        'data'   => 'LABEL_RECORD_UPDATED'
1085
                    ];
1086
                } else {
1087
                    $data = [
1088
                        'success'   => false,
1089
                        'data'      => $testMapper->getError()
1090
                    ];
1091
 
1092
                }
1093
 
1094
                return new JsonModel($data);
1095
 
1096
            } else {
1097
                $messages = [];
1098
                $form_messages = (array) $form->getMessages();
1099
                foreach($form_messages  as $fieldname => $field_messages)
1100
                {
1101
 
1102
                    $messages[$fieldname] = array_values($field_messages);
1103
                }
1104
 
1105
                return new JsonModel([
1106
                    'success'   => false,
1107
                    'data'   => $messages
1108
                ]);
1109
            }
1110
        }
1111
 
1112
        return new JsonModel([
1113
            'success' => false,
1114
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1115
        ]);
1116
    }
1117
 
1118
    public function deleteAction() {
1119
        $request = $this->getRequest();
1120
 
1121
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1122
        $currentUser = $currentUserPlugin->getUser();
1123
        $currentCompany = $currentUserPlugin->getCompany();
1124
 
1125
        $request = $this->getRequest();
1126
        $id = $this->params()->fromRoute('id');
1127
 
1128
        $formTestMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1129
        $formTest =  $formTestMapper->fetchOneByUuid($id);
1130
        if (!$formTest) {
1131
            return new JsonModel([
1132
                'success' => true,
1133
                'data' => 'ERROR_RECORD_NOT_FOUND'
1134
            ]);
1135
        }
1136
 
1137
        if ($formTest->company_id != $currentCompany->id) {
1138
            return new JsonModel([
1139
                'success' => true,
1140
                'data' => 'ERROR_UNAUTHORIZED'
1141
            ]);
1142
        }
1143
 
1144
 
1145
        $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
1146
        $companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($formTest->company_id, $currentUser->id);
1147
        if (!$companyUser) {
1148
            return new JsonModel([
1149
                'success' => false,
1150
                'data' => 'ERROR_UNAUTHORIZED'
1151
            ]);
1152
        }
1153
 
1154
        if ($request->isPost()) {
1155
 
1156
 
1157
            $result = $formTestMapper->delete($formTest);
1158
 
1159
            if ($result) {
1160
 
1161
                return new JsonModel([
1162
                    'success' => true,
1163
                    'data' => 'LABEL_PERFORMANCE_TEST_DELETED',
1164
                ]);
1165
            } else {
1166
 
1167
                return new JsonModel([
1168
                    'success' => false,
1169
                    'data' => $formTestMapper->getError()
1170
                ]);
1171
            }
1172
        }
1173
 
1174
        return new JsonModel([
1175
            'success' => false,
1176
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1177
        ]);
1178
    }
1179
 
8179 eleazar 1180
    public function reportSelfAction() {
8167 eleazar 1181
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1182
        $currentUser = $currentUserPlugin->getUser();
1183
        $currentCompany = $currentUserPlugin->getCompany();
1184
 
1185
        $uuid = $this->params()->fromRoute('id');
1186
 
1187
        $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1188
        $test = $testMapper->fetchOneByUuid($uuid);
8194 eleazar 1189
 
1190
        $testSelfMapper = CompanyPerformanceEvaluationTestSelfMapper::getInstance($this->adapter);
1191
        $testSelf = $testSelfMapper->fetchOneByTestId($test->id);
8207 eleazar 1192
 
8196 eleazar 1193
        $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
1194
        $form = $formMapper->fetchOne($test->form_id);
8199 eleazar 1195
 
8167 eleazar 1196
        if (!$form) {
1197
            return new JsonModel([
1198
                'success' => false,
1199
                'data' => 'ERROR_FORM_EVALUATION_NOT_FOUND'
1200
            ]);
1201
        }
1202
 
1203
        $request = $this->getRequest();
1204
        if ($request->isGet()) {
1205
            //Competencies
1206
 
1207
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
1208
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
1209
            $competenceTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
1210
            $behaviorCompetencyMapper = BehaviorCompetencyMapper::getInstance($this->adapter);
1211
            $jobDescriptionBehaviorCompetencyMapper = JobDescriptionBehaviorCompetencyMapper::getInstance($this->adapter);
1212
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
1213
 
1214
            $competencies = [];
1215
 
1216
            $jobDescriptionCompetency = $jobDescriptionCompetencyMapper->fetchByJobDescriptionId($form->job_description_id);
1217
 
8179 eleazar 1218
            $content = json_decode($testSelf->content, true);
8167 eleazar 1219
 
1220
            foreach ($jobDescriptionCompetency as $record) {
1221
 
1222
                $competency = $competencyMapper->fetchOne($record->competency_id);
1223
                $competenceType = $competenceTypeMapper->fetchOne($competency->competency_type_id);
1224
 
1225
                if ($competency && $competenceType) {
1226
 
1227
                    $behaviorCompetencies = $behaviorCompetencyMapper->fetchByCompetencyId($competency->id);
1228
                    $behaviors = [];
1229
 
1230
                    foreach ($behaviorCompetencies as $rows) {
1231
 
1232
                        $behavior = $behaviorMapper->fetchOne($rows->behavior_id);
8179 eleazar 1233
                        $jobDescriptionBehaviorCompetency = $jobDescriptionBehaviorCompetencyMapper->fetchOneByBehavior($form->job_description_id, $record->competency_id, $rows->behavior_id);
8167 eleazar 1234
 
1235
                        if ($behavior && $jobDescriptionBehaviorCompetency) {
1236
                            $rowData = [
1237
                                'description' => $behavior->description,
1238
                                'level' => $jobDescriptionBehaviorCompetency->level,
1239
                                'comment' => '',
1240
                                'evaluation' => '',
1241
 
1242
                            ];
1243
 
1244
                            foreach($content as $eval) {
1245
                                if ($eval['competencyUuid'] == $competency->uuid &&
1246
                                    $eval['behaviorUuid'] == $behavior->uuid) {
1247
 
1248
                                    $rowData['comment'] = $eval['comment'];
1249
                                    $rowData['evaluation'] = $eval['evaluation'];
1250
 
1251
 
1252
                                    break;
1253
                                }
1254
                            }
1255
 
1256
                            $behaviors []= $rowData;
1257
                        }
1258
                    }
1259
 
1260
                    array_push($competencies, [
1261
                        'name' => $competency->name,
1262
                        'description' => $competency->description,
1263
                        'type' => $competenceType->name,
1264
                        'behaviors' => $behaviors
1265
                    ]);
1266
                }
1267
            }
1268
 
8230 eleazar 1269
            return $this->renderSelfPDF($currentCompany, $testSelf, $competencies);
8167 eleazar 1270
        }
1271
 
1272
        return new JsonModel([
1273
            'success' => false,
1274
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1275
        ]);
1276
    }
1277
 
8179 eleazar 1278
      /**
1279
     * Render PDF
1280
     * @param Company $currentCompany
1281
     * @param recruitmentSelectionInterview $interviewEvaluation
1282
     * @param array $competencies
1283
     * @return mixed
1284
     */
8230 eleazar 1285
    public function renderSelfPDF($currentCompany, $testSelf, $competencies) {
8179 eleazar 1286
 
1287
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1288
        $currentUser = $currentUserPlugin->getUser();
1289
 
1290
        //Generate New PDF
1291
        $pdf = new InterviewPDF();
1292
 
1293
        $pdf->header = '';
1294
        $pdf->footer = '';
1295
 
1296
        if ($currentCompany) {
1297
            //get company Data
1298
            $companyMapper = CompanyMapper::getInstance($this->adapter);
1299
            $company = $companyMapper->fetchOne($currentCompany->id);
1300
 
1301
            $target_path = $this->config['leaderslinked.fullpath.company'] . DIRECTORY_SEPARATOR . $company->uuid;
1302
 
1303
            $pdf->header = $company->header ? $target_path . DIRECTORY_SEPARATOR . $company->header : '';
1304
            $pdf->footer = $company->footer ? $target_path . DIRECTORY_SEPARATOR . $company->footer : '';
1305
        }
1306
 
1307
        $pdf->SetMargins(10, 0, 10);
1308
 
1309
        $pdf->AliasNbPages();
1310
        $pdf->AddPage();
1311
 
1312
        $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1313
        $test = $testMapper->fetchOne($testSelf->test_id);
1314
 
1315
        $userMapper = UserMapper::getInstance($this->adapter);
8206 eleazar 1316
        $supervisor = $userMapper->fetchOne($testSelf->supervisor_id);
8179 eleazar 1317
 
1318
        switch ($testSelf->points) {
1319
            case "0":
1320
                $points = "Sugerir otro cargo";
1321
                break;
1322
            case "1":
1323
                $points = "25%";
1324
                break;
1325
            case "2":
1326
                $points = "50%";
1327
                break;
1328
            case "3":
1329
                $points = "75%";
1330
                break;
1331
            case "4":
1332
                $points = "100%";
1333
                break;
1334
            default :
1335
                $points = "ERROR";
1336
                break;
1337
        }
1338
 
1339
        $rows = [
1340
            array(
1341
                'title' => 'Nombre Evaluado: ',
1342
                'content' => $testSelf ? ' ' . $testSelf->first_name . ' ' . $testSelf->last_name : 'No Aplica'
1343
            ),
1344
            array(
1345
                'title' => 'Supervisado por: ',
1346
                'content' => $supervisor ? ' ' . $supervisor->first_name . ' ' . $supervisor->last_name : ' No Aplica '
1347
            ),
1348
            array(
1349
                'title' => 'Comentarios del supervisor: ',
1350
                'content' => $testSelf ? ' ' . $testSelf->comment : 'No Aplica'
1351
            ),
1352
            array(
9429 eleazar 1353
                'title' => 'Porcentage',
8179 eleazar 1354
                'content' => $points
1355
            )
1356
        ];
1357
 
1358
        $pdf->borderTable('DATOS DE LA ENTREVISTA', $rows);
1359
 
1360
        $sections = json_decode($testSelf->content, true);
1361
        /*
1362
                for ($s = 0; $s < count($sections); $s++) {
1363
 
1364
                    $pdf->singleTable($sections[$s]['title'], [
1365
                        array(
1366
                            'content' => $sections[$s]['type'] != 'multiple' ? $sections[$s]['text'] : ''
1367
                    )]);
1368
 
1369
                    if ($sections[$s]['type'] == 'multiple') {
1370
 
1371
                        $pdf->titleOptionTable($sections[$s]['text']);
1372
 
1373
                        for ($o = 0; $o < count($sections[$s]['options']); $o++) {
1374
 
1375
                            $pdf->optionTable($sections[$s]['options'][$o]['title']);
1376
                        }
1377
                        $pdf->Ln();
1378
                    }
1379
                    if ($s % 2 == 0 && $s > 1) {
1380
                        $pdf->AddPage();
1381
                    }
1382
                }*/
1383
 
1384
        // Competencies
1385
        if (count($competencies) != 0) {
1386
 
1387
            // add new page
1388
 
1389
            $pdf->AddPage();
1390
 
1391
            $competencies_header[] = array('content' => 'Indique el nivel de desempeño del evaluado en relación a sus conductas y actitudes frente a cada valor, según la clasificación siguiente:');
1392
 
1393
            $pdf->singleTable('Anexo de valores:', $competencies_header);
1394
 
1395
 
1396
            // Add scale section
1397
            $pdf->sectionScale();
1398
 
1399
            $i = 0;
1400
 
1401
            foreach ($competencies as $record) {
1402
 
1403
                $i = $i + 1;
1404
 
1405
                $pdf->competencyTable($i, $record);
1406
 
1407
                if ($i % 3 == 0 && $i < count($competencies)) {
1408
                    $pdf->AddPage();
1409
                }
1410
            }
1411
 
1412
        }
1413
 
1414
        return $pdf->Output();
1415
 
1416
    }
1417
 
8230 eleazar 1418
    public function reportBothAction() {
1419
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1420
        $currentUser = $currentUserPlugin->getUser();
1421
        $currentCompany = $currentUserPlugin->getCompany();
1422
 
1423
        $uuid = $this->params()->fromRoute('id');
1424
 
1425
        $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1426
        $test = $testMapper->fetchOneByUuid($uuid);
1427
 
1428
        $testBothMapper = CompanyPerformanceEvaluationTestBothMapper::getInstance($this->adapter);
1429
        $testBoth = $testBothMapper->fetchOneByTestId($test->id);
1430
 
1431
        $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
1432
        $form = $formMapper->fetchOne($test->form_id);
1433
 
1434
        if (!$form) {
1435
            return new JsonModel([
1436
                'success' => false,
1437
                'data' => 'ERROR_FORM_EVALUATION_NOT_FOUND'
1438
            ]);
1439
        }
1440
 
1441
        $request = $this->getRequest();
1442
        if ($request->isGet()) {
1443
            //Competencies
1444
 
1445
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
1446
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
1447
            $competenceTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
1448
            $behaviorCompetencyMapper = BehaviorCompetencyMapper::getInstance($this->adapter);
1449
            $jobDescriptionBehaviorCompetencyMapper = JobDescriptionBehaviorCompetencyMapper::getInstance($this->adapter);
1450
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
1451
 
1452
            $competencies = [];
1453
 
1454
            $jobDescriptionCompetency = $jobDescriptionCompetencyMapper->fetchByJobDescriptionId($form->job_description_id);
1455
 
1456
            $content = json_decode($testBoth->content, true);
1457
 
1458
            foreach ($jobDescriptionCompetency as $record) {
1459
 
1460
                $competency = $competencyMapper->fetchOne($record->competency_id);
1461
                $competenceType = $competenceTypeMapper->fetchOne($competency->competency_type_id);
1462
 
1463
                if ($competency && $competenceType) {
1464
 
1465
                    $behaviorCompetencies = $behaviorCompetencyMapper->fetchByCompetencyId($competency->id);
1466
                    $behaviors = [];
1467
 
1468
                    foreach ($behaviorCompetencies as $rows) {
1469
 
1470
                        $behavior = $behaviorMapper->fetchOne($rows->behavior_id);
1471
                        $jobDescriptionBehaviorCompetency = $jobDescriptionBehaviorCompetencyMapper->fetchOneByBehavior($form->job_description_id, $record->competency_id, $rows->behavior_id);
1472
 
1473
                        if ($behavior && $jobDescriptionBehaviorCompetency) {
1474
                            $rowData = [
1475
                                'description' => $behavior->description,
1476
                                'level' => $jobDescriptionBehaviorCompetency->level,
1477
                                'comment' => '',
1478
                                'evaluation' => '',
1479
 
1480
                            ];
1481
 
1482
                            foreach($content as $eval) {
1483
                                if ($eval['competencyUuid'] == $competency->uuid &&
1484
                                    $eval['behaviorUuid'] == $behavior->uuid) {
1485
 
1486
                                    $rowData['comment'] = $eval['comment'];
1487
                                    $rowData['evaluation'] = $eval['evaluation'];
1488
 
1489
 
1490
                                    break;
1491
                                }
1492
                            }
1493
 
1494
                            $behaviors []= $rowData;
1495
                        }
1496
                    }
1497
 
1498
                    array_push($competencies, [
1499
                        'name' => $competency->name,
1500
                        'description' => $competency->description,
1501
                        'type' => $competenceType->name,
1502
                        'behaviors' => $behaviors
1503
                    ]);
1504
                }
1505
            }
1506
 
1507
            return $this->renderBothPDF($currentCompany, $testBoth, $competencies);
1508
        }
1509
 
1510
        return new JsonModel([
1511
            'success' => false,
1512
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1513
        ]);
1514
    }
1515
 
1516
    public function renderBothPDF($currentCompany, $testBoth, $competencies) {
1517
 
1518
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1519
        $currentUser = $currentUserPlugin->getUser();
1520
 
1521
        //Generate New PDF
1522
        $pdf = new InterviewPDF();
1523
 
1524
        $pdf->header = '';
1525
        $pdf->footer = '';
1526
 
1527
        if ($currentCompany) {
1528
            //get company Data
1529
            $companyMapper = CompanyMapper::getInstance($this->adapter);
1530
            $company = $companyMapper->fetchOne($currentCompany->id);
1531
 
1532
            $target_path = $this->config['leaderslinked.fullpath.company'] . DIRECTORY_SEPARATOR . $company->uuid;
1533
 
1534
            $pdf->header = $company->header ? $target_path . DIRECTORY_SEPARATOR . $company->header : '';
1535
            $pdf->footer = $company->footer ? $target_path . DIRECTORY_SEPARATOR . $company->footer : '';
1536
        }
1537
 
1538
        $pdf->SetMargins(10, 0, 10);
1539
 
1540
        $pdf->AliasNbPages();
1541
        $pdf->AddPage();
1542
 
1543
        $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1544
        $test = $testMapper->fetchOne($testBoth->test_id);
1545
 
1546
        $userMapper = UserMapper::getInstance($this->adapter);
1547
        $supervisor = $userMapper->fetchOne($testBoth->supervisor_id);
1548
 
1549
        switch ($testBoth->points) {
1550
            case "0":
1551
                $points = "Sugerir otro cargo";
1552
                break;
1553
            case "1":
1554
                $points = "25%";
1555
                break;
1556
            case "2":
1557
                $points = "50%";
1558
                break;
1559
            case "3":
1560
                $points = "75%";
1561
                break;
1562
            case "4":
1563
                $points = "100%";
1564
                break;
1565
            default :
1566
                $points = "ERROR";
1567
                break;
1568
        }
1569
 
1570
        $rows = [
1571
            array(
1572
                'title' => 'Nombre Evaluado: ',
1573
                'content' => $testBoth ? ' ' . $testBoth->first_name . ' ' . $testBoth->last_name : 'No Aplica'
1574
            ),
1575
            array(
1576
                'title' => 'Supervisado por: ',
1577
                'content' => $supervisor ? ' ' . $supervisor->first_name . ' ' . $supervisor->last_name : ' No Aplica '
1578
            ),
1579
            array(
1580
                'title' => 'Comentarios del supervisor: ',
1581
                'content' => $testBoth ? ' ' . $testBoth->comment : 'No Aplica'
1582
            ),
1583
            array(
1584
                'title' => 'Porcentage de adaptibilidad ',
1585
                'content' => $points
1586
            )
1587
        ];
1588
 
1589
        $pdf->borderTable('DATOS DE LA ENTREVISTA', $rows);
1590
 
1591
        $sections = json_decode($testBoth->content, true);
1592
        /*
1593
                for ($s = 0; $s < count($sections); $s++) {
1594
 
1595
                    $pdf->singleTable($sections[$s]['title'], [
1596
                        array(
1597
                            'content' => $sections[$s]['type'] != 'multiple' ? $sections[$s]['text'] : ''
1598
                    )]);
1599
 
1600
                    if ($sections[$s]['type'] == 'multiple') {
1601
 
1602
                        $pdf->titleOptionTable($sections[$s]['text']);
1603
 
1604
                        for ($o = 0; $o < count($sections[$s]['options']); $o++) {
1605
 
1606
                            $pdf->optionTable($sections[$s]['options'][$o]['title']);
1607
                        }
1608
                        $pdf->Ln();
1609
                    }
1610
                    if ($s % 2 == 0 && $s > 1) {
1611
                        $pdf->AddPage();
1612
                    }
1613
                }*/
1614
 
1615
        // Competencies
1616
        if (count($competencies) != 0) {
1617
 
1618
            // add new page
1619
 
1620
            $pdf->AddPage();
1621
 
1622
            $competencies_header[] = array('content' => 'Indique el nivel de desempeño del evaluado en relación a sus conductas y actitudes frente a cada valor, según la clasificación siguiente:');
1623
 
1624
            $pdf->singleTable('Anexo de valores:', $competencies_header);
1625
 
1626
 
1627
            // Add scale section
1628
            $pdf->sectionScale();
1629
 
1630
            $i = 0;
1631
 
1632
            foreach ($competencies as $record) {
1633
 
1634
                $i = $i + 1;
1635
 
1636
                $pdf->competencyTable($i, $record);
1637
 
1638
                if ($i % 3 == 0 && $i < count($competencies)) {
1639
                    $pdf->AddPage();
1640
                }
1641
            }
1642
 
1643
        }
1644
 
1645
        return $pdf->Output();
1646
 
1647
    }
1648
 
1649
    public function reportSupervisorAction() {
1650
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1651
        $currentUser = $currentUserPlugin->getUser();
1652
        $currentCompany = $currentUserPlugin->getCompany();
1653
 
1654
        $uuid = $this->params()->fromRoute('id');
1655
 
1656
        $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1657
        $test = $testMapper->fetchOneByUuid($uuid);
1658
 
1659
        $testSupervisorMapper = CompanyPerformanceEvaluationTestSupervisorMapper::getInstance($this->adapter);
1660
        $testSupervisor = $testSupervisorMapper->fetchOneByTestId($test->id);
1661
 
1662
        $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
1663
        $form = $formMapper->fetchOne($test->form_id);
1664
 
1665
        if (!$form) {
1666
            return new JsonModel([
1667
                'success' => false,
1668
                'data' => 'ERROR_FORM_EVALUATION_NOT_FOUND'
1669
            ]);
1670
        }
1671
 
1672
        $request = $this->getRequest();
1673
        if ($request->isGet()) {
1674
            //Competencies
1675
 
1676
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
1677
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
1678
            $competenceTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
1679
            $behaviorCompetencyMapper = BehaviorCompetencyMapper::getInstance($this->adapter);
1680
            $jobDescriptionBehaviorCompetencyMapper = JobDescriptionBehaviorCompetencyMapper::getInstance($this->adapter);
1681
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
1682
 
1683
            $competencies = [];
1684
 
1685
            $jobDescriptionCompetency = $jobDescriptionCompetencyMapper->fetchByJobDescriptionId($form->job_description_id);
1686
 
1687
            $content = json_decode($testSupervisor->content, true);
1688
 
1689
            foreach ($jobDescriptionCompetency as $record) {
1690
 
1691
                $competency = $competencyMapper->fetchOne($record->competency_id);
1692
                $competenceType = $competenceTypeMapper->fetchOne($competency->competency_type_id);
1693
 
1694
                if ($competency && $competenceType) {
1695
 
1696
                    $behaviorCompetencies = $behaviorCompetencyMapper->fetchByCompetencyId($competency->id);
1697
                    $behaviors = [];
1698
 
1699
                    foreach ($behaviorCompetencies as $rows) {
1700
 
1701
                        $behavior = $behaviorMapper->fetchOne($rows->behavior_id);
1702
                        $jobDescriptionBehaviorCompetency = $jobDescriptionBehaviorCompetencyMapper->fetchOneByBehavior($form->job_description_id, $record->competency_id, $rows->behavior_id);
1703
 
1704
                        if ($behavior && $jobDescriptionBehaviorCompetency) {
1705
                            $rowData = [
1706
                                'description' => $behavior->description,
1707
                                'level' => $jobDescriptionBehaviorCompetency->level,
1708
                                'comment' => '',
1709
                                'evaluation' => '',
1710
 
1711
                            ];
1712
 
1713
                            foreach($content as $eval) {
1714
                                if ($eval['competencyUuid'] == $competency->uuid &&
1715
                                    $eval['behaviorUuid'] == $behavior->uuid) {
1716
 
1717
                                    $rowData['comment'] = $eval['comment'];
1718
                                    $rowData['evaluation'] = $eval['evaluation'];
1719
 
1720
 
1721
                                    break;
1722
                                }
1723
                            }
1724
 
1725
                            $behaviors []= $rowData;
1726
                        }
1727
                    }
1728
 
1729
                    array_push($competencies, [
1730
                        'name' => $competency->name,
1731
                        'description' => $competency->description,
1732
                        'type' => $competenceType->name,
1733
                        'behaviors' => $behaviors
1734
                    ]);
1735
                }
1736
            }
1737
 
1738
            return $this->renderSupervisorPDF($currentCompany, $testSupervisor, $competencies);
1739
        }
1740
 
1741
        return new JsonModel([
1742
            'success' => false,
1743
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1744
        ]);
1745
    }
1746
 
1747
      /**
1748
     * Render PDF
1749
     * @param Company $currentCompany
1750
     * @param recruitmentSelectionInterview $interviewEvaluation
1751
     * @param array $competencies
1752
     * @return mixed
1753
     */
1754
    public function renderSupervisorPDF($currentCompany, $testSupervisor, $competencies) {
1755
 
1756
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1757
        $currentUser = $currentUserPlugin->getUser();
1758
 
1759
        //Generate New PDF
1760
        $pdf = new InterviewPDF();
1761
 
1762
        $pdf->header = '';
1763
        $pdf->footer = '';
1764
 
1765
        if ($currentCompany) {
1766
            //get company Data
1767
            $companyMapper = CompanyMapper::getInstance($this->adapter);
1768
            $company = $companyMapper->fetchOne($currentCompany->id);
1769
 
1770
            $target_path = $this->config['leaderslinked.fullpath.company'] . DIRECTORY_SEPARATOR . $company->uuid;
1771
 
1772
            $pdf->header = $company->header ? $target_path . DIRECTORY_SEPARATOR . $company->header : '';
1773
            $pdf->footer = $company->footer ? $target_path . DIRECTORY_SEPARATOR . $company->footer : '';
1774
        }
1775
 
1776
        $pdf->SetMargins(10, 0, 10);
1777
 
1778
        $pdf->AliasNbPages();
1779
        $pdf->AddPage();
1780
 
1781
        $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1782
        $test = $testMapper->fetchOne($testSupervisor->test_id);
1783
 
1784
        $userMapper = UserMapper::getInstance($this->adapter);
1785
        $supervisor = $userMapper->fetchOne($testSupervisor->supervisor_id);
1786
 
1787
        switch ($testSupervisor->points) {
1788
            case "0":
1789
                $points = "Sugerir otro cargo";
1790
                break;
1791
            case "1":
1792
                $points = "25%";
1793
                break;
1794
            case "2":
1795
                $points = "50%";
1796
                break;
1797
            case "3":
1798
                $points = "75%";
1799
                break;
1800
            case "4":
1801
                $points = "100%";
1802
                break;
1803
            default :
1804
                $points = "ERROR";
1805
                break;
1806
        }
1807
 
1808
        $rows = [
1809
            array(
1810
                'title' => 'Nombre Evaluado: ',
1811
                'content' => $testSupervisor ? ' ' . $testSupervisor->first_name . ' ' . $testSupervisor->last_name : 'No Aplica'
1812
            ),
1813
            array(
1814
                'title' => 'Supervisado por: ',
1815
                'content' => $supervisor ? ' ' . $supervisor->first_name . ' ' . $supervisor->last_name : ' No Aplica '
1816
            ),
1817
            array(
1818
                'title' => 'Comentarios del supervisor: ',
1819
                'content' => $testSupervisor ? ' ' . $testSupervisor->comment : 'No Aplica'
1820
            ),
1821
            array(
1822
                'title' => 'Porcentage de adaptibilidad ',
1823
                'content' => $points
1824
            )
1825
        ];
1826
 
1827
        $pdf->borderTable('DATOS DE LA ENTREVISTA', $rows);
1828
 
1829
        $sections = json_decode($testSupervisor->content, true);
1830
        /*
1831
                for ($s = 0; $s < count($sections); $s++) {
1832
 
1833
                    $pdf->singleTable($sections[$s]['title'], [
1834
                        array(
1835
                            'content' => $sections[$s]['type'] != 'multiple' ? $sections[$s]['text'] : ''
1836
                    )]);
1837
 
1838
                    if ($sections[$s]['type'] == 'multiple') {
1839
 
1840
                        $pdf->titleOptionTable($sections[$s]['text']);
1841
 
1842
                        for ($o = 0; $o < count($sections[$s]['options']); $o++) {
1843
 
1844
                            $pdf->optionTable($sections[$s]['options'][$o]['title']);
1845
                        }
1846
                        $pdf->Ln();
1847
                    }
1848
                    if ($s % 2 == 0 && $s > 1) {
1849
                        $pdf->AddPage();
1850
                    }
1851
                }*/
1852
 
1853
        // Competencies
1854
        if (count($competencies) != 0) {
1855
 
1856
            // add new page
1857
 
1858
            $pdf->AddPage();
1859
 
1860
            $competencies_header[] = array('content' => 'Indique el nivel de desempeño del evaluado en relación a sus conductas y actitudes frente a cada valor, según la clasificación siguiente:');
1861
 
1862
            $pdf->singleTable('Anexo de valores:', $competencies_header);
1863
 
1864
 
1865
            // Add scale section
1866
            $pdf->sectionScale();
1867
 
1868
            $i = 0;
1869
 
1870
            foreach ($competencies as $record) {
1871
 
1872
                $i = $i + 1;
1873
 
1874
                $pdf->competencyTable($i, $record);
1875
 
1876
                if ($i % 3 == 0 && $i < count($competencies)) {
1877
                    $pdf->AddPage();
1878
                }
1879
            }
1880
 
1881
        }
1882
 
1883
        return $pdf->Output();
1884
 
1885
    }
1384 efrain 1886
}