Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 1274 | Rev 1276 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
977 geraldo 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;
13
use LeadersLinked\Library\Functions;
14
use LeadersLinked\Mapper\CompanyPerformanceEvaluationFormMapper;
15
use LeadersLinked\Form\CompanyPerformanceEvaluationFormForm;
16
use LeadersLinked\Model\CompanyPerformanceEvaluationForm;
17
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
1052 geraldo 18
use LeadersLinked\Mapper\JobDescriptionMapper;
1270 geraldo 19
use LeadersLinked\Mapper\CompanyPerformanceEvaluationTestMapper;
1271 geraldo 20
use LeadersLinked\Mapper\JobDescriptionCompetencyMapper;
1272 geraldo 21
use LeadersLinked\Mapper\CompetencyMapper;
1273 geraldo 22
use LeadersLinked\Mapper\CompetencyTypeMapper;
1274 geraldo 23
use LeadersLinked\Mapper\BehaviorCompetencyMapper;
1275 geraldo 24
use LeadersLinked\Mapper\JobDescriptionBehaviorCompetencyMapper;
977 geraldo 25
use LeadersLinked\Mapper\CompanyPerformanceEvaluationFormUserMapper;
26
 
27
class PerformanceEvaluationFormController extends AbstractActionController {
28
 
29
    /**
30
     *
31
     * @var AdapterInterface
32
     */
33
    private $adapter;
34
 
35
    /**
36
     *
37
     * @var AbstractAdapter
38
     */
39
    private $cache;
40
 
41
    /**
42
     *
43
     * @var  LoggerInterface
44
     */
45
    private $logger;
46
 
47
    /**
48
     *
49
     * @var array
50
     */
51
    private $config;
52
 
53
    /**
54
     *
55
     * @param AdapterInterface $adapter
56
     * @param AbstractAdapter $cache
57
     * @param LoggerInterface $logger
58
     * @param array $config
59
     */
60
    public function __construct($adapter, $cache, $logger, $config) {
61
        $this->adapter = $adapter;
62
        $this->cache = $cache;
63
        $this->logger = $logger;
64
        $this->config = $config;
65
    }
66
 
67
    public function indexAction() {
68
        $request = $this->getRequest();
69
        $currentUserPlugin = $this->plugin('currentUserPlugin');
70
        $currentCompany = $currentUserPlugin->getCompany();
71
        $currentUser = $currentUserPlugin->getUser();
72
 
73
 
74
        $request = $this->getRequest();
75
        if ($request->isGet()) {
76
 
77
            $headers = $request->getHeaders();
78
 
79
            $isJson = false;
80
            if ($headers->has('Accept')) {
81
                $accept = $headers->get('Accept');
82
 
83
                $prioritized = $accept->getPrioritized();
84
 
85
                foreach ($prioritized as $key => $value) {
86
                    $raw = trim($value->getRaw());
87
 
88
                    if (!$isJson) {
89
                        $isJson = strpos($raw, 'json');
90
                    }
91
                }
92
            }
93
 
94
            if ($isJson) {
95
                $search = $this->params()->fromQuery('search', []);
96
                $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
97
 
98
                $page = intval($this->params()->fromQuery('start', 1), 10);
99
                $records_x_page = intval($this->params()->fromQuery('length', 10), 10);
100
                $order = $this->params()->fromQuery('order', []);
101
                $order_field = empty($order[0]['column']) ? 99 : intval($order[0]['column'], 10);
102
                $order_direction = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var($order[0]['dir'], FILTER_SANITIZE_STRING));
103
 
104
                $fields = ['name'];
105
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
106
 
107
                if (!in_array($order_direction, ['ASC', 'DESC'])) {
108
                    $order_direction = 'ASC';
109
                }
110
 
111
                $companyPerformanceEvaluationMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
112
                $paginator = $companyPerformanceEvaluationMapper->fetchAllDataTableByCompanyId($currentCompany->id, $search, $page, $records_x_page, $order_field, $order_direction);
113
 
1078 geraldo 114
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
115
 
977 geraldo 116
                $items = [];
117
                $records = $paginator->getCurrentItems();
118
                foreach ($records as $record) {
119
 
1078 geraldo 120
 
121
 
1098 geraldo 122
                    $jobDescription = $jobDescriptionMapper->fetchOne($record->job_description_id);
123
                    if ($jobDescription) {
977 geraldo 124
 
1098 geraldo 125
                        $item = [
126
                            'id' => $record->id,
127
                            'name' => $record->name,
128
                            'job_description' => $jobDescription->name,
129
                            'status' => $record->status,
130
                            'actions' => [
1263 geraldo 131
                                'link_report' => $this->url()->fromRoute('performance-evaluation/forms/report', ['id' => $record->uuid]),
1098 geraldo 132
                                'link_edit' => $this->url()->fromRoute('performance-evaluation/forms/edit', ['id' => $record->uuid]),
133
                                'link_delete' => $this->url()->fromRoute('performance-evaluation/forms/delete', ['id' => $record->uuid])
134
                            ]
135
                        ];
136
                    }
137
 
977 geraldo 138
                    array_push($items, $item);
139
                }
140
 
141
                return new JsonModel([
142
                    'success' => true,
143
                    'data' => [
144
                        'items' => $items,
145
                        'total' => $paginator->getTotalItemCount(),
146
                    ]
147
                ]);
148
            } else {
149
 
1064 geraldo 150
                $form = new CompanyPerformanceEvaluationFormForm($this->adapter, $currentCompany->id);
977 geraldo 151
 
1051 geraldo 152
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
153
                $jobsDescription = $jobDescriptionMapper->fetchAllByCompanyId($currentCompany->id);
154
 
977 geraldo 155
                $this->layout()->setTemplate('layout/layout-backend');
156
                $viewModel = new ViewModel();
157
                $viewModel->setTemplate('leaders-linked/performance-evaluation-forms/index.phtml');
158
                $viewModel->setVariable('form', $form);
1051 geraldo 159
                $viewModel->setVariable('jobsDescription', $jobsDescription);
977 geraldo 160
                return $viewModel;
161
            }
162
        } else {
163
            return new JsonModel([
164
                'success' => false,
165
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
166
            ]);
167
            ;
168
        }
169
    }
170
 
171
    public function addAction() {
172
        $request = $this->getRequest();
173
        $currentUserPlugin = $this->plugin('currentUserPlugin');
174
        $currentCompany = $currentUserPlugin->getCompany();
175
        $currentUser = $currentUserPlugin->getUser();
176
 
177
        $request = $this->getRequest();
178
 
179
 
180
        if ($request->isPost()) {
1064 geraldo 181
            $form = new CompanyPerformanceEvaluationFormForm($this->adapter, $currentCompany->id);
977 geraldo 182
            $dataPost = $request->getPost()->toArray();
1059 geraldo 183
 
184
 
977 geraldo 185
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : CompanyPerformanceEvaluationForm::STATUS_INACTIVE;
186
 
187
            $form->setData($dataPost);
188
 
189
            if ($form->isValid()) {
1058 geraldo 190
 
191
 
977 geraldo 192
                $dataPost = (array) $form->getData();
193
 
194
                $hydrator = new ObjectPropertyHydrator();
195
                $companyPerformanceEvaluation = new CompanyPerformanceEvaluationForm();
196
                $hydrator->hydrate($dataPost, $companyPerformanceEvaluation);
197
 
198
                if (!$companyPerformanceEvaluation->status) {
199
                    $companyPerformanceEvaluation->status = CompanyPerformanceEvaluationForm::STATUS_INACTIVE;
200
                }
201
                $companyPerformanceEvaluation->company_id = $currentCompany->id;
1075 geraldo 202
 
203
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
204
                $jobDescription = $jobDescriptionMapper->fetchOneByUuid($dataPost['job_description_id']);
205
                $companyPerformanceEvaluation->job_description_id = $jobDescription->id;
206
 
977 geraldo 207
                $companyPerformanceEvaluationMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
1076 geraldo 208
 
977 geraldo 209
                $result = $companyPerformanceEvaluationMapper->insert($companyPerformanceEvaluation);
210
 
1098 geraldo 211
 
977 geraldo 212
                if ($result) {
213
                    $this->logger->info('Se agrego el tamaño de empresa ' . $companyPerformanceEvaluation->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
214
 
215
                    // Get record by id
216
                    $record = $companyPerformanceEvaluationMapper->fetchOne($companyPerformanceEvaluation->id);
217
 
218
                    if ($record) {
1098 geraldo 219
 
977 geraldo 220
                        $data = [
221
                            'success' => true,
222
                            'id' => $record->id,
223
                            'action_edit' => $this->url()->fromRoute('performance-evaluation/forms/edit', ['id' => $record->uuid]),
224
                            'data' => 'LABEL_RECORD_ADDED'
225
                        ];
226
                    } else {
1098 geraldo 227
 
977 geraldo 228
                        $data = [
229
                            'success' => false,
230
                            'data' => 'ERROR_RECORD_NOT_FOUND'
231
                        ];
232
                    }
233
                } else {
234
                    $data = [
235
                        'success' => false,
236
                        'data' => $companyPerformanceEvaluationMapper->getError()
237
                    ];
238
                }
239
 
240
                return new JsonModel($data);
241
            } else {
242
                $messages = [];
243
                $form_messages = (array) $form->getMessages();
244
                foreach ($form_messages as $fieldname => $field_messages) {
245
 
246
                    $messages[$fieldname] = array_values($field_messages);
247
                }
248
 
249
                return new JsonModel([
250
                    'success' => false,
251
                    'data' => $messages
252
                ]);
253
            }
254
        } else {
255
            $data = [
256
                'success' => false,
257
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
258
            ];
259
 
260
            return new JsonModel($data);
261
        }
262
 
263
        return new JsonModel($data);
264
    }
265
 
266
    public function editAction() {
267
        $request = $this->getRequest();
268
        $currentUserPlugin = $this->plugin('currentUserPlugin');
269
        $currentCompany = $currentUserPlugin->getCompany();
270
        $currentUser = $currentUserPlugin->getUser();
271
 
272
        $request = $this->getRequest();
273
        $uuid = $this->params()->fromRoute('id');
274
 
275
 
276
        if (!$uuid) {
277
            $data = [
278
                'success' => false,
279
                'data' => 'ERROR_INVALID_PARAMETER'
280
            ];
281
 
282
            return new JsonModel($data);
283
        }
284
 
285
        $companyPerformanceEvaluationMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
286
        $companyPerformanceEvaluation = $companyPerformanceEvaluationMapper->fetchOneByUuid($uuid);
287
        if (!$companyPerformanceEvaluation) {
288
            $data = [
289
                'success' => false,
290
                'data' => 'ERROR_RECORD_NOT_FOUND'
291
            ];
292
 
293
            return new JsonModel($data);
294
        }
295
 
296
        if ($companyPerformanceEvaluation->company_id != $currentCompany->id) {
297
            return new JsonModel([
298
                'success' => false,
299
                'data' => 'ERROR_UNAUTHORIZED'
300
            ]);
301
        }
302
 
303
 
304
        if ($request->isPost()) {
1064 geraldo 305
            $form = new CompanyPerformanceEvaluationFormForm($this->adapter, $currentCompany->id);
977 geraldo 306
            $dataPost = $request->getPost()->toArray();
307
            $dataPost['status'] = isset($dataPost['status']) ? $dataPost['status'] : CompanyPerformanceEvaluationForm::STATUS_INACTIVE;
308
 
309
            $form->setData($dataPost);
310
 
311
            if ($form->isValid()) {
312
                $dataPost = (array) $form->getData();
313
 
314
                $hydrator = new ObjectPropertyHydrator();
315
                $hydrator->hydrate($dataPost, $companyPerformanceEvaluation);
316
 
317
                if (!$companyPerformanceEvaluation->status) {
318
                    $companyPerformanceEvaluation->status = CompanyPerformanceEvaluationForm::STATUS_INACTIVE;
319
                }
320
 
1080 geraldo 321
                $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
322
                $jobDescription = $jobDescriptionMapper->fetchOneByUuid($dataPost['job_description_id']);
323
                $companyPerformanceEvaluation->job_description_id = $jobDescription->id;
324
 
977 geraldo 325
                $result = $companyPerformanceEvaluationMapper->update($companyPerformanceEvaluation);
326
 
327
                if ($result) {
328
                    $this->logger->info('Se actualizo el tamaño de empresa ' . $companyPerformanceEvaluation->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
329
                    $data = [
330
                        'success' => true,
331
                        'id' => $companyPerformanceEvaluation->id,
332
                        'action_edit' => $this->url()->fromRoute('performance-evaluation/forms/edit', ['id' => $companyPerformanceEvaluation->uuid]),
333
                        'data' => 'LABEL_RECORD_UPDATED'
334
                    ];
335
                } else {
336
                    $data = [
337
                        'success' => false,
338
                        'data' => $companyPerformanceEvaluationMapper->getError()
339
                    ];
340
                }
341
 
342
                return new JsonModel($data);
343
            } else {
344
                $messages = [];
345
                $form_messages = (array) $form->getMessages();
346
                foreach ($form_messages as $fieldname => $field_messages) {
347
                    $messages[$fieldname] = array_values($field_messages);
348
                }
349
 
350
                return new JsonModel([
351
                    'success' => false,
352
                    'data' => $messages
353
                ]);
354
            }
355
        } else if ($request->isGet()) {
356
            $hydrator = new ObjectPropertyHydrator();
357
 
1080 geraldo 358
            $jobDescriptionMapper = JobDescriptionMapper::getInstance($this->adapter);
359
            $jobDescription = $jobDescriptionMapper->fetchOne($companyPerformanceEvaluation->job_description_id);
1098 geraldo 360
            if (!$jobDescription) {
1080 geraldo 361
                $data = [
362
                    'success' => false,
363
                    'data' => 'ERROR_METHOD_NOT_ALLOWED'
364
                ];
1098 geraldo 365
 
1080 geraldo 366
                return new JsonModel($data);
367
            }
368
 
977 geraldo 369
            $data = [
370
                'success' => true,
371
                'data' => [
372
                    'id' => $companyPerformanceEvaluation->uuid,
373
                    'name' => $companyPerformanceEvaluation->name,
1080 geraldo 374
                    'job_description_id' => $jobDescription->uuid,
977 geraldo 375
                    'status' => $companyPerformanceEvaluation->status,
1089 geraldo 376
                    'description' => $companyPerformanceEvaluation->description,
377
                    'text' => $companyPerformanceEvaluation->text,
977 geraldo 378
                    'content' => $companyPerformanceEvaluation->content ? json_decode($companyPerformanceEvaluation->content) : [],
379
                ]
380
            ];
381
 
382
            return new JsonModel($data);
383
        } else {
384
            $data = [
385
                'success' => false,
386
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
387
            ];
388
 
389
            return new JsonModel($data);
390
        }
391
 
392
        return new JsonModel($data);
393
    }
394
 
395
    public function deleteAction() {
396
        $request = $this->getRequest();
397
        $currentUserPlugin = $this->plugin('currentUserPlugin');
398
        $currentCompany = $currentUserPlugin->getCompany();
399
        $currentUser = $currentUserPlugin->getUser();
400
 
401
        $request = $this->getRequest();
402
        $uuid = $this->params()->fromRoute('id');
403
 
404
        if (!$uuid) {
405
            $data = [
406
                'success' => false,
407
                'data' => 'ERROR_INVALID_PARAMETER'
408
            ];
409
 
410
            return new JsonModel($data);
411
        }
412
 
413
        $companyPerformanceEvaluationMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
414
        $companyPerformanceEvaluation = $companyPerformanceEvaluationMapper->fetchOneByUuid($uuid);
415
        if (!$companyPerformanceEvaluation) {
416
            $data = [
417
                'success' => false,
418
                'data' => 'ERROR_RECORD_NOT_FOUND'
419
            ];
420
 
421
            return new JsonModel($data);
422
        }
423
 
424
        if ($companyPerformanceEvaluation->company_id != $currentCompany->id) {
425
            return new JsonModel([
426
                'success' => false,
427
                'data' => 'ERROR_UNAUTHORIZED'
428
            ]);
429
        }
430
 
431
        if ($request->isPost()) {
432
 
433
            //Falta borrar los test  primeramente
434
            $companyPerformanceEvaluationFormUserMapper = CompanyPerformanceEvaluationFormUserMapper::getInstance($this->adapter);
435
            $companyPerformanceEvaluationFormUserMapper->deleteAllByFormId($companyPerformanceEvaluation->id);
436
 
437
 
438
            $result = $companyPerformanceEvaluationMapper->delete($companyPerformanceEvaluation->id);
439
            if ($result) {
440
                $this->logger->info('Se borro el formulario de evaluación de desempeño ' . $companyPerformanceEvaluation->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
441
 
442
                $data = [
443
                    'success' => true,
444
                    'data' => 'LABEL_RECORD_DELETED'
445
                ];
446
            } else {
447
 
448
                $data = [
449
                    'success' => false,
450
                    'data' => $companyPerformanceEvaluationMapper->getError()
451
                ];
452
 
453
                return new JsonModel($data);
454
            }
455
        } else {
456
            $data = [
457
                'success' => false,
458
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
459
            ];
460
 
461
            return new JsonModel($data);
462
        }
463
 
464
        return new JsonModel($data);
465
    }
466
 
1263 geraldo 467
 
1269 geraldo 468
    public function reportAction() {
1263 geraldo 469
        $currentUserPlugin = $this->plugin('currentUserPlugin');
470
        $currentUser = $currentUserPlugin->getUser();
471
 
472
        $uuid = $this->params()->fromRoute('id');
473
 
474
        $companyPerformanceEvaluationFormMapper = CompanyPerformanceEvaluationFormMapper::getInstance($this->adapter);
475
        $companyPerformanceEvaluationForm = $companyPerformanceEvaluationFormMapper->fetchOneByUuid($uuid);
476
 
477
        if (!$companyPerformanceEvaluationForm) {
478
            return new JsonModel([
479
                'success' => false,
480
                'data' => 'ERROR_FORM_EVALUATION_NOT_FOUND'
481
            ]);
482
        }
483
 
484
        if ($companyPerformanceEvaluationForm->status == CompanyPerformanceEvaluationForm::STATUS_INACTIVE) {
485
            return new JsonModel([
486
                'success' => false,
487
                'data' => 'ERROR_FORM_EVALUATION_IS_INACTIVE'
488
            ]);
489
        }
490
 
491
 
492
        $companyPerformanceEvaluationFormUserMapper = CompanyPerformanceEvaluationFormUserMapper::getInstance($this->adapter);
493
        $companyPerformanceEvaluationFormUser = $companyPerformanceEvaluationFormUserMapper->fetchOneByFormIdAndUserId($companyPerformanceEvaluationForm->id, $currentUser->id);
494
        if (!$companyPerformanceEvaluationFormUser) {
495
            return new JsonModel([
496
                'success' => false,
497
                'data' => 'ERROR_FORM_EVALUATION_YOU_CAN_NOT_TAKE'
498
            ]);
499
        }
500
 
501
 
502
        $companyPerformanceEvaluationTestMapper = CompanyPerformanceEvaluationTestMapper::getInstance($this->adapter);
503
        $companyPerformanceEvaluationTest = $companyPerformanceEvaluationTestMapper->fetchOneBy($companyPerformanceEvaluationForm->id, $currentUser->id);
504
 
505
        if ($companyPerformanceEvaluationTest && $companyPerformanceEvaluationTest->status != CompanyPerformanceEvaluationTest::STATUS_DRAFT) {
506
            return new JsonModel([
507
                'success' => false,
508
                'data' => 'ERROR_FORM_EVALUATION_ALREADY_YOUR_APPLICATION_IN_THIS_TEST'
509
            ]);
510
        }
511
 
512
        $request = $this->getRequest();
513
        if ($request->isGet()) {
514
 
515
 
516
 
517
            // set content
518
 
519
            $content = $companyPerformanceEvaluationTest && $companyPerformanceEvaluationTest->status == CompanyPerformanceEvaluationTest::STATUS_DRAFT ?
520
                    json_decode($companyPerformanceEvaluationTest->content, true) :
521
                    json_decode($companyPerformanceEvaluationForm->content, true);
522
 
523
 
524
            //Competencies
525
 
526
            $jobDescriptionCompetencyMapper = JobDescriptionCompetencyMapper::getInstance($this->adapter);
527
            $competencyMapper = CompetencyMapper::getInstance($this->adapter);
528
            $competenceTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
529
            $behaviorCompetencyMapper = BehaviorCompetencyMapper::getInstance($this->adapter);
530
            $jobDescriptionBehaviorCompetencyMapper = JobDescriptionBehaviorCompetencyMapper::getInstance($this->adapter);
531
            $behaviorMapper = BehaviorsMapper::getInstance($this->adapter);
532
 
533
            $competencies = [];
534
 
535
            $jobDescriptionCompetency = $jobDescriptionCompetencyMapper->fetchByJobDescriptionId($companyPerformanceEvaluationForm->job_description_id);
536
 
537
            foreach ($jobDescriptionCompetency as $record) {
538
 
539
 
540
                $competency = $competencyMapper->fetchOne($record->competency_id);
541
                $competenceType = $competenceTypeMapper->fetchOne($competency->competency_type_id);
542
 
543
                if($competency && $competenceType){
544
 
545
                    $behaviorCompetencies = $behaviorCompetencyMapper->fetchByCompetencyId($competency->id);
546
                    $behaviors = [];
547
 
548
                    foreach ($behaviorCompetencies as $rows) {
549
 
550
                        $behavior = $behaviorMapper->fetchOne($rows->behavior_id);
551
                        $jobDescriptionBehaviorCompetency = $jobDescriptionBehaviorCompetencyMapper->fetchOneByBehavior($companyPerformanceEvaluationForm->job_description_id, $record->competency_id, $rows->behavior_id);
552
 
553
                        if ($behavior && $jobDescriptionBehaviorCompetency) {
554
 
555
                            array_push($behaviors, [
556
                                'id_section' => $competency->uuid,
557
                                'id_option' => $behavior->uuid,
558
                                'title' => $behavior->description,
559
                                'level' => $jobDescriptionBehaviorCompetency->level,
560
                                'answer' => ''
561
                            ]);
562
                        }
563
                    }
564
 
565
                    array_push($competencies, [
566
                        'id_section' => $competency->uuid,
567
                        'title' => $competenceType->name. '  '.$competency->name,
568
                        'text' => $competency->description,
569
                        'type'=>'competency',
570
                        'options' => $behaviors
571
                    ]);
572
 
573
                }
574
 
575
            }
576
 
577
            return new JsonModel([
578
                'success' => true,
579
                'data' => [
580
                    'name' => $companyPerformanceEvaluationForm->name,
581
                    'description' => $companyPerformanceEvaluationForm->description,
582
                    'text' => $companyPerformanceEvaluationForm->text,
583
                    'competencies'=>$competencies,
584
                    'content' => $content,
585
                ]
586
            ]);
587
        }
588
 
589
        if ($request->isPost()) {
590
            $form = new PerformanceEvaluationTestForm();
591
            $dataPost = $request->getPost()->toArray();
592
 
593
            $form->setData($dataPost);
594
 
595
            if ($form->isValid()) {
596
 
597
 
598
                $dataPost = (array) $form->getData();
599
 
600
                $performanceEvaluationTest = new CompanyPerformanceEvaluationTest();
601
                $performanceEvaluationTest->company_id = $companyPerformanceEvaluationForm->company_id;
602
                $performanceEvaluationTest->form_id = $companyPerformanceEvaluationForm->id;
603
                $performanceEvaluationTest->user_id = $currentUser->id;
604
                $performanceEvaluationTest->status = $dataPost['status'];
605
                $performanceEvaluationTest->content = $dataPost['content'];
606
 
607
 
608
                //Check if the form is already registered
609
                $companyPerformanceEvaluationTest = $companyPerformanceEvaluationTestMapper->fetchOneBy($companyPerformanceEvaluationForm->id, $currentUser->id);
610
 
611
 
612
                $result = $companyPerformanceEvaluationTest ?
613
                        $companyPerformanceEvaluationTestMapper->update($performanceEvaluationTest, $companyPerformanceEvaluationTest->id) :
614
                        $companyPerformanceEvaluationTestMapper->insert($performanceEvaluationTest);
615
 
616
 
617
                if ($result) {
618
                    $this->logger->info('Se agrego un nuevo test de auto-evaluación : ' . $companyPerformanceEvaluationForm->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
619
 
620
                    $data = [
621
                        'success' => true,
622
                        'data' => $companyPerformanceEvaluationTest ? 'LABEL_RECORD_UPDATED' : 'LABEL_RECORD_ADDED'
623
                    ];
624
                } else {
625
                    $data = [
626
                        'success' => false,
627
                        'data' => $companyPerformanceEvaluationTestMapper->getError()
628
                    ];
629
                }
630
 
631
                return new JsonModel($data);
632
            } else {
633
                $messages = [];
634
                $form_messages = (array) $form->getMessages();
635
                foreach ($form_messages as $fieldname => $field_messages) {
636
 
637
                    $messages[$fieldname] = array_values($field_messages);
638
                }
639
 
640
                return new JsonModel([
641
                    'success' => false,
642
                    'data' => $messages
643
                ]);
644
            }
645
        }
646
 
647
        return new JsonModel([
648
            'success' => false,
649
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
650
        ]);
651
    }
652
 
977 geraldo 653
}