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