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();
327
 
328
 
329
        if ($request->isPost()) {
330
            $dataPost = $request->getPost()->toArray();
331
            $form = new  PerformanceEvaluationEvaluationForm($this->adapter, $currentCompany->id);
332
            $form->setData($dataPost);
12051 eleazar 333
            $actual_date = time();
334
            $last_dt = strtotime($dataPost['last_date']);
335
 
336
            if($actual_date > $last_dt){
337
                return new JsonModel([
338
                    'success' => false,
339
                    'data' => 'ERROR_UNAUTHORIZED'
340
                ]);
341
            }
1384 efrain 342
            if($form->isValid()) {
343
                $dataPost = (array) $form->getData();
344
 
345
                $form_id = $dataPost['form_id'];
8072 eleazar 346
                $supervisor_id = $dataPost['supervisor_id'];
347
                $first_name= $dataPost['first_name'];
348
                $last_name= $dataPost['last_name'];
349
                $email= $dataPost['email'];
350
                $user_id= $dataPost['user_id'];
1384 efrain 351
                $dt = \DateTime::createFromFormat('d/m/Y', $dataPost['last_date']);
352
                $last_date = $dt->format('Y-m-d');
353
 
354
                $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
355
                $form = $formMapper->fetchOneByUuid($form_id);
356
                if (!$form) {
357
                    return new JsonModel([
358
                        'success' => true,
359
                        'data' => 'ERROR_FORM_NOT_FOUND'
360
                    ]);
361
                }
362
 
363
                if ($form->company_id != $currentCompany->id) {
364
                    return new JsonModel([
365
                        'success' => true,
366
                        'data' => 'ERROR_UNAUTHORIZED'
367
                    ]);
368
                }
369
 
370
 
371
                $userMapper = UserMapper::getInstance($this->adapter);
8073 eleazar 372
                $supervisor = $userMapper->fetchOneByUuid($supervisor_id);
1384 efrain 373
 
8072 eleazar 374
                if (!$supervisor) {
1384 efrain 375
                    return new JsonModel([
376
                        'success' => false,
377
                        'data' => 'ERROR_USER_NOT_FOUND'
378
                    ]);
379
                }
380
 
381
 
382
 
383
                $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
8074 eleazar 384
                $companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($form->company_id, $supervisor->id);
1384 efrain 385
                if (!$companyUser) {
386
                    return new JsonModel([
387
                        'success' => false,
388
                        'data' => 'ERROR_UNAUTHORIZED'
389
                    ]);
390
                }
391
 
392
 
393
                $test = new CompanyPerformanceEvaluationTest();
394
                $test->company_id = $form->company_id;
395
                $test->form_id = $form->id;
8072 eleazar 396
                $test->supervisor_id = $supervisor->id;
1384 efrain 397
                $test->last_date = $last_date;
8072 eleazar 398
                $test->first_name = $first_name;
399
                $test->last_name = $last_name;
400
                $test->email = $email;
8078 eleazar 401
                //$tst->user_id = $user_id;
1384 efrain 402
 
403
 
404
                $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
405
                $result = $testMapper->insert($test);
406
 
407
                if($result) {
408
                    $this->logger->info('Se agrego el Test de Performance ' . $form->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
409
 
410
                    $data = [
411
                        'success'   => true,
412
                        'data'   => 'LABEL_RECORD_ADDED'
413
                    ];
414
                } else {
415
                    $data = [
416
                        'success'   => false,
417
                        'data'      => $testMapper->getError()
418
                    ];
419
 
420
                }
421
 
422
                return new JsonModel($data);
423
 
424
            } else {
425
                $messages = [];
426
                $form_messages = (array) $form->getMessages();
427
                foreach($form_messages  as $fieldname => $field_messages)
428
                {
429
 
430
                    $messages[$fieldname] = array_values($field_messages);
431
                }
432
 
433
                return new JsonModel([
434
                    'success'   => false,
435
                    'data'   => $messages
436
                ]);
437
            }
438
 
439
 
440
 
441
        }
442
 
443
        return new JsonModel([
444
            'success' => false,
445
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
446
        ]);
447
    }
8087 eleazar 448
 
449
    public function selfAction() {
450
        $currentUserPlugin = $this->plugin('currentUserPlugin');
451
        $currentUser = $currentUserPlugin->getUser();
452
        $currentCompany = $currentUserPlugin->getCompany();
453
 
454
        $request = $this->getRequest();
455
 
456
        $uuid = $this->params()->fromRoute('id');
457
 
458
        if ($request->isGet()) {
459
            $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
460
            $test = $testMapper->fetchOneByUuid($uuid);
8094 eleazar 461
 
462
            $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
8097 eleazar 463
            $form = $formMapper->fetchOne($test->form_id);
8099 eleazar 464
 
8087 eleazar 465
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
466
            $jobDescription = $jobDescriptionMapper->fetchOne($form->job_description_id);
8101 eleazar 467
 
468
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
469
            $jobDescriptionCompetencies = $jobDescriptionCompetencyMapper->fetchByJobDescriptionId($jobDescription->id);
8102 eleazar 470
            // return new JsonModel([
471
            //     'success' => false,
472
            //     'data' => $jobDescriptionCompetencies
473
            // ]);
8087 eleazar 474
            $competencyTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
475
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
476
            $behaviorCompetencyMapper = BehaviorCompetencyMapper::getInstance($this->adapter);
477
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
1384 efrain 478
 
8087 eleazar 479
            $data = [
480
                'job_description' => [
481
                    'uuid' => $jobDescription->uuid,
482
                    'name' => $jobDescription->name,
483
                    'functions' => $jobDescription->functions,
484
                    'objectives' => $jobDescription->objectives,
485
                    'competencies' => []
486
                ],
487
                'self' => [
488
                    'points' => 0,
489
                    'comment' => '',
490
                ],
491
                'test' => $test,
492
            ];
493
 
494
            foreach ($jobDescriptionCompetencies as $jobDescriptionCompetency) {
495
                $competency = $competencyMapper->fetchOne($jobDescriptionCompetency->competency_id);
496
                $competencyType = $competencyTypeMapper->fetchOne($competency->competency_type_id);
497
                $behaviorCompetencies = $behaviorCompetencyMapper->fetchByCompetencyId($competency->id);
498
 
499
                $behaviors = [];
500
 
501
                foreach ($behaviorCompetencies as $behaviorCompetency) {
502
                    $behavior = $behaviorMapper->fetchOne($behaviorCompetency->behavior_id);
503
 
504
                    $behaviors []= [
505
                        'uuid' => $behavior->uuid,
506
                        'description' => $behavior->description,
507
                        'points' => 0,
508
                        'comment' => '',
509
                        'competency_uuid' => $competency->uuid,
510
                    ];
511
                }
512
 
513
                array_push($data['job_description']['competencies'], [
514
                    'competency_uuid' => $competency->uuid,
515
                    'competency_name' => $competency->name,
516
                    'competency_type_uuid' => $competencyType->uuid,
517
                    'competency_type_name' => $competencyType->name,
518
                    'behaviors' => $behaviors,
519
                ]);
520
            }
521
 
522
            return new JsonModel([
523
                'success' => true,
524
                'data' => $data
525
            ]);
526
 
527
        } else if($request->isPost()){
8168 eleazar 528
            try{
8087 eleazar 529
            $dataPost = $request->getPost()->toArray();
530
 
531
            $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
8162 eleazar 532
            $test = $testMapper->fetchOneByUuid($uuid);
8166 eleazar 533
 
8088 eleazar 534
            $formSelf = new PerformanceEvaluationEvaluationSelfForm($this->adapter, $currentCompany->id);
8167 eleazar 535
            $dataPost['first_name'] = $test->first_name;
536
            $dataPost['last_name'] = $test->last_name;
537
            $dataPost['email'] = $test->email;
8091 eleazar 538
            $formSelf->setData($dataPost);
8087 eleazar 539
 
8091 eleazar 540
            if ($formSelf->isValid()) {
541
                $dataPost = (array) $formSelf->getData();
8087 eleazar 542
 
543
                $hydrator = new ObjectPropertyHydrator();
544
                $performanceEvaluationTestSelf = new CompanyPerformanceEvaluationTestSelf();
545
                $hydrator->hydrate($dataPost, $performanceEvaluationTestSelf);
546
 
547
                $performanceEvaluationTestSelf->company_id = $currentCompany->id;
548
                $performanceEvaluationTestSelf->test_id = $test->id;
8171 eleazar 549
                $performanceEvaluationTestSelf->form_id = $test->form_id;
8173 eleazar 550
                $performanceEvaluationTestSelf->supervisor_id = $test->supervisor_id;
8087 eleazar 551
 
552
                $performanceEvaluationTestSelfMapper = CompanyPerformanceEvaluationTestSelfMapper::getInstance($this->adapter);
553
 
554
                $result = $performanceEvaluationTestSelfMapper->insert($performanceEvaluationTestSelf);
555
 
556
 
557
                if ($result) {
8174 eleazar 558
                    $this->logger->info('Se agrego la entrevista ' . $performanceEvaluationTestSelf->id, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
8087 eleazar 559
 
560
                    // Get record by id
561
                    $performanceEvaluationTestSelfMapper = CompanyPerformanceEvaluationTestSelfMapper::getInstance($this->adapter);
562
                    $record = $performanceEvaluationTestSelfMapper->fetchOne($performanceEvaluationTestSelf->id);
563
 
564
 
565
                    if ($record) {
566
 
567
                        $data = [
568
                            'success' => true,
569
                            'id' => $record->id,
570
                            'data' => 'LABEL_RECORD_ADDED'
571
                        ];
572
                    } else {
573
 
574
                        $data = [
575
                            'success' => false,
576
                            'data' => 'ERROR_RECORD_NOT_FOUND'
577
                        ];
578
                    }
579
                } else {
580
                    $data = [
581
                        'success' => false,
582
                        'data' => $performanceEvaluationTestSelfMapper->getError()
583
                    ];
584
                }
585
 
586
                return new JsonModel($data);
587
            } else {
588
                $messages = [];
8163 eleazar 589
                $form_messages = (array) $formSelf->getMessages();
8087 eleazar 590
                foreach ($form_messages as $fieldname => $field_messages) {
591
 
592
                    $messages[$fieldname] = array_values($field_messages);
593
                }
594
 
595
                return new JsonModel([
596
                    'success' => false,
597
                    'data' => $messages
598
                ]);
8168 eleazar 599
            }}catch (\Throwable $e) {
600
                $e->getMessage();
601
                return new JsonModel([
602
                    'success' => false,
603
                    'data' => $e
604
                ]);
8087 eleazar 605
            }
606
        } else {
607
            $data = [
608
                'success' => false,
609
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
610
            ];
611
 
612
            return new JsonModel($data);
613
        }
614
 
615
        return new JsonModel($data);
616
    }
8179 eleazar 617
 
618
    public function bothAction() {
619
        $currentUserPlugin = $this->plugin('currentUserPlugin');
620
        $currentUser = $currentUserPlugin->getUser();
621
        $currentCompany = $currentUserPlugin->getCompany();
622
 
623
        $request = $this->getRequest();
624
 
625
        $uuid = $this->params()->fromRoute('id');
626
 
627
        if ($request->isGet()) {
628
            $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
629
            $test = $testMapper->fetchOneByUuid($uuid);
630
 
631
            $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
632
            $form = $formMapper->fetchOne($test->form_id);
633
 
634
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
635
            $jobDescription = $jobDescriptionMapper->fetchOne($form->job_description_id);
636
 
637
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
638
            $jobDescriptionCompetencies = $jobDescriptionCompetencyMapper->fetchByJobDescriptionId($jobDescription->id);
639
            // return new JsonModel([
640
            //     'success' => false,
641
            //     'data' => $jobDescriptionCompetencies
642
            // ]);
643
            $competencyTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
644
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
645
            $behaviorCompetencyMapper = BehaviorCompetencyMapper::getInstance($this->adapter);
646
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
8087 eleazar 647
 
8179 eleazar 648
            $data = [
649
                'job_description' => [
650
                    'uuid' => $jobDescription->uuid,
651
                    'name' => $jobDescription->name,
652
                    'functions' => $jobDescription->functions,
653
                    'objectives' => $jobDescription->objectives,
654
                    'competencies' => []
655
                ],
656
                'both' => [
657
                    'points' => 0,
658
                    'comment' => '',
659
                ],
660
                'test' => $test,
661
            ];
662
 
663
            foreach ($jobDescriptionCompetencies as $jobDescriptionCompetency) {
664
                $competency = $competencyMapper->fetchOne($jobDescriptionCompetency->competency_id);
665
                $competencyType = $competencyTypeMapper->fetchOne($competency->competency_type_id);
666
                $behaviorCompetencies = $behaviorCompetencyMapper->fetchByCompetencyId($competency->id);
667
 
668
                $behaviors = [];
669
 
670
                foreach ($behaviorCompetencies as $behaviorCompetency) {
671
                    $behavior = $behaviorMapper->fetchOne($behaviorCompetency->behavior_id);
672
 
673
                    $behaviors []= [
674
                        'uuid' => $behavior->uuid,
675
                        'description' => $behavior->description,
676
                        'points' => 0,
677
                        'comment' => '',
678
                        'competency_uuid' => $competency->uuid,
679
                    ];
680
                }
681
 
682
                array_push($data['job_description']['competencies'], [
683
                    'competency_uuid' => $competency->uuid,
684
                    'competency_name' => $competency->name,
685
                    'competency_type_uuid' => $competencyType->uuid,
686
                    'competency_type_name' => $competencyType->name,
687
                    'behaviors' => $behaviors,
688
                ]);
689
            }
690
 
691
            return new JsonModel([
692
                'success' => true,
693
                'data' => $data
694
            ]);
695
 
696
        } else if($request->isPost()){
697
            try{
698
            $dataPost = $request->getPost()->toArray();
699
 
700
            $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
701
            $test = $testMapper->fetchOneByUuid($uuid);
702
 
703
            $formSelf = new PerformanceEvaluationEvaluationSelfForm($this->adapter, $currentCompany->id);
704
            $dataPost['first_name'] = $test->first_name;
705
            $dataPost['last_name'] = $test->last_name;
706
            $dataPost['email'] = $test->email;
707
            $formSelf->setData($dataPost);
708
 
709
            if ($formSelf->isValid()) {
710
                $dataPost = (array) $formSelf->getData();
711
 
712
                $hydrator = new ObjectPropertyHydrator();
713
                $performanceEvaluationTestBoth = new CompanyPerformanceEvaluationTestBoth();
714
                $hydrator->hydrate($dataPost, $performanceEvaluationTestBoth);
715
 
716
                $performanceEvaluationTestBoth->company_id = $currentCompany->id;
717
                $performanceEvaluationTestBoth->test_id = $test->id;
718
                $performanceEvaluationTestBoth->form_id = $test->form_id;
719
                $performanceEvaluationTestBoth->supervisor_id = $test->supervisor_id;
720
 
721
                $performanceEvaluationTestBothMapper = CompanyPerformanceEvaluationTestBothMapper::getInstance($this->adapter);
722
 
723
                $result = $performanceEvaluationTestBothMapper->insert($performanceEvaluationTestBoth);
724
 
725
 
726
                if ($result) {
727
                    $this->logger->info('Se agrego la entrevista ' . $performanceEvaluationTestBoth->id, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
728
 
729
                    // Get record by id
730
                    $performanceEvaluationTestBothMapper = CompanyPerformanceEvaluationTestBothMapper::getInstance($this->adapter);
731
                    $record = $performanceEvaluationTestBothMapper->fetchOne($performanceEvaluationTestBoth->id);
732
 
733
 
734
                    if ($record) {
735
 
736
                        $data = [
737
                            'success' => true,
738
                            'id' => $record->id,
739
                            'data' => 'LABEL_RECORD_ADDED'
740
                        ];
741
                    } else {
742
 
743
                        $data = [
744
                            'success' => false,
745
                            'data' => 'ERROR_RECORD_NOT_FOUND'
746
                        ];
747
                    }
748
                } else {
749
                    $data = [
750
                        'success' => false,
751
                        'data' => $performanceEvaluationTestBothMapper->getError()
752
                    ];
753
                }
754
 
755
                return new JsonModel($data);
756
            } else {
757
                $messages = [];
758
                $form_messages = (array) $formSelf->getMessages();
759
                foreach ($form_messages as $fieldname => $field_messages) {
760
 
761
                    $messages[$fieldname] = array_values($field_messages);
762
                }
763
 
764
                return new JsonModel([
765
                    'success' => false,
766
                    'data' => $messages
767
                ]);
768
            }}catch (\Throwable $e) {
769
                $e->getMessage();
770
                return new JsonModel([
771
                    'success' => false,
772
                    'data' => $e
773
                ]);
774
            }
775
        } else {
776
            $data = [
777
                'success' => false,
778
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
779
            ];
780
 
781
            return new JsonModel($data);
782
        }
783
 
784
        return new JsonModel($data);
785
    }
786
 
8181 eleazar 787
    public function superviserAction() {
8179 eleazar 788
        $currentUserPlugin = $this->plugin('currentUserPlugin');
789
        $currentUser = $currentUserPlugin->getUser();
790
        $currentCompany = $currentUserPlugin->getCompany();
791
 
792
        $request = $this->getRequest();
793
 
794
        $uuid = $this->params()->fromRoute('id');
795
 
796
        if ($request->isGet()) {
797
            $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
798
            $test = $testMapper->fetchOneByUuid($uuid);
799
 
800
            $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
801
            $form = $formMapper->fetchOne($test->form_id);
802
 
803
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
804
            $jobDescription = $jobDescriptionMapper->fetchOne($form->job_description_id);
805
 
806
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
807
            $jobDescriptionCompetencies = $jobDescriptionCompetencyMapper->fetchByJobDescriptionId($jobDescription->id);
808
            // return new JsonModel([
809
            //     'success' => false,
810
            //     'data' => $jobDescriptionCompetencies
811
            // ]);
812
            $competencyTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
813
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
814
            $behaviorCompetencyMapper = BehaviorCompetencyMapper::getInstance($this->adapter);
815
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
816
 
817
            $data = [
818
                'job_description' => [
819
                    'uuid' => $jobDescription->uuid,
820
                    'name' => $jobDescription->name,
821
                    'functions' => $jobDescription->functions,
822
                    'objectives' => $jobDescription->objectives,
823
                    'competencies' => []
824
                ],
825
                'supervisor' => [
826
                    'points' => 0,
827
                    'comment' => '',
828
                ],
829
                'test' => $test,
830
            ];
831
 
832
            foreach ($jobDescriptionCompetencies as $jobDescriptionCompetency) {
833
                $competency = $competencyMapper->fetchOne($jobDescriptionCompetency->competency_id);
834
                $competencyType = $competencyTypeMapper->fetchOne($competency->competency_type_id);
835
                $behaviorCompetencies = $behaviorCompetencyMapper->fetchByCompetencyId($competency->id);
836
 
837
                $behaviors = [];
838
 
839
                foreach ($behaviorCompetencies as $behaviorCompetency) {
840
                    $behavior = $behaviorMapper->fetchOne($behaviorCompetency->behavior_id);
841
 
842
                    $behaviors []= [
843
                        'uuid' => $behavior->uuid,
844
                        'description' => $behavior->description,
845
                        'points' => 0,
846
                        'comment' => '',
847
                        'competency_uuid' => $competency->uuid,
848
                    ];
849
                }
850
 
851
                array_push($data['job_description']['competencies'], [
852
                    'competency_uuid' => $competency->uuid,
853
                    'competency_name' => $competency->name,
854
                    'competency_type_uuid' => $competencyType->uuid,
855
                    'competency_type_name' => $competencyType->name,
856
                    'behaviors' => $behaviors,
857
                ]);
858
            }
859
 
860
            return new JsonModel([
861
                'success' => true,
862
                'data' => $data
863
            ]);
864
 
865
        } else if($request->isPost()){
866
            try{
867
            $dataPost = $request->getPost()->toArray();
868
 
869
            $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
870
            $test = $testMapper->fetchOneByUuid($uuid);
871
 
872
            $formSelf = new PerformanceEvaluationEvaluationSelfForm($this->adapter, $currentCompany->id);
873
            $dataPost['first_name'] = $test->first_name;
874
            $dataPost['last_name'] = $test->last_name;
875
            $dataPost['email'] = $test->email;
876
            $formSelf->setData($dataPost);
877
 
878
            if ($formSelf->isValid()) {
879
                $dataPost = (array) $formSelf->getData();
880
 
881
                $hydrator = new ObjectPropertyHydrator();
882
                $performanceEvaluationTestSupervisor = new CompanyPerformanceEvaluationTestSupervisor();
883
                $hydrator->hydrate($dataPost, $performanceEvaluationTestSupervisor);
884
 
885
                $performanceEvaluationTestSupervisor->company_id = $currentCompany->id;
886
                $performanceEvaluationTestSupervisor->test_id = $test->id;
887
                $performanceEvaluationTestSupervisor->form_id = $test->form_id;
888
                $performanceEvaluationTestSupervisor->supervisor_id = $test->supervisor_id;
889
 
890
                $performanceEvaluationTestSupervisorMapper = CompanyPerformanceEvaluationTestSupervisorMapper::getInstance($this->adapter);
891
 
892
                $result = $performanceEvaluationTestSupervisorMapper->insert($performanceEvaluationTestSupervisor);
893
 
894
 
895
                if ($result) {
896
                    $this->logger->info('Se agrego la entrevista ' . $performanceEvaluationTestSupervisor->id, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
897
 
898
                    // Get record by id
899
                    $performanceEvaluationTestSupervisorMapper = CompanyPerformanceEvaluationTestSupervisorMapper::getInstance($this->adapter);
900
                    $record = $performanceEvaluationTestSupervisorMapper->fetchOne($performanceEvaluationTestSupervisor->id);
901
 
902
 
903
                    if ($record) {
904
 
905
                        $data = [
906
                            'success' => true,
907
                            'id' => $record->id,
908
                            'data' => 'LABEL_RECORD_ADDED'
909
                        ];
910
                    } else {
911
 
912
                        $data = [
913
                            'success' => false,
914
                            'data' => 'ERROR_RECORD_NOT_FOUND'
915
                        ];
916
                    }
917
                } else {
918
                    $data = [
919
                        'success' => false,
920
                        'data' => $performanceEvaluationTestSupervisorMapper->getError()
921
                    ];
922
                }
923
 
924
                return new JsonModel($data);
925
            } else {
926
                $messages = [];
927
                $form_messages = (array) $formSelf->getMessages();
928
                foreach ($form_messages as $fieldname => $field_messages) {
929
 
930
                    $messages[$fieldname] = array_values($field_messages);
931
                }
932
 
933
                return new JsonModel([
934
                    'success' => false,
935
                    'data' => $messages
936
                ]);
937
            }}catch (\Throwable $e) {
938
                $e->getMessage();
939
                return new JsonModel([
940
                    'success' => false,
941
                    'data' => $e
942
                ]);
943
            }
944
        } else {
945
            $data = [
946
                'success' => false,
947
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
948
            ];
949
 
950
            return new JsonModel($data);
951
        }
952
 
953
        return new JsonModel($data);
954
    }
955
 
1384 efrain 956
    public function editAction() {
957
        $request = $this->getRequest();
958
 
959
        $currentUserPlugin = $this->plugin('currentUserPlugin');
960
        $currentUser = $currentUserPlugin->getUser();
961
        $currentCompany = $currentUserPlugin->getCompany();
962
 
963
        $request = $this->getRequest();
964
        $id = $this->params()->fromRoute('id');
965
 
966
        $formTestMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
967
        $formTest =  $formTestMapper->fetchOneByUuid($id);
8080 eleazar 968
 
1384 efrain 969
        if (!$formTest) {
970
            return new JsonModel([
971
                'success' => true,
972
                'data' => 'ERROR_RECORD_NOT_FOUND'
973
            ]);
974
        }
975
 
976
        if ($formTest->company_id != $currentCompany->id) {
977
            return new JsonModel([
978
                'success' => true,
979
                'data' => 'ERROR_UNAUTHORIZED'
980
            ]);
981
        }
982
 
983
 
984
        $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
985
        $companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($formTest->company_id, $currentUser->id);
986
        if (!$companyUser) {
987
            return new JsonModel([
988
                'success' => false,
989
                'data' => 'ERROR_UNAUTHORIZED'
990
            ]);
991
        }
992
 
993
        if ($request->isGet()) {
994
 
995
            $dt = \DateTime::createFromFormat('Y-m-d', $formTest->last_date);
996
 
997
            $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
998
            $form = $formMapper->fetchOne($formTest->form_id);
999
 
1000
            $userMapper = UserMapper::getInstance($this->adapter);
7785 eleazar 1001
            $user = $userMapper->fetchOne($formTest->supervisor_id);
1384 efrain 1002
 
1003
            $data = [
1004
                'success'   => true,
1005
                'data'   => [
1006
                    'last_date' => $dt->format('d/m/Y'),
1007
                    'form' => $form->uuid,
1008
                    'supervisor' => $user->uuid,
1009
                ]
1010
            ];
1011
 
1012
            return new JsonModel($data);
1013
 
1014
 
1015
 
1016
        } else if ($request->isPost()) {
1017
 
1018
 
1019
            $dataPost = $request->getPost()->toArray();
1020
            $form = new  PerformanceEvaluationEvaluationForm($this->adapter, $currentCompany->id);
1021
            $form->setData($dataPost);
1022
 
1023
            if($form->isValid()) {
1024
                $dataPost = (array) $form->getData();
1025
 
1026
                $form_id = $dataPost['form_id'];
1027
                $user_id = $dataPost['supervisor_id'];
1028
                $dt = \DateTime::createFromFormat('d/m/Y', $dataPost['last_date']);
1029
                $last_date = $dt->format('Y-m-d');
1030
 
1031
                $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
1032
                $form = $formMapper->fetchOneByUuid($form_id);
1033
                if (!$form) {
1034
                    return new JsonModel([
1035
                        'success' => true,
1036
                        'data' => 'ERROR_FORM_NOT_FOUND'
1037
                    ]);
1038
                }
1039
 
1040
                if ($form->company_id != $currentCompany->id) {
1041
                    return new JsonModel([
1042
                        'success' => true,
1043
                        'data' => 'ERROR_UNAUTHORIZED'
1044
                    ]);
1045
                }
1046
 
1047
 
1048
                $userMapper = UserMapper::getInstance($this->adapter);
1049
                $user = $userMapper->fetchOneByUuid($user_id);
1050
 
1051
                if (!$user) {
1052
                    return new JsonModel([
1053
                        'success' => false,
1054
                        'data' => 'ERROR_USER_NOT_FOUND'
1055
                    ]);
1056
                }
1057
 
1058
 
1059
 
1060
                $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
1061
                $companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($form->company_id, $user->id);
1062
                if (!$companyUser) {
1063
                    return new JsonModel([
1064
                        'success' => false,
1065
                        'data' => 'ERROR_UNAUTHORIZED'
1066
                    ]);
1067
                }
1068
 
1069
                $formTest->supervisor_id = $user->id;
1070
                $formTest->last_date = $last_date;
1071
 
1072
                $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1073
                $result = $testMapper->update($formTest);
1074
 
1075
                if($result) {
1076
                    $this->logger->info('Se actualizo el Test de Performance ' . $form->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
1077
 
1078
                    $data = [
1079
                        'success'   => true,
1080
                        'data'   => 'LABEL_RECORD_UPDATED'
1081
                    ];
1082
                } else {
1083
                    $data = [
1084
                        'success'   => false,
1085
                        'data'      => $testMapper->getError()
1086
                    ];
1087
 
1088
                }
1089
 
1090
                return new JsonModel($data);
1091
 
1092
            } else {
1093
                $messages = [];
1094
                $form_messages = (array) $form->getMessages();
1095
                foreach($form_messages  as $fieldname => $field_messages)
1096
                {
1097
 
1098
                    $messages[$fieldname] = array_values($field_messages);
1099
                }
1100
 
1101
                return new JsonModel([
1102
                    'success'   => false,
1103
                    'data'   => $messages
1104
                ]);
1105
            }
1106
        }
1107
 
1108
        return new JsonModel([
1109
            'success' => false,
1110
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1111
        ]);
1112
    }
1113
 
1114
    public function deleteAction() {
1115
        $request = $this->getRequest();
1116
 
1117
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1118
        $currentUser = $currentUserPlugin->getUser();
1119
        $currentCompany = $currentUserPlugin->getCompany();
1120
 
1121
        $request = $this->getRequest();
1122
        $id = $this->params()->fromRoute('id');
1123
 
1124
        $formTestMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1125
        $formTest =  $formTestMapper->fetchOneByUuid($id);
1126
        if (!$formTest) {
1127
            return new JsonModel([
1128
                'success' => true,
1129
                'data' => 'ERROR_RECORD_NOT_FOUND'
1130
            ]);
1131
        }
1132
 
1133
        if ($formTest->company_id != $currentCompany->id) {
1134
            return new JsonModel([
1135
                'success' => true,
1136
                'data' => 'ERROR_UNAUTHORIZED'
1137
            ]);
1138
        }
1139
 
1140
 
1141
        $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
1142
        $companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($formTest->company_id, $currentUser->id);
1143
        if (!$companyUser) {
1144
            return new JsonModel([
1145
                'success' => false,
1146
                'data' => 'ERROR_UNAUTHORIZED'
1147
            ]);
1148
        }
1149
 
1150
        if ($request->isPost()) {
1151
 
1152
 
1153
            $result = $formTestMapper->delete($formTest);
1154
 
1155
            if ($result) {
1156
 
1157
                return new JsonModel([
1158
                    'success' => true,
1159
                    'data' => 'LABEL_PERFORMANCE_TEST_DELETED',
1160
                ]);
1161
            } else {
1162
 
1163
                return new JsonModel([
1164
                    'success' => false,
1165
                    'data' => $formTestMapper->getError()
1166
                ]);
1167
            }
1168
        }
1169
 
1170
        return new JsonModel([
1171
            'success' => false,
1172
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1173
        ]);
1174
    }
1175
 
8179 eleazar 1176
    public function reportSelfAction() {
8167 eleazar 1177
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1178
        $currentUser = $currentUserPlugin->getUser();
1179
        $currentCompany = $currentUserPlugin->getCompany();
1180
 
1181
        $uuid = $this->params()->fromRoute('id');
1182
 
1183
        $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1184
        $test = $testMapper->fetchOneByUuid($uuid);
8194 eleazar 1185
 
1186
        $testSelfMapper = CompanyPerformanceEvaluationTestSelfMapper::getInstance($this->adapter);
1187
        $testSelf = $testSelfMapper->fetchOneByTestId($test->id);
8207 eleazar 1188
 
8196 eleazar 1189
        $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
1190
        $form = $formMapper->fetchOne($test->form_id);
8199 eleazar 1191
 
8167 eleazar 1192
        if (!$form) {
1193
            return new JsonModel([
1194
                'success' => false,
1195
                'data' => 'ERROR_FORM_EVALUATION_NOT_FOUND'
1196
            ]);
1197
        }
1198
 
1199
        $request = $this->getRequest();
1200
        if ($request->isGet()) {
1201
            //Competencies
1202
 
1203
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
1204
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
1205
            $competenceTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
1206
            $behaviorCompetencyMapper = BehaviorCompetencyMapper::getInstance($this->adapter);
1207
            $jobDescriptionBehaviorCompetencyMapper = JobDescriptionBehaviorCompetencyMapper::getInstance($this->adapter);
1208
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
1209
 
1210
            $competencies = [];
1211
 
1212
            $jobDescriptionCompetency = $jobDescriptionCompetencyMapper->fetchByJobDescriptionId($form->job_description_id);
1213
 
8179 eleazar 1214
            $content = json_decode($testSelf->content, true);
8167 eleazar 1215
 
1216
            foreach ($jobDescriptionCompetency as $record) {
1217
 
1218
                $competency = $competencyMapper->fetchOne($record->competency_id);
1219
                $competenceType = $competenceTypeMapper->fetchOne($competency->competency_type_id);
1220
 
1221
                if ($competency && $competenceType) {
1222
 
1223
                    $behaviorCompetencies = $behaviorCompetencyMapper->fetchByCompetencyId($competency->id);
1224
                    $behaviors = [];
1225
 
1226
                    foreach ($behaviorCompetencies as $rows) {
1227
 
1228
                        $behavior = $behaviorMapper->fetchOne($rows->behavior_id);
8179 eleazar 1229
                        $jobDescriptionBehaviorCompetency = $jobDescriptionBehaviorCompetencyMapper->fetchOneByBehavior($form->job_description_id, $record->competency_id, $rows->behavior_id);
8167 eleazar 1230
 
1231
                        if ($behavior && $jobDescriptionBehaviorCompetency) {
1232
                            $rowData = [
1233
                                'description' => $behavior->description,
1234
                                'level' => $jobDescriptionBehaviorCompetency->level,
1235
                                'comment' => '',
1236
                                'evaluation' => '',
1237
 
1238
                            ];
1239
 
1240
                            foreach($content as $eval) {
1241
                                if ($eval['competencyUuid'] == $competency->uuid &&
1242
                                    $eval['behaviorUuid'] == $behavior->uuid) {
1243
 
1244
                                    $rowData['comment'] = $eval['comment'];
1245
                                    $rowData['evaluation'] = $eval['evaluation'];
1246
 
1247
 
1248
                                    break;
1249
                                }
1250
                            }
1251
 
1252
                            $behaviors []= $rowData;
1253
                        }
1254
                    }
1255
 
1256
                    array_push($competencies, [
1257
                        'name' => $competency->name,
1258
                        'description' => $competency->description,
1259
                        'type' => $competenceType->name,
1260
                        'behaviors' => $behaviors
1261
                    ]);
1262
                }
1263
            }
1264
 
8230 eleazar 1265
            return $this->renderSelfPDF($currentCompany, $testSelf, $competencies);
8167 eleazar 1266
        }
1267
 
1268
        return new JsonModel([
1269
            'success' => false,
1270
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1271
        ]);
1272
    }
1273
 
8179 eleazar 1274
      /**
1275
     * Render PDF
1276
     * @param Company $currentCompany
1277
     * @param recruitmentSelectionInterview $interviewEvaluation
1278
     * @param array $competencies
1279
     * @return mixed
1280
     */
8230 eleazar 1281
    public function renderSelfPDF($currentCompany, $testSelf, $competencies) {
8179 eleazar 1282
 
1283
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1284
        $currentUser = $currentUserPlugin->getUser();
1285
 
1286
        //Generate New PDF
1287
        $pdf = new InterviewPDF();
1288
 
1289
        $pdf->header = '';
1290
        $pdf->footer = '';
1291
 
1292
        if ($currentCompany) {
1293
            //get company Data
1294
            $companyMapper = CompanyMapper::getInstance($this->adapter);
1295
            $company = $companyMapper->fetchOne($currentCompany->id);
1296
 
1297
            $target_path = $this->config['leaderslinked.fullpath.company'] . DIRECTORY_SEPARATOR . $company->uuid;
1298
 
1299
            $pdf->header = $company->header ? $target_path . DIRECTORY_SEPARATOR . $company->header : '';
1300
            $pdf->footer = $company->footer ? $target_path . DIRECTORY_SEPARATOR . $company->footer : '';
1301
        }
1302
 
1303
        $pdf->SetMargins(10, 0, 10);
1304
 
1305
        $pdf->AliasNbPages();
1306
        $pdf->AddPage();
1307
 
1308
        $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1309
        $test = $testMapper->fetchOne($testSelf->test_id);
1310
 
1311
        $userMapper = UserMapper::getInstance($this->adapter);
8206 eleazar 1312
        $supervisor = $userMapper->fetchOne($testSelf->supervisor_id);
8179 eleazar 1313
 
1314
        switch ($testSelf->points) {
1315
            case "0":
1316
                $points = "Sugerir otro cargo";
1317
                break;
1318
            case "1":
1319
                $points = "25%";
1320
                break;
1321
            case "2":
1322
                $points = "50%";
1323
                break;
1324
            case "3":
1325
                $points = "75%";
1326
                break;
1327
            case "4":
1328
                $points = "100%";
1329
                break;
1330
            default :
1331
                $points = "ERROR";
1332
                break;
1333
        }
1334
 
1335
        $rows = [
1336
            array(
1337
                'title' => 'Nombre Evaluado: ',
1338
                'content' => $testSelf ? ' ' . $testSelf->first_name . ' ' . $testSelf->last_name : 'No Aplica'
1339
            ),
1340
            array(
1341
                'title' => 'Supervisado por: ',
1342
                'content' => $supervisor ? ' ' . $supervisor->first_name . ' ' . $supervisor->last_name : ' No Aplica '
1343
            ),
1344
            array(
1345
                'title' => 'Comentarios del supervisor: ',
1346
                'content' => $testSelf ? ' ' . $testSelf->comment : 'No Aplica'
1347
            ),
1348
            array(
9429 eleazar 1349
                'title' => 'Porcentage',
8179 eleazar 1350
                'content' => $points
1351
            )
1352
        ];
1353
 
1354
        $pdf->borderTable('DATOS DE LA ENTREVISTA', $rows);
1355
 
1356
        $sections = json_decode($testSelf->content, true);
1357
        /*
1358
                for ($s = 0; $s < count($sections); $s++) {
1359
 
1360
                    $pdf->singleTable($sections[$s]['title'], [
1361
                        array(
1362
                            'content' => $sections[$s]['type'] != 'multiple' ? $sections[$s]['text'] : ''
1363
                    )]);
1364
 
1365
                    if ($sections[$s]['type'] == 'multiple') {
1366
 
1367
                        $pdf->titleOptionTable($sections[$s]['text']);
1368
 
1369
                        for ($o = 0; $o < count($sections[$s]['options']); $o++) {
1370
 
1371
                            $pdf->optionTable($sections[$s]['options'][$o]['title']);
1372
                        }
1373
                        $pdf->Ln();
1374
                    }
1375
                    if ($s % 2 == 0 && $s > 1) {
1376
                        $pdf->AddPage();
1377
                    }
1378
                }*/
1379
 
1380
        // Competencies
1381
        if (count($competencies) != 0) {
1382
 
1383
            // add new page
1384
 
1385
            $pdf->AddPage();
1386
 
1387
            $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:');
1388
 
1389
            $pdf->singleTable('Anexo de valores:', $competencies_header);
1390
 
1391
 
1392
            // Add scale section
1393
            $pdf->sectionScale();
1394
 
1395
            $i = 0;
1396
 
1397
            foreach ($competencies as $record) {
1398
 
1399
                $i = $i + 1;
1400
 
1401
                $pdf->competencyTable($i, $record);
1402
 
1403
                if ($i % 3 == 0 && $i < count($competencies)) {
1404
                    $pdf->AddPage();
1405
                }
1406
            }
1407
 
1408
        }
1409
 
1410
        return $pdf->Output();
1411
 
1412
    }
1413
 
8230 eleazar 1414
    public function reportBothAction() {
1415
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1416
        $currentUser = $currentUserPlugin->getUser();
1417
        $currentCompany = $currentUserPlugin->getCompany();
1418
 
1419
        $uuid = $this->params()->fromRoute('id');
1420
 
1421
        $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1422
        $test = $testMapper->fetchOneByUuid($uuid);
1423
 
1424
        $testBothMapper = CompanyPerformanceEvaluationTestBothMapper::getInstance($this->adapter);
1425
        $testBoth = $testBothMapper->fetchOneByTestId($test->id);
1426
 
1427
        $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
1428
        $form = $formMapper->fetchOne($test->form_id);
1429
 
1430
        if (!$form) {
1431
            return new JsonModel([
1432
                'success' => false,
1433
                'data' => 'ERROR_FORM_EVALUATION_NOT_FOUND'
1434
            ]);
1435
        }
1436
 
1437
        $request = $this->getRequest();
1438
        if ($request->isGet()) {
1439
            //Competencies
1440
 
1441
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
1442
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
1443
            $competenceTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
1444
            $behaviorCompetencyMapper = BehaviorCompetencyMapper::getInstance($this->adapter);
1445
            $jobDescriptionBehaviorCompetencyMapper = JobDescriptionBehaviorCompetencyMapper::getInstance($this->adapter);
1446
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
1447
 
1448
            $competencies = [];
1449
 
1450
            $jobDescriptionCompetency = $jobDescriptionCompetencyMapper->fetchByJobDescriptionId($form->job_description_id);
1451
 
1452
            $content = json_decode($testBoth->content, true);
1453
 
1454
            foreach ($jobDescriptionCompetency as $record) {
1455
 
1456
                $competency = $competencyMapper->fetchOne($record->competency_id);
1457
                $competenceType = $competenceTypeMapper->fetchOne($competency->competency_type_id);
1458
 
1459
                if ($competency && $competenceType) {
1460
 
1461
                    $behaviorCompetencies = $behaviorCompetencyMapper->fetchByCompetencyId($competency->id);
1462
                    $behaviors = [];
1463
 
1464
                    foreach ($behaviorCompetencies as $rows) {
1465
 
1466
                        $behavior = $behaviorMapper->fetchOne($rows->behavior_id);
1467
                        $jobDescriptionBehaviorCompetency = $jobDescriptionBehaviorCompetencyMapper->fetchOneByBehavior($form->job_description_id, $record->competency_id, $rows->behavior_id);
1468
 
1469
                        if ($behavior && $jobDescriptionBehaviorCompetency) {
1470
                            $rowData = [
1471
                                'description' => $behavior->description,
1472
                                'level' => $jobDescriptionBehaviorCompetency->level,
1473
                                'comment' => '',
1474
                                'evaluation' => '',
1475
 
1476
                            ];
1477
 
1478
                            foreach($content as $eval) {
1479
                                if ($eval['competencyUuid'] == $competency->uuid &&
1480
                                    $eval['behaviorUuid'] == $behavior->uuid) {
1481
 
1482
                                    $rowData['comment'] = $eval['comment'];
1483
                                    $rowData['evaluation'] = $eval['evaluation'];
1484
 
1485
 
1486
                                    break;
1487
                                }
1488
                            }
1489
 
1490
                            $behaviors []= $rowData;
1491
                        }
1492
                    }
1493
 
1494
                    array_push($competencies, [
1495
                        'name' => $competency->name,
1496
                        'description' => $competency->description,
1497
                        'type' => $competenceType->name,
1498
                        'behaviors' => $behaviors
1499
                    ]);
1500
                }
1501
            }
1502
 
1503
            return $this->renderBothPDF($currentCompany, $testBoth, $competencies);
1504
        }
1505
 
1506
        return new JsonModel([
1507
            'success' => false,
1508
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1509
        ]);
1510
    }
1511
 
1512
    public function renderBothPDF($currentCompany, $testBoth, $competencies) {
1513
 
1514
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1515
        $currentUser = $currentUserPlugin->getUser();
1516
 
1517
        //Generate New PDF
1518
        $pdf = new InterviewPDF();
1519
 
1520
        $pdf->header = '';
1521
        $pdf->footer = '';
1522
 
1523
        if ($currentCompany) {
1524
            //get company Data
1525
            $companyMapper = CompanyMapper::getInstance($this->adapter);
1526
            $company = $companyMapper->fetchOne($currentCompany->id);
1527
 
1528
            $target_path = $this->config['leaderslinked.fullpath.company'] . DIRECTORY_SEPARATOR . $company->uuid;
1529
 
1530
            $pdf->header = $company->header ? $target_path . DIRECTORY_SEPARATOR . $company->header : '';
1531
            $pdf->footer = $company->footer ? $target_path . DIRECTORY_SEPARATOR . $company->footer : '';
1532
        }
1533
 
1534
        $pdf->SetMargins(10, 0, 10);
1535
 
1536
        $pdf->AliasNbPages();
1537
        $pdf->AddPage();
1538
 
1539
        $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1540
        $test = $testMapper->fetchOne($testBoth->test_id);
1541
 
1542
        $userMapper = UserMapper::getInstance($this->adapter);
1543
        $supervisor = $userMapper->fetchOne($testBoth->supervisor_id);
1544
 
1545
        switch ($testBoth->points) {
1546
            case "0":
1547
                $points = "Sugerir otro cargo";
1548
                break;
1549
            case "1":
1550
                $points = "25%";
1551
                break;
1552
            case "2":
1553
                $points = "50%";
1554
                break;
1555
            case "3":
1556
                $points = "75%";
1557
                break;
1558
            case "4":
1559
                $points = "100%";
1560
                break;
1561
            default :
1562
                $points = "ERROR";
1563
                break;
1564
        }
1565
 
1566
        $rows = [
1567
            array(
1568
                'title' => 'Nombre Evaluado: ',
1569
                'content' => $testBoth ? ' ' . $testBoth->first_name . ' ' . $testBoth->last_name : 'No Aplica'
1570
            ),
1571
            array(
1572
                'title' => 'Supervisado por: ',
1573
                'content' => $supervisor ? ' ' . $supervisor->first_name . ' ' . $supervisor->last_name : ' No Aplica '
1574
            ),
1575
            array(
1576
                'title' => 'Comentarios del supervisor: ',
1577
                'content' => $testBoth ? ' ' . $testBoth->comment : 'No Aplica'
1578
            ),
1579
            array(
1580
                'title' => 'Porcentage de adaptibilidad ',
1581
                'content' => $points
1582
            )
1583
        ];
1584
 
1585
        $pdf->borderTable('DATOS DE LA ENTREVISTA', $rows);
1586
 
1587
        $sections = json_decode($testBoth->content, true);
1588
        /*
1589
                for ($s = 0; $s < count($sections); $s++) {
1590
 
1591
                    $pdf->singleTable($sections[$s]['title'], [
1592
                        array(
1593
                            'content' => $sections[$s]['type'] != 'multiple' ? $sections[$s]['text'] : ''
1594
                    )]);
1595
 
1596
                    if ($sections[$s]['type'] == 'multiple') {
1597
 
1598
                        $pdf->titleOptionTable($sections[$s]['text']);
1599
 
1600
                        for ($o = 0; $o < count($sections[$s]['options']); $o++) {
1601
 
1602
                            $pdf->optionTable($sections[$s]['options'][$o]['title']);
1603
                        }
1604
                        $pdf->Ln();
1605
                    }
1606
                    if ($s % 2 == 0 && $s > 1) {
1607
                        $pdf->AddPage();
1608
                    }
1609
                }*/
1610
 
1611
        // Competencies
1612
        if (count($competencies) != 0) {
1613
 
1614
            // add new page
1615
 
1616
            $pdf->AddPage();
1617
 
1618
            $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:');
1619
 
1620
            $pdf->singleTable('Anexo de valores:', $competencies_header);
1621
 
1622
 
1623
            // Add scale section
1624
            $pdf->sectionScale();
1625
 
1626
            $i = 0;
1627
 
1628
            foreach ($competencies as $record) {
1629
 
1630
                $i = $i + 1;
1631
 
1632
                $pdf->competencyTable($i, $record);
1633
 
1634
                if ($i % 3 == 0 && $i < count($competencies)) {
1635
                    $pdf->AddPage();
1636
                }
1637
            }
1638
 
1639
        }
1640
 
1641
        return $pdf->Output();
1642
 
1643
    }
1644
 
1645
    public function reportSupervisorAction() {
1646
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1647
        $currentUser = $currentUserPlugin->getUser();
1648
        $currentCompany = $currentUserPlugin->getCompany();
1649
 
1650
        $uuid = $this->params()->fromRoute('id');
1651
 
1652
        $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1653
        $test = $testMapper->fetchOneByUuid($uuid);
1654
 
1655
        $testSupervisorMapper = CompanyPerformanceEvaluationTestSupervisorMapper::getInstance($this->adapter);
1656
        $testSupervisor = $testSupervisorMapper->fetchOneByTestId($test->id);
1657
 
1658
        $formMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
1659
        $form = $formMapper->fetchOne($test->form_id);
1660
 
1661
        if (!$form) {
1662
            return new JsonModel([
1663
                'success' => false,
1664
                'data' => 'ERROR_FORM_EVALUATION_NOT_FOUND'
1665
            ]);
1666
        }
1667
 
1668
        $request = $this->getRequest();
1669
        if ($request->isGet()) {
1670
            //Competencies
1671
 
1672
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
1673
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
1674
            $competenceTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
1675
            $behaviorCompetencyMapper = BehaviorCompetencyMapper::getInstance($this->adapter);
1676
            $jobDescriptionBehaviorCompetencyMapper = JobDescriptionBehaviorCompetencyMapper::getInstance($this->adapter);
1677
            $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
1678
 
1679
            $competencies = [];
1680
 
1681
            $jobDescriptionCompetency = $jobDescriptionCompetencyMapper->fetchByJobDescriptionId($form->job_description_id);
1682
 
1683
            $content = json_decode($testSupervisor->content, true);
1684
 
1685
            foreach ($jobDescriptionCompetency as $record) {
1686
 
1687
                $competency = $competencyMapper->fetchOne($record->competency_id);
1688
                $competenceType = $competenceTypeMapper->fetchOne($competency->competency_type_id);
1689
 
1690
                if ($competency && $competenceType) {
1691
 
1692
                    $behaviorCompetencies = $behaviorCompetencyMapper->fetchByCompetencyId($competency->id);
1693
                    $behaviors = [];
1694
 
1695
                    foreach ($behaviorCompetencies as $rows) {
1696
 
1697
                        $behavior = $behaviorMapper->fetchOne($rows->behavior_id);
1698
                        $jobDescriptionBehaviorCompetency = $jobDescriptionBehaviorCompetencyMapper->fetchOneByBehavior($form->job_description_id, $record->competency_id, $rows->behavior_id);
1699
 
1700
                        if ($behavior && $jobDescriptionBehaviorCompetency) {
1701
                            $rowData = [
1702
                                'description' => $behavior->description,
1703
                                'level' => $jobDescriptionBehaviorCompetency->level,
1704
                                'comment' => '',
1705
                                'evaluation' => '',
1706
 
1707
                            ];
1708
 
1709
                            foreach($content as $eval) {
1710
                                if ($eval['competencyUuid'] == $competency->uuid &&
1711
                                    $eval['behaviorUuid'] == $behavior->uuid) {
1712
 
1713
                                    $rowData['comment'] = $eval['comment'];
1714
                                    $rowData['evaluation'] = $eval['evaluation'];
1715
 
1716
 
1717
                                    break;
1718
                                }
1719
                            }
1720
 
1721
                            $behaviors []= $rowData;
1722
                        }
1723
                    }
1724
 
1725
                    array_push($competencies, [
1726
                        'name' => $competency->name,
1727
                        'description' => $competency->description,
1728
                        'type' => $competenceType->name,
1729
                        'behaviors' => $behaviors
1730
                    ]);
1731
                }
1732
            }
1733
 
1734
            return $this->renderSupervisorPDF($currentCompany, $testSupervisor, $competencies);
1735
        }
1736
 
1737
        return new JsonModel([
1738
            'success' => false,
1739
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1740
        ]);
1741
    }
1742
 
1743
      /**
1744
     * Render PDF
1745
     * @param Company $currentCompany
1746
     * @param recruitmentSelectionInterview $interviewEvaluation
1747
     * @param array $competencies
1748
     * @return mixed
1749
     */
1750
    public function renderSupervisorPDF($currentCompany, $testSupervisor, $competencies) {
1751
 
1752
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1753
        $currentUser = $currentUserPlugin->getUser();
1754
 
1755
        //Generate New PDF
1756
        $pdf = new InterviewPDF();
1757
 
1758
        $pdf->header = '';
1759
        $pdf->footer = '';
1760
 
1761
        if ($currentCompany) {
1762
            //get company Data
1763
            $companyMapper = CompanyMapper::getInstance($this->adapter);
1764
            $company = $companyMapper->fetchOne($currentCompany->id);
1765
 
1766
            $target_path = $this->config['leaderslinked.fullpath.company'] . DIRECTORY_SEPARATOR . $company->uuid;
1767
 
1768
            $pdf->header = $company->header ? $target_path . DIRECTORY_SEPARATOR . $company->header : '';
1769
            $pdf->footer = $company->footer ? $target_path . DIRECTORY_SEPARATOR . $company->footer : '';
1770
        }
1771
 
1772
        $pdf->SetMargins(10, 0, 10);
1773
 
1774
        $pdf->AliasNbPages();
1775
        $pdf->AddPage();
1776
 
1777
        $testMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
1778
        $test = $testMapper->fetchOne($testSupervisor->test_id);
1779
 
1780
        $userMapper = UserMapper::getInstance($this->adapter);
1781
        $supervisor = $userMapper->fetchOne($testSupervisor->supervisor_id);
1782
 
1783
        switch ($testSupervisor->points) {
1784
            case "0":
1785
                $points = "Sugerir otro cargo";
1786
                break;
1787
            case "1":
1788
                $points = "25%";
1789
                break;
1790
            case "2":
1791
                $points = "50%";
1792
                break;
1793
            case "3":
1794
                $points = "75%";
1795
                break;
1796
            case "4":
1797
                $points = "100%";
1798
                break;
1799
            default :
1800
                $points = "ERROR";
1801
                break;
1802
        }
1803
 
1804
        $rows = [
1805
            array(
1806
                'title' => 'Nombre Evaluado: ',
1807
                'content' => $testSupervisor ? ' ' . $testSupervisor->first_name . ' ' . $testSupervisor->last_name : 'No Aplica'
1808
            ),
1809
            array(
1810
                'title' => 'Supervisado por: ',
1811
                'content' => $supervisor ? ' ' . $supervisor->first_name . ' ' . $supervisor->last_name : ' No Aplica '
1812
            ),
1813
            array(
1814
                'title' => 'Comentarios del supervisor: ',
1815
                'content' => $testSupervisor ? ' ' . $testSupervisor->comment : 'No Aplica'
1816
            ),
1817
            array(
1818
                'title' => 'Porcentage de adaptibilidad ',
1819
                'content' => $points
1820
            )
1821
        ];
1822
 
1823
        $pdf->borderTable('DATOS DE LA ENTREVISTA', $rows);
1824
 
1825
        $sections = json_decode($testSupervisor->content, true);
1826
        /*
1827
                for ($s = 0; $s < count($sections); $s++) {
1828
 
1829
                    $pdf->singleTable($sections[$s]['title'], [
1830
                        array(
1831
                            'content' => $sections[$s]['type'] != 'multiple' ? $sections[$s]['text'] : ''
1832
                    )]);
1833
 
1834
                    if ($sections[$s]['type'] == 'multiple') {
1835
 
1836
                        $pdf->titleOptionTable($sections[$s]['text']);
1837
 
1838
                        for ($o = 0; $o < count($sections[$s]['options']); $o++) {
1839
 
1840
                            $pdf->optionTable($sections[$s]['options'][$o]['title']);
1841
                        }
1842
                        $pdf->Ln();
1843
                    }
1844
                    if ($s % 2 == 0 && $s > 1) {
1845
                        $pdf->AddPage();
1846
                    }
1847
                }*/
1848
 
1849
        // Competencies
1850
        if (count($competencies) != 0) {
1851
 
1852
            // add new page
1853
 
1854
            $pdf->AddPage();
1855
 
1856
            $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:');
1857
 
1858
            $pdf->singleTable('Anexo de valores:', $competencies_header);
1859
 
1860
 
1861
            // Add scale section
1862
            $pdf->sectionScale();
1863
 
1864
            $i = 0;
1865
 
1866
            foreach ($competencies as $record) {
1867
 
1868
                $i = $i + 1;
1869
 
1870
                $pdf->competencyTable($i, $record);
1871
 
1872
                if ($i % 3 == 0 && $i < count($competencies)) {
1873
                    $pdf->AddPage();
1874
                }
1875
            }
1876
 
1877
        }
1878
 
1879
        return $pdf->Output();
1880
 
1881
    }
1384 efrain 1882
}