Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16791 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 16791 Rev 16954
Línea 23... Línea 23...
23
use LeadersLinked\Library\Functions;
23
use LeadersLinked\Library\Functions;
24
use LeadersLinked\Library\JobDescriptionPdf;
24
use LeadersLinked\Library\JobDescriptionPdf;
25
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
25
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
26
use LeadersLinked\Model\User;
26
use LeadersLinked\Model\User;
27
use Laminas\Http\Response;
27
use Laminas\Http\Response;
-
 
28
use LeadersLinked\Form\JobDescription\ContentUploadForm;
-
 
29
use PhpOffice\PhpSpreadsheet\IOFactory;
-
 
30
use LeadersLinked\Model\CompetencyType;
-
 
31
use LeadersLinked\Model\Behavior;
-
 
32
use LeadersLinked\Model\Competency;
-
 
33
use LeadersLinked\Model\CompetencyBehavior;
Línea 28... Línea 34...
28
 
34
 
29
 
35
 
30
class JobDescriptionController extends AbstractActionController
36
class JobDescriptionController extends AbstractActionController
Línea 1169... Línea 1175...
1169
 
1175
 
1170
        return new JsonModel($data);
1176
        return new JsonModel($data);
Línea -... Línea 1177...
-
 
1177
    }
-
 
1178
    
-
 
1179
    
-
 
1180
    public function dictionaryAction()
-
 
1181
    {
-
 
1182
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
1183
        $currentUser = $currentUserPlugin->getUser();
-
 
1184
        $currentCompany = $currentUserPlugin->getCompany();
-
 
1185
        
-
 
1186
        $request = $this->getRequest();
-
 
1187
        
-
 
1188
        if ($request->isGet()) {
-
 
1189
            
-
 
1190
            $form = new ContentUploadForm();
-
 
1191
            
-
 
1192
            $this->layout()->setTemplate('layout/layout-backend');
-
 
1193
            $viewModel = new ViewModel();
-
 
1194
            $viewModel->setTemplate('leaders-linked/jobs-description/dictionary.phtml');
-
 
1195
            $viewModel->setVariables([
-
 
1196
                'form' => $form
-
 
1197
            ]);
-
 
1198
            return $viewModel;
-
 
1199
            
-
 
1200
        } 
-
 
1201
        else if ($request->isPost()) {
-
 
1202
            
-
 
1203
            $step = Functions::sanitizeFilterString($this->params()->fromPost('step'));
-
 
1204
            if($step == 'validation') {
-
 
1205
   
-
 
1206
                $form = new  ContentUploadForm();;
-
 
1207
                $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
-
 
1208
                
-
 
1209
                $form->setData($dataPost);
-
 
1210
                
-
 
1211
                if($form->isValid()) {
-
 
1212
                    
-
 
1213
                    $file = $_FILES['file'];
-
 
1214
                    $tmp_filename = $file['tmp_name'];
-
 
1215
                    $final_filename =  'data/' . $file['name'];
-
 
1216
                    
-
 
1217
                    if(!move_uploaded_file($tmp_filename, $final_filename)) {
-
 
1218
                        return new JsonModel([
-
 
1219
                            'success' => false,
-
 
1220
                            'data' => 'ERROR_UPLOAD_FILE'
-
 
1221
                        ]);
-
 
1222
                    }
-
 
1223
                    
-
 
1224
                    
-
 
1225
                    $behaviors = [];
-
 
1226
                    $competency_types = [];
-
 
1227
                    $competencies = [];
-
 
1228
  
-
 
1229
        
-
 
1230
                    
-
 
1231
                    
-
 
1232
                    
-
 
1233
                    $spreadsheet = IOFactory::load($final_filename);
-
 
1234
                    
-
 
1235
                    
-
 
1236
                    //Tipos de competencias
-
 
1237
                    $spreadsheet->setActiveSheetIndex(0);
-
 
1238
                    $records = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
-
 
1239
                    
-
 
1240
                    $i = 0;
-
 
1241
                    foreach($records as $record)
-
 
1242
                    {
-
 
1243
                        if(!$i) {
-
 
1244
                            $i++;
-
 
1245
                            continue;
-
 
1246
                        }
-
 
1247
                        
-
 
1248
                        //A = Referencia	B = Nombre	C = Descripción
-
 
1249
                        
-
 
1250
                        
-
 
1251
                        $reference = Functions::sanitizeFilterString($record['A']);
-
 
1252
                        $name = Functions::sanitizeFilterString($record['B']);
-
 
1253
                        $description = Functions::sanitizeFilterString($record['C']);
-
 
1254
 
-
 
1255
                        
-
 
1256
                        
-
 
1257
                        if(empty($reference) || empty($name) || empty($description) ) {
-
 
1258
                            continue;
-
 
1259
                        }
-
 
1260
                        
-
 
1261
                        array_push($competency_types, [
-
 
1262
                            'name' => $name, 
-
 
1263
                            'description' => $description, 
-
 
1264
                            'reference' => $reference
-
 
1265
                        ]);
-
 
1266
                    }
-
 
1267
                    
-
 
1268
                    
-
 
1269
                    //Comportamientos
-
 
1270
                    $spreadsheet->setActiveSheetIndex(1);
-
 
1271
                    
-
 
1272
                    
-
 
1273
                    $records = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
-
 
1274
                    
-
 
1275
                    
-
 
1276
                    $i = 0;
-
 
1277
                    foreach($records as $record)
-
 
1278
                    {
-
 
1279
                        if(!$i) {
-
 
1280
                            $i++;
-
 
1281
                            continue;
-
 
1282
                        }
-
 
1283
                        
-
 
1284
                        
-
 
1285
                        //A = Referencia	B = Descripción
-
 
1286
                        
-
 
1287
                        
-
 
1288
                        $reference = Functions::sanitizeFilterString($record['A']);
-
 
1289
                        $description = Functions::sanitizeFilterString($record['B']);
-
 
1290
                        
-
 
1291
                        
-
 
1292
                        
-
 
1293
                        if(empty($reference) || empty($description) ) {
-
 
1294
                            continue;
-
 
1295
                        }
-
 
1296
                        
-
 
1297
                        array_push($behaviors, [
-
 
1298
                            'description' => $description,
-
 
1299
                            'reference' => $reference
-
 
1300
                        ]);
-
 
1301
                    }
-
 
1302
                    
-
 
1303
                    
-
 
1304
                    //Competencias
-
 
1305
                    $spreadsheet->setActiveSheetIndex(2);
-
 
1306
                    
-
 
1307
                    
-
 
1308
                    $records = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
-
 
1309
                    
-
 
1310
                    
-
 
1311
                    $i  = 0;
-
 
1312
                    foreach($records as $record)
-
 
1313
                    {
-
 
1314
                        //A = Referencia	B = Tipo Competencia	C = Nombre	D = Descripción	 E =Comportamientos
-
 
1315
                        
-
 
1316
                        
-
 
1317
                        if(!$i) {
-
 
1318
                            $i++;
-
 
1319
                            continue;
-
 
1320
                        }
-
 
1321
                        
-
 
1322
                        $reference = Functions::sanitizeFilterString($record['A']);
-
 
1323
                        $competency_type = Functions::sanitizeFilterString($record['B']);
-
 
1324
                        $name = Functions::sanitizeFilterString($record['C']);
-
 
1325
                        $description = Functions::sanitizeFilterString($record['D']);
-
 
1326
                        $behaviors_reference = Functions::sanitizeFilterString($record['E']);
-
 
1327
                        
-
 
1328
                        
-
 
1329
                        
-
 
1330
                        if(empty($competency_type) || empty($reference) || empty($description) ) {
-
 
1331
                            continue;
-
 
1332
                        }
-
 
1333
                        
-
 
1334
                        array_push($competencies, [
-
 
1335
                            'reference' => $reference,
-
 
1336
                            'competency_type' => $competency_type,
-
 
1337
                            'name' =>  $name,
-
 
1338
                            'description' => $description,
-
 
1339
                            'behaviors' => $behaviors_reference,
-
 
1340
                        ]);
-
 
1341
                    }
-
 
1342
 
-
 
1343
                    $data = [
-
 
1344
                        'competency_types' => $competency_types,
-
 
1345
                        'competencies' => $competencies,
-
 
1346
                        'behaviors' => $behaviors,
-
 
1347
                    ];
-
 
1348
                    
-
 
1349
                    
-
 
1350
                    
-
 
1351
                    
-
 
1352
                    $key = md5($currentUser->id . '-' . microtime(true));
-
 
1353
                    $this->cache->setItem($key, serialize($data));
-
 
1354
                    
-
 
1355
                    return new JsonModel([
-
 
1356
                        'success' => true,
-
 
1357
                        'data' => [
-
 
1358
                            'key' => $key,
-
 
1359
                            'items' => $data,
-
 
1360
                        ]
-
 
1361
                    ]);
-
 
1362
                    
-
 
1363
                    @unlink($final_filename);
-
 
1364
                    
-
 
1365
                    
-
 
1366
                } else {
-
 
1367
                    $messages = [];
-
 
1368
                    $form_messages = (array) $form->getMessages();
-
 
1369
                    foreach($form_messages  as $fieldname => $field_messages)
-
 
1370
                    {
-
 
1371
                        
-
 
1372
                        $messages[$fieldname] = array_values($field_messages);
-
 
1373
                    }
-
 
1374
                    
-
 
1375
                    return new JsonModel([
-
 
1376
                        'success'   => false,
-
 
1377
                        'data'   => $messages
-
 
1378
                    ]);
-
 
1379
                }
-
 
1380
            } else if ($step == 'process') {
-
 
1381
                
-
 
1382
                $key = Functions::sanitizeFilterString($this->params()->fromPost('key'));
-
 
1383
                if(!$key) {
-
 
1384
                    return new JsonModel([
-
 
1385
                        'success' => false,
-
 
1386
                        'data' => 'ERROR_CACHE_KEY_EMPTY'
-
 
1387
                    ]);
-
 
1388
                }
-
 
1389
                
-
 
1390
                $value = $this->cache->getItem($key);
-
 
1391
                if(!$value) {
-
 
1392
                    
-
 
1393
                    return new JsonModel([
-
 
1394
                        'success' => false,
-
 
1395
                        'data' => 'ERROR_CACHE_NOT_FOUND'
-
 
1396
                    ]);
-
 
1397
                }
-
 
1398
                
-
 
1399
                $data = unserialize($value);
-
 
1400
                if(!$data) {
-
 
1401
                    return new JsonModel([
-
 
1402
                        'success' => false,
-
 
1403
                        'data' => 'ERROR_CACHE_INVALID'
-
 
1404
                    ]);
-
 
1405
                }
-
 
1406
                
-
 
1407
 
-
 
1408
                
-
 
1409
                $records_added = 0;
-
 
1410
                
-
 
1411
                $behaviorMapper = BehaviorMapper::getInstance($this->adapter);
-
 
1412
                
-
 
1413
                $competencyTypeMapper = CompetencyTypeMapper::getInstance($this->adapter);
-
 
1414
                $competencyMapper = CompetencyMapper::getInstance($this->adapter);
-
 
1415
                $competencyBehaviorMapper = CompetencyBehaviorMapper::getInstance($this->adapter);
-
 
1416
                
-
 
1417
                if(!empty($data['competency_types'])) {
-
 
1418
                    foreach($data['competency_types'] as $record)
-
 
1419
                    {
-
 
1420
               
-
 
1421
                        $competencyType = $competencyTypeMapper->fetchOneDefaultByExternalCode($record['reference']);
-
 
1422
                        if(!$competencyType) {
-
 
1423
                            
-
 
1424
                            $competencyType = new CompetencyType();
-
 
1425
                            $competencyType->external_code = $record['reference'];
-
 
1426
                            $competencyType->name = $record['name'];
-
 
1427
                            $competencyType->description = $record['description'];
-
 
1428
                            $competencyType->status = CompetencyType::STATUS_ACTIVE;
-
 
1429
                            
-
 
1430
                            if($competencyTypeMapper->insert($competencyType)) {
-
 
1431
                                $records_added++;
-
 
1432
                            } else {
-
 
1433
                                continue;
-
 
1434
                            }
-
 
1435
                        }
-
 
1436
                        
-
 
1437
                    }
-
 
1438
                }
-
 
1439
                
-
 
1440
                if(!empty($data['behaviors'])) {
-
 
1441
                    foreach($data['behaviors'] as $record)
-
 
1442
                    {
-
 
1443
                        $behavior = $behaviorMapper->fetchOneDefaultByExternalCode($record['reference']);
-
 
1444
                        if(!$behavior) {
-
 
1445
                            $behavior = new Behavior();
-
 
1446
                            $behavior->external_code = $record['reference'];
-
 
1447
                            $behavior->description = $record['description'];
-
 
1448
                            $behavior->status = Behavior::STATUS_ACTIVE;
-
 
1449
                            
-
 
1450
                            if($behaviorMapper->insert($behavior)) {
-
 
1451
                                $records_added++;
-
 
1452
                            }else {
-
 
1453
                                continue;
-
 
1454
                            }
-
 
1455
                        }
-
 
1456
                    }
-
 
1457
                }
-
 
1458
                
-
 
1459
                if(!empty($data['competencies'])) {
-
 
1460
                    foreach($data['competencies'] as $record)
-
 
1461
                    {
-
 
1462
                        
-
 
1463
       
-
 
1464
                        
-
 
1465
                        $competency = $competencyMapper->fetchOneDefaultByExternalCode($record['reference']);
-
 
1466
   
-
 
1467
                        if(!$competency) {
-
 
1468
                            $competencyType = $competencyTypeMapper->fetchOneDefaultByExternalCode($record['competency_type']);
-
 
1469
                            if($competencyType) {
-
 
1470
                                $competency = new Competency();
-
 
1471
                                $competency->competency_type_id = $competencyType->id;
-
 
1472
                                $competency->external_code = $record['reference'];
-
 
1473
                                $competency->name = $record['name'];
-
 
1474
                                $competency->description = $record['description'];
-
 
1475
                                $competency->status = Competency::STATUS_ACTIVE;
-
 
1476
                                
-
 
1477
                                if($competencyMapper->insert($competency)) {
-
 
1478
                                    $records_added++;
-
 
1479
                                } else {
-
 
1480
                                    continue;
-
 
1481
                                }
-
 
1482
                            }
-
 
1483
                            
-
 
1484
                            if(!empty($record['behaviors'])) {
-
 
1485
                                $behaviors = explode(',', $record['behaviors']);
-
 
1486
                                if(!empty($behaviors)) {
-
 
1487
                                    foreach($behaviors as $reference_behavior) {
-
 
1488
                                        
-
 
1489
                                        $behavior = $behaviorMapper->fetchOneDefaultByExternalCode($reference_behavior);
-
 
1490
                                        if($behavior) {
-
 
1491
                                        
-
 
1492
                                            
-
 
1493
                                            $competencyBehavior = $competencyBehaviorMapper->fetchOneByBehaviorIdAndCompetencyId($behavior->id, $competency->id);
-
 
1494
                                            if(!$competencyBehavior) {
-
 
1495
                                                $competencyBehavior = new CompetencyBehavior();
-
 
1496
                                                $competencyBehavior->behavior_id = $behavior->id;
-
 
1497
                                                $competencyBehavior->competency_id = $competency->id;
-
 
1498
                                               
-
 
1499
                                                if($competencyBehaviorMapper->insert($competencyBehavior)) {
-
 
1500
                                                    $records_added++;
-
 
1501
                                                }
-
 
1502
                                            }
-
 
1503
                                        }
-
 
1504
                                    }
-
 
1505
                                }
-
 
1506
                            }
-
 
1507
                        }
-
 
1508
                    }
-
 
1509
                }
-
 
1510
                
-
 
1511
                if($records_added) {
-
 
1512
                    
-
 
1513
                    $message = $records_added == 1 ?  'LABEL_1_RECORD_IMPORTED' : $records_added . ' LABEL_MULTI_RECORDS_IMPORTED';
-
 
1514
                    
-
 
1515
                } else {
-
 
1516
                    $message = 'LABEL_NO_RECORDS_IMPORTED';
-
 
1517
                   
-
 
1518
                }
-
 
1519
                
-
 
1520
                return new JsonModel([
-
 
1521
                    'success' => true,
-
 
1522
                    'data' => $message
-
 
1523
                ]);
-
 
1524
                
-
 
1525
                
-
 
1526
                
-
 
1527
                
-
 
1528
            } else {
-
 
1529
                
-
 
1530
                $data = [
-
 
1531
                    'success' => false,
-
 
1532
                    'data' => 'ERROR_STEP_UNKNOW'
-
 
1533
                ];
-
 
1534
                
-
 
1535
                
-
 
1536
                
-
 
1537
            }
-
 
1538
            
-
 
1539
            return new JsonModel($data);
-
 
1540
        } 
-
 
1541
        else {
-
 
1542
            $data = [
-
 
1543
                'success' => false,
-
 
1544
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
1545
            ];
-
 
1546
            
-
 
1547
            return new JsonModel($data);
-
 
1548
        }
-
 
1549
        
Línea 1171... Línea 1550...
1171
    }
1550
        return new JsonModel($data);
1172
    
1551
    }