Proyectos de Subversion LeadersLinked - Backend

Rev

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

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