Files

198 lines
5.9 KiB
PHP
Raw Permalink Normal View History

<?php
require_once __DIR__.'/auth_guard.php';
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once "../config.php";
require __DIR__ . '/../vendor/autoload.php';
$return = new stdClass();
//print_r($_FILES); die;
$files = $_FILES['customFile'];
$file_path = $files['tmp_name'][0]; // temporary upload path of the first file
$fileName = 'tmpusers.xlsx';
$dir_subida = '../data/tmpusers.xlsx';
move_uploaded_file($file_path, $dir_subida);
/** Identify the type of $inputFileName **/
$inputFileType = \PhpOffice\PhpSpreadsheet\IOFactory::identify($dir_subida);
/** Create a new Reader of the type that has been identified **/
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
/** Load $inputFileName to a Spreadsheet Object **/
$spreadsheet = $reader->load($dir_subida);
/** Convert Spreadsheet Object to an Array for ease of use **/
$schdeules = $spreadsheet->getActiveSheet()->toArray();
unlink($dir_subida);
$return = new stdClass();
//paso 1 verifcar headers
$headers = $schdeules[0];
global $link;
dbConnect();
//POSICIONES DE CAMPOS
$posnumempleado = '';
$poscorreo = '';
$posnombre = '';
$pospaterno = '';
$posmaterno = '';
$poscentrotrabajo ='';
$posdistrito = '';
$posposicion = '';
$possociedad = '';
$posdivision = '';
$posunidad = '';
$posceco = '';
$possupervisor= '';
foreach ($headers as $key => $head) {
if($head == 'No empleado'){
$posnumempleado = $key;
}
if ($head == 'Correo') {
$poscorreo = $key;
}
if ($head == 'Nombre(s)') {
$posnombre = $key;
}
if ($head == 'Apellido Paterno') {
$pospaterno = $key;
}
if ($head == 'Apellido Materno') {
$posmaterno = $key;
}
if ($head == 'Centro de trabajo Nombre') {
$poscentrotrabajo = $key;
}
if ($head == 'Distrito') {
$posdistrito = $key;
}
if ($head == 'Función Título de la función') {
$posposicion = $key;
}
if ($head == 'Sociedad Nombre') {
$possociedad = $key;
}
if ($head == 'División Nombre') {
$posdivision = $key;
}
if ($head == 'Unidad Organizativa Nombre') {
$posunidad = $key;
}
if ($head == 'Centro de costos Nombre') {
$posceco = $key;
}
if ($head == 'Supervisor') {
$possupervisor = $key;
}
}
if(!in_array ( "No empleado", $headers )){
$return->error = "1";
$return->msg = "No existe la columna número de empleado (No empleado)";
}else{
if ($poscorreo == '' || $posnombre == '' || $pospaterno == '' || $posmaterno == '' || $poscentrotrabajo == '' || $posdistrito == '' || $posposicion == '' || $possociedad == '' || $posdivision == '' || $posunidad == '' || $posceco == '' || $possupervisor == '') {
$return->error = "1";
$return->msg = "Hacen faltan columnas al template";
}else{
$values = array_splice ($schdeules, 1, sizeof($schdeules)-1);
$return->procesados = sizeof($values);
$return->correctos = 0;
$return->results = [];
foreach ($values as $value) {
if( $value[$posnumempleado] == "" ){
array_push ($return->results, '<span class="text-danger font-weight-bold">Usuario sin No empleado: '.$value[$posnombre]." ".$value[$pospaterno].'<span>');
}else if(!userExist($value[$posnumempleado])){
if(!valitelicencia()){
$sql = "INSERT INTO user (numempl, email , nombre, apellido, centrotrabajonom, distritonom, posicion, sociedad, division, unidad_organizativa, ceco, supervisor , idrol ) VALUES (";
$sql .= "'".$value[$posnumempleado]."', ";
$sql .= "'".$value[$poscorreo]."', ";
$sql .= "'".$value[$posnombre]."', ";
$sql .= "'".$value[$pospaterno]." ".$value[$posmaterno]."', ";
$sql .= "'".$value[$poscentrotrabajo]."', ";
$sql .= "'".$value[$posdistrito]."', ";
$sql .= "'".str_replace("'","&apos;",$value[$posposicion])."', ";
$sql .= "'".$value[$possociedad]."', ";
$sql .= "'".$value[$posdivision]."', ";
$sql .= "'".$value[$posunidad]."', ";
$sql .= "'".$value[$posceco]."', ";
$sql .= "'".$value[$possupervisor]."', ";
$sql .= "1)";
if(mysqli_query($link, $sql)){
$return->correctos++;
if ($value[$poscorreo] == '' || $value[$posnombre] == '' || $value[$pospaterno] == '' || $value[$posmaterno] == '' || $value[$poscentrotrabajo] == '' || $value[$posdistrito] == '' || $value[$posposicion] == '' || $value[$possociedad] == '' || $value[$posdivision] == '' || $value[$posunidad] == '' || $value[$posceco] == '' || $value[$possupervisor] == '') {
array_push ($return->results, 'El usuario: ' . $value[$posnumempleado] . ' se ingreso correctamente, hicieron falta algunos datos.');
}else{
array_push ($return->results, 'El usuario: ' . $value[$posnumempleado] . ' se ingreso correctamente');
}
}else{
array_push ($return->results, 'El usuario: ' . $value[$posnumempleado] . ' error: '. mysqli_error($link));
}
}else{
array_push ($return->results, 'Se alcanzado el límite de usuarios para dar de alta.');
}
}else{
array_push ($return->results, 'El usuario: ' . $value[$posnumempleado] . ' ya existe');
}
}
}
}
function userExist($numempl){
global $link;
dbConnect();
$sql ="select * from user where numempl = '$numempl'";
$result = mysqli_query($link, $sql);
if ( mysqli_num_rows($result) <= 0 ) {
return false;
}else{
return true;
}
}
function valitelicencia(){
global $link;
dbConnect();
$sql = "SELECT
COUNT(*) as estadisticos
FROM
user
INNER JOIN rol ON rol.id = user.idrol
WHERE
user.habilitado = 1";
$sqllimite = "SELECT
limiteusers as limite
FROM
licencia
WHERE
habilitado = 1";
$result = mysqli_query($link, $sql);
while ($row = mysqli_fetch_assoc ($result)){
$users = $row['estadisticos'];
}
$resultlimite = mysqli_query($link, $sqllimite);
while ($row = mysqli_fetch_assoc ($resultlimite)){
$limite = $row['limite'];
}
if ( $users >= $limite ) {
return true;
}else{
return false;
}
}
echo json_encode($return, JSON_UNESCAPED_UNICODE);
?>