Proyectos de Subversion LeadersLinked - Backend

Rev

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