<?php
include("Bi_layout_importacaoController.php");
require_once($config->diretorio_raiz()."/src/model/bd/Bi_colunas_layout_impDAO.php");
$bi_colunas_layout_impDAO = new Bi_colunas_layout_impDAO();
if(file_exists("../../config/config_dir_raiz.php")) { require_once("../../config/config_dir_raiz.php"); } elseif(file_exists("config/config_dir_raiz.php")) { require_once("config/config_dir_raiz.php"); }
require($config->diretorio_raiz()."/vendor/simplexlsx-master/src/SimpleXLSX.php");
require($config->diretorio_raiz()."/vendor/simplexls-master/src/SimpleXLS.php");
include $config->diretorio_raiz().'/vendor/PHPExcel-develop/Classes/PHPExcel.php';
require_once $config->diretorio_raiz().'/vendor/phpExcelReader/Excel/reader.php';

if (isset($_GET["mod"]) && $_GET["mod"] == "filtro_user")
{
	if ( (isset($_GET["codigo"]) and $_GET["codigo"] != "")  )
	{
		$bi_layout_importacao = $bi_layout_importacaoDAO->buscarBi_layout_importacao($_GET["codigo"]);
	}else{
		$bi_layout_importacao = new Bi_layout_importacao();
		$bi_layout_importacao->setUsuario_incluiu(new Bi_usuario());
	}
	$listaUsuario_incluiu = $bi_usuarioDAO->listarTodosRegistros(); 
	if (isset($_GET["usuario_incluiu"]) and $_GET["usuario_incluiu"] != "")
	{
		$bi_layout_importacao->setUsuario_incluiu($bi_usuarioDAO->buscarBi_usuario($_GET["usuario_incluiu"]));
		$campo_buscar = "&usuario_incluiu=".$_GET["usuario_incluiu"]; 
	}
	include_once($config->diretorio_raiz()."/src/view/bi_layout_importacao/Filtro_lista_registrosUser.php");
}
elseif (isset($_GET["mod"]) && $_GET["mod"] == "form_user")
{
	if ( (isset($_GET["codigo"]) and $_GET["codigo"] != "")  )
	{
		$bi_layout_importacao = $bi_layout_importacaoDAO->buscarBi_layout_importacao($_GET["codigo"]);
	}else{
		$bi_layout_importacao = new Bi_layout_importacao();
		$bi_layout_importacao->setUsuario_incluiu(new Bi_usuario());
	}
	$listaUsuario_incluiu = $bi_usuarioDAO->listarTodosRegistros(); 
	if (isset($_GET["usuario_incluiu"]) and $_GET["usuario_incluiu"] != "")
	{
		$bi_layout_importacao->setUsuario_incluiu($bi_usuarioDAO->buscarBi_usuario($_GET["usuario_incluiu"]));
		$campo_buscar = "&usuario_incluiu=".$_GET["usuario_incluiu"]; 
	}
	include_once($config->diretorio_raiz()."/src/view/bi_layout_importacao/FormularioUser.php");
}
elseif (isset($_GET["mod"]) && $_GET["mod"] == "form_import")
{
	if ( (isset($_GET["codigo"]) and $_GET["codigo"] != "")  )
	{
		$bi_layout_importacao = $bi_layout_importacaoDAO->buscarBi_layout_importacao($_GET["codigo"]);
	}else{
		$bi_layout_importacao = new Bi_layout_importacao();
		$bi_layout_importacao->setUsuario_incluiu(new Bi_usuario());
	}
	$listaUsuario_incluiu = $bi_usuarioDAO->listarTodosRegistros(); 
	if (isset($_GET["usuario_incluiu"]) and $_GET["usuario_incluiu"] != "")
	{
		$bi_layout_importacao->setUsuario_incluiu($bi_usuarioDAO->buscarBi_usuario($_GET["usuario_incluiu"]));
		$campo_buscar = "&usuario_incluiu=".$_GET["usuario_incluiu"]; 
	}
	$listaLayout = $bi_layout_importacaoDAO->listarTodosRegistros(); 
	include_once($config->diretorio_raiz()."/src/view/bi_layout_importacao/FormularioImport.php");
}
elseif(isset($_GET["mod"]) && $_GET["mod"] == "upload")
{
	$iniciaCabecalhoLinha = $_POST["iniciaCabecalhoLinha"];
	$colunaTestaFim= $_POST["colunaTestaFim"]; 
	$textoTesteFim = $_POST["textoTesteFim"];
	$total = count($_FILES['userfile']['name']);
	for( $i=0 ; $i < $total ; $i++ ) {
		//Get the temp file path
		$tmpFilePath = $_FILES['userfile']['tmp_name'][$i];
		//Make sure we have a file path
		if ($tmpFilePath != ""){
			$uploaddir = $config->diretorio_raiz()."/src/view/bi_layout_importacao/upload/";
			$uploadfile = $uploaddir . basename($_FILES['userfile']['name'][$i]);
			$nomeArquivo = $_FILES['userfile']['name'][$i];
			$baixou = move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile);
			if(substr(strtolower($nomeArquivo),-3) != "php" and $baixou )
			{
				$array = null;
				//$nomeArquivo = "teste.xls";
				if(substr(strtolower($nomeArquivo),-4) == "xlsx"  )
				{
					$array = excelToArray($uploadfile, $nomeArquivo, $iniciaCabecalhoLinha, $colunaTestaFim, $textoTesteFim);
				}
				elseif(substr(strtolower($nomeArquivo),-3) == "xls"  )
				{
					$array = excelToArray($uploadfile, $nomeArquivo, $iniciaCabecalhoLinha, $colunaTestaFim, $textoTesteFim);
				}
				elseif(substr(strtolower($nomeArquivo),-3) == "csv"  )
				{
					$array = csvToArray($uploadfile, $iniciaCabecalhoLinha, $colunaTestaFim, $textoTesteFim);
				}
				//print_r($array);
				if($array != null)
				{
					if(count($array["cabecalho"]) == 0)
					{
						$array = null;
					}
					else
					{
						$array = validarTipoDados($array);
						//validar outro arquivo com mesmas colunas
						$funcoes_bd = new Funcoes_bd();
						$inConluas = "";
						foreach($array["cabecalho"] as $colunas)
						{
							if($inConluas != "") {$inConluas .= ",";}
							$inConluas .= "'".$colunas["nome"]."'";
						}
						$codigoDuplicado = "";
						$nomeDuplicado = "";
						$select = "SELECT l.codigo, l.nome FROM bi_layout_importacao l
						join bi_colunas_layout_imp c on c.layout = l.codigo
						WHERE c.coluna in (".$inConluas.")";
						$rows = $funcoes_bd->sql($select);
						foreach($rows as $row)
						{
							$codigoDuplicado = $row["codigo"];
							$nomeDuplicado = $row["nome"];
						}
					}
				}
				include($config->diretorio_raiz()."/src/view/bi_layout_importacao/confirmarView.php");
				//criarTabela($array, "testetab");
				
			}
		}
	}
		

	$path = $config->diretorio_raiz()."/src/view/bi_layout_importacao/upload/";
	$diretorio = dir($path);
	while($arquivo = $diretorio -> read()){
		if ($arquivo != '.' and $arquivo != '..')
		{	
			//echo $path.$arquivo."<Br>";
			unlink($path.$arquivo);
		}	
	}
	$diretorio -> close();
}
elseif(isset($_GET["mod"]) && $_GET["mod"] == "confirmar")
{
	$array = array();
	$array["cabecalho"] = json_decode(base64_decode($_POST["jsonArray"]));
	//print_r($array);
	criarTabela($array);
}
elseif (isset($_GET["mod"]) && $_GET["mod"] == "excluir_user")
{
	$funcoes_bd = new Funcoes_bd();
	$bi_layout_importacao = $bi_layout_importacaoDAO->buscarBi_layout_importacao($_GET["codigo"]);
	$funcoes_bd->executarSql("drop table bi_layout_".$bi_layout_importacao->getNome(), $inputs = array());
	$funcoes_bd->executarSql("delete from bi_colunas_layout_imp where layout = ".$_GET["codigo"], $inputs = array());
	try
	{
		
		$bi_layout_importacaoDAO->excluir($bi_layout_importacao);
		$retorno["mensagem"] = utf8_decode("Excluido com sucesso!");
		$retorno["status"] = true;
	}
	catch (Exception  $e)
	{
		$retorno["mensagem"] = $e->getMessage();
		$retorno["status"] = false;
	}
	echo json_encode($retorno);
}
elseif(isset($_GET["mod"]) && $_GET["mod"] == "upload_import")
{
	$total = count($_FILES['userfile']['name']);
	for( $i=0 ; $i < $total ; $i++ ) {
		//Get the temp file path
		$tmpFilePath = $_FILES['userfile']['tmp_name'][$i];
		//Make sure we have a file path
		if ($tmpFilePath != ""){
			$uploaddir = $config->diretorio_raiz()."/src/view/bi_layout_importacao/upload/";
			$uploadfile = $uploaddir . basename($_FILES['userfile']['name'][$i]);
			$nomeArquivo = $_FILES['userfile']['name'][$i];
			$baixou = move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile);
			if(substr(strtolower($nomeArquivo),-3) != "php" and $baixou )
			{
				$array = null;
				$bi_layout_importacao = $bi_layout_importacaoDAO->buscarBi_layout_importacao($_POST["layout"]);
				$iniciaCabecalhoLinha = $bi_layout_importacao->getLinha_inicia_cabecalho();
				$colunaTestaFim = $bi_layout_importacao->getColuna_testa_fim();
				$textoTesteFim = $bi_layout_importacao->getTexto_teste_fim();
				//$nomeArquivo = "teste.xls";
				if(substr(strtolower($nomeArquivo),-4) == "xlsx"  )
				{
					$array = excelToArray($uploadfile, $nomeArquivo,  $iniciaCabecalhoLinha, $colunaTestaFim, $textoTesteFim);
				}
				elseif(substr(strtolower($nomeArquivo),-3) == "xls"  )
				{
					$array = excelToArray($uploadfile, $nomeArquivo,  $iniciaCabecalhoLinha, $colunaTestaFim, $textoTesteFim);
				}
				elseif(substr(strtolower($nomeArquivo),-3) == "csv"  )
				{
					$array = csvToArray($uploadfile,  $iniciaCabecalhoLinha, $colunaTestaFim, $textoTesteFim);
				}
				//print_r($array);
				if($array != null)
				{
					if(count($array["cabecalho"]) == 0)
					{
						$array = null;
					}
					else
					{
						$array = validarTipoDados($array);
						//validar outro arquivo com mesmas colunas
						$funcoes_bd = new Funcoes_bd();
						$inConluas = "";
						foreach($array["cabecalho"] as $colunas)
						{
							if($inConluas != "") {$inConluas .= ",";}
							$inConluas .= "'".$colunas["nome"]."'";
						}
						$codigo = "";
						$nome = "";
						$select = "SELECT l.codigo, l.nome FROM bi_layout_importacao l
						join bi_colunas_layout_imp c on c.layout = l.codigo
						WHERE c.coluna in (".$inConluas.")";
						$rows = $funcoes_bd->sql($select);
						foreach($rows as $row)
						{
							$codigo= $row["codigo"];
							$nome = $row["nome"];
						}
						//importar
						if($codigo != "")
						{
							$importou = importar($array, $nome);
						}
					}
				}
				include($config->diretorio_raiz()."/src/view/bi_layout_importacao/confirmarImportView.php");
				//criarTabela($array, "testetab");
				
			}
		}
	}
		

	$path = $config->diretorio_raiz()."/src/view/bi_layout_importacao/upload/";
	$diretorio = dir($path);
	while($arquivo = $diretorio -> read()){
		if ($arquivo != '.' and $arquivo != '..')
		{	
			//echo $path.$arquivo."<Br>";
			unlink($path.$arquivo);
		}	
	}
	$diretorio -> close();
}

//$array = csvToArray();
//$array = excelToArray();
/*$array = validarTipoDados($array);
criarTabela($array, "testetab");
print_r($array);*/
function criarTabela($array)
{
    $funcoes_bd = new Funcoes_bd();
	$bi_layout_importacaoDAO = new Bi_layout_importacaoDAO();
	$scriptIndex = "ALTER TABLE bi_layout_".$_POST['nome']." ADD UNIQUE Uniq_bi_layout_".$_POST['nome']." ( ";
	$script = "CREATE TABLE bi_layout_".$_POST['nome']." (";
	$linha = 0;
	foreach($array["cabecalho"] as $coluna)
	{
		$colunaDb =  strtolower(preg_replace("/[^A-Za-z0-9]/", '',str_replace(" ","",tirarAcentos($coluna->nome))));
		if($linha > 0 )
		{
			$script .= ",";
			if($linha<16){$scriptIndex .= ",";}
		}
		$tipo = $coluna->tipo;
		if($tipo == "varchar"){$tipo = $tipo."(".$coluna->tamanho.")";}
		if($tipo == "bigint"){$tipo = $tipo."(".$coluna->tamanho.")";}
		if($tipo == "float"){$tipo = $tipo."(".$coluna->tamanho.", ".$coluna->qtdDecimais.")";}
		$script .=  $colunaDb. " ".$tipo." ";
		if($linha<16){$scriptIndex .= $colunaDb;}
		$linha +=1;
	}
	$scriptIndex .= ")";
	$script .= ") ENGINE=MyISAM";
	
	//index
	//echo $scriptIndex;
	$bi_layout_importacao = new Bi_layout_importacao();
	//$bi_layout_importacao->setCodigo($_POST['codigo']);
	$bi_layout_importacao->setNome($_POST['nome']);
	$bi_layout_importacao->setDescricao($_POST['descricao']);
	$dateData_inclusao = new DateTime;
	$bi_layout_importacao->setData_inclusao($dateData_inclusao);
	$bi_layout_importacao->setUsuario_incluiu($_SESSION["id_usuario_bi"]);
	$bi_layout_importacao->setLinha_inicia_cabecalho($_POST['linha_inicia_cabecalho']);
	$bi_layout_importacao->setColuna_testa_fim($_POST['coluna_testa_fim']);
	$bi_layout_importacao->setTexto_teste_fim($_POST['texto_teste_fim']);
	$bi_colunas_layout_impDAO = new Bi_colunas_layout_impDAO();
	$codigo = "";
	if ($_GET["mod"] == "alterar")
	{
		/*$bi_layout_importacao->setCodigo($_POST['codigo']);
		$codigo = $bi_layout_importacao->getCodigo();
		try
		{
			$retorno["mensagem"] = "Alterado com sucesso!";
			$retorno["status"] = true;
			$bi_layout_importacaoDAO->atualizar($bi_layout_importacao);
		}
		catch (Exception  $e)
		{
			$retorno["mensagem"] = $e->getMessage();
			$retorno["status"] = false;
		}*/
	}
	else
	{
		try
		{
			$retorno["mensagem"] = "Inserido com sucesso!";
			$retorno["status"] = true;
			$codigo = $bi_layout_importacaoDAO->salvar($bi_layout_importacao);
			$funcoes_bd->executarSql($script,$inputs = array());
			//$funcoes_bd->executarSql($scriptIndex,$inputs = array());
		}
		catch (Exception  $e)
		{
			$retorno["mensagem"] = $e->getMessage();
			$retorno["status"] = false;
			echo json_encode($retorno);
			exit();
		}
	}
	if($codigo != "")
	{
		foreach($array["cabecalho"] as $coluna)
		{
			$bi_colunas_layout_imp = new Bi_colunas_layout_imp();
			//$bi_colunas_layout_imp->setCodigo($_POST['codigo']);
			$bi_colunas_layout_imp->setLayout($codigo);
			$bi_colunas_layout_imp->setColuna($coluna->nome);
			$bi_colunas_layout_imp->setTipo($coluna->tipo);
			$bi_colunas_layout_imp->setMascara($coluna->mascara);
			$bi_colunas_layout_imp->setTamanho($coluna->tamanho);
			$bi_colunas_layout_imp->setQtd_decimais($coluna->qtdDecimais);
			try
			{
				$retorno["mensagem"] = "Inserido com sucesso!";
				$retorno["status"] = true;
				$bi_colunas_layout_impDAO->salvar($bi_colunas_layout_imp);
			}
			catch (Exception  $e)
			{
				$retorno["mensagem"] = $e->getMessage();
				$retorno["status"] = false;
			}
		}
	}
	echo json_encode($retorno);
	
}
function validarTipoDados($array)
{
	//ler 10 primeiras linhas para pegar o tipo de dados
	$qtdLinhas = count($array["conteudo"]);
	//linhas
	for($i =0; $i < $qtdLinhas; $i++)
	{
		//colunas
		for($j =0; $j < count($array["conteudo"][$i]); $j++)
		{
			$coluna = $array["conteudo"][$i][$j];
			$colunaNumero = str_replace(',', '.', $coluna);
			if(filter_var ( $coluna, FILTER_VALIDATE_INT ) != false)
			{
				$array["cabecalho"][$j]["tipo"] = "bigint";
				$array["cabecalho"][$j]["tamaho"] = "21";
				$array["cabecalho"][$j]["qtdDecimais"] = "";
			}
			elseif(is_numeric($colunaNumero))
			{
				$array["cabecalho"][$j]["tipo"] = "float";
				$array["cabecalho"][$j]["tamaho"] = "8";
				$array["cabecalho"][$j]["qtdDecimais"] = "4";
				$array["conteudo"][$i][$j] = floatval($colunaNumero);
			}
			else
			{
				$dateT = explode("T",$coluna );
				$coluna = $dateT[0];
				if(count($dateT) > 1)
				{
					$coluna .= " ".$dateT[1];
				}
				$barras = explode("/", $coluna);
				$doisPontos = explode(":", $coluna);
				$tracos = explode("-", $coluna);
				$coluna = substr($coluna,0,19);
				//arruma data do excell
				if(count($barras) == 3)
				{
					$adata= explode("/", $coluna);
					if(strlen($coluna[0]) == 1)
					{
						$adata[0] = "0".$adata[0];
					}
					if(strlen($coluna[1]) == 1)
					{
						$adata[1] = "0".$adata[1];
					}
					//$coluna = $adata[0]."/".$adata[1]."/".$adata[2];
				}
				if(strlen($coluna) == 10 and count($barras) == 3)
				{
					$array["cabecalho"][$j]["tipo"] = "date";
					$array["cabecalho"][$j]["mascara"] = "%d/%m/%Y";
					$array["cabecalho"][$j]["tamaho"] = "";
				    $array["cabecalho"][$j]["qtdDecimais"] = "";
					$array["conteudo"][$i][$j] = $coluna;
				}
				elseif(strlen($coluna) == 16 and count($barras) == 3 and count($doisPontos) == 2)
				{
					$array["cabecalho"][$j]["tipo"] = "datetime";
					$array["cabecalho"][$j]["mascara"] = "%d/%m/%Y %H:%i";
					$array["cabecalho"][$j]["tamaho"] = "";
				    $array["cabecalho"][$j]["qtdDecimais"] = "";
					$array["conteudo"][$i][$j] = $coluna;
				}
				elseif(strlen($coluna) == 19 and count($barras) == 3 and count($doisPontos) == 3)
				{
					$array["cabecalho"][$j]["tipo"] = "datetime";
					$array["cabecalho"][$j]["mascara"] = "%d/%m/%Y %H:%i:%s";
					$array["cabecalho"][$j]["tamaho"] = "";
				    $array["cabecalho"][$j]["qtdDecimais"] = "";
					$array["conteudo"][$i][$j] = $coluna;
				}
				elseif(strlen($coluna) == 10 and count($tracos) == 3)
				{
					$array["cabecalho"][$j]["tipo"] = "date";
					$array["cabecalho"][$j]["mascara"] = "%Y-%m-%d";
					$array["cabecalho"][$j]["tamaho"] = "";
				    $array["cabecalho"][$j]["qtdDecimais"] = "";
					$array["conteudo"][$i][$j] = $coluna;
				}
				elseif(strlen($coluna) == 16 and count($tracos) == 3 and count($doisPontos) == 2)
				{
					$array["cabecalho"][$j]["tipo"] = "datetime";
					$array["cabecalho"][$j]["mascara"] = "%Y-%m-%d %H:%i";
					$array["cabecalho"][$j]["tamaho"] = "";
				    $array["cabecalho"][$j]["qtdDecimais"] = "";
					$array["conteudo"][$i][$j] = $coluna;
				}
				elseif(strlen($coluna) == 19 and count($tracos) == 3 and count($doisPontos) == 3)
				{
					$array["cabecalho"][$j]["tipo"] = "datetime";
					$array["cabecalho"][$j]["mascara"] = "%Y-%m-%d %H:%i:%s";
					$array["cabecalho"][$j]["tamaho"] = "";
				    $array["cabecalho"][$j]["qtdDecimais"] = "";
					$array["conteudo"][$i][$j] = $coluna;
				}
			}
		}
		if($i == 9)
		{
			$i = $qtdLinhas;
		}
	}
	
	//percorre linhas novamente e troca para varchar as inconsistentes
	for($i =0; $i < $qtdLinhas; $i++)
	{
		//colunas
		for($j =0; $j < count($array["conteudo"][$i]); $j++)
		{
			$coluna = trim($array["conteudo"][$i][$j]);
			if($coluna != "")
			{
				$barras = explode("/", $coluna);
				$doisPontos = explode(":", $coluna);
				$tracos = explode("-", $coluna);
				if($array["cabecalho"][$j]["tipo"] == "date" and count($barras) < 3 and count($tracos) < 3  )
				{
					$array["cabecalho"][$j]["tipo"] = "varchar";
					$array["cabecalho"][$j]["mascara"] = "";
					$array["cabecalho"][$j]["tamaho"] = "40";
					$array["cabecalho"][$j]["qtdDecimais"] = "";
				}
				elseif($array["cabecalho"][$j]["tipo"] == "datetime" and ((count($barras) < 3 and count($tracos) < 3) or count($doisPontos) < 2 ) )
				{
					$array["cabecalho"][$j]["tipo"] = "varchar";
					$array["cabecalho"][$j]["mascara"] = "";
					$array["cabecalho"][$j]["tamaho"] = "40";
					$array["cabecalho"][$j]["qtdDecimais"] = "";
				}
				elseif($array["cabecalho"][$j]["tipo"] == "bigint" and preg_match('/[A-Za-z]/', $coluna) )
				{
					$array["cabecalho"][$j]["tipo"] = "varchar";
					$array["cabecalho"][$j]["mascara"] = "";
					$array["cabecalho"][$j]["tamaho"] = "40";
					$array["cabecalho"][$j]["qtdDecimais"] = "";
				}
				elseif($array["cabecalho"][$j]["tipo"] == "float" and preg_match('/[A-Za-z]/', $coluna) )
				{
					$array["cabecalho"][$j]["tipo"] = "varchar";
					$array["cabecalho"][$j]["mascara"] = "";
					$array["cabecalho"][$j]["tamaho"] = "40";
					$array["cabecalho"][$j]["qtdDecimais"] = "";
				}
			}
		}
	}
	return $array;
}

function csvToArray($file, $iniciaCabecalhoLinha, $colunaTestaFim, $textoTesteFim)
{
	//$iniciaCabecalhoLinha = 11;
	$iniciaCabecalhoLinha -= 1;
	$separador = ";";
	//$colunaTestaFim = 1;//usado para indicar quando finaliza o arquivo para não importar totais etc
	//$textoTesteFim = "Total:";//usado para indicar quando finaliza o arquivo para não importar totais etc
	
	$cabecalho = array();
	$conteudo = array();
	$linha = 0;
	$file = fopen($file,"r");
	while(! feof($file))
	{
		$txt = utf8_encode(fgets($file));
		$txt = str_replace('"','',$txt);
		$txt = str_replace("'","",$txt);
		$linha += 1;
		if($linha >= $iniciaCabecalhoLinha)
		{
			if (preg_match('/[A-Za-z]/', $txt) || preg_match('/[0-9]/', $txt)) //linha contem numeros ou letras
			{
				$colunas = explode($separador, $txt);
				if(count($cabecalho) == 0)
				{
					$qtdColuna = 0;
					foreach($colunas as $coluna)
					{
						$qtdColuna += 1;
						$cab = array();
						$cab["nome"] = $coluna;
						if(trim($cab["nome"]) == "")
						{
							$cab["nome"] = "coluna".$qtdColuna;
						}
						$cab["tipo"] = "varchar";
						$cab["mascara"] = "";
						$cab["tamanho"] = "40";
						$cab["qtdDecimais"] = "";
						array_push($cabecalho, $cab);
					}
					//echo $txt. "<br />";
				}
				else
				{
					if(count($colunas) >= count($cabecalho))
					{
						if(is_numeric($colunaTestaFim) and $textoTesteFim != "" and isset($colunas[$colunaTestaFim-1]) and count(explode($textoTesteFim, $colunas[$colunaTestaFim-1])) > 1)
						{
							break;
						}
						//echo $txt. "<br />";
						array_push($conteudo, $colunas);
					}
				}
				
			}
		}
		
	}

	fclose($file);
	$retorno = array();
	$retorno["cabecalho"] = $cabecalho;
	$retorno["conteudo"] = $conteudo;
	return  $retorno;
}

function tirarAcentos($string){
    return ( preg_replace("/[^a-zA-Z0-9-]/", "-", strtr(utf8_decode(trim($string)), utf8_decode("áàãâéêíóôõúüñçÁÀÃÂÉÊÍÓÔÕÚÜÑÇ"),"aaaaeeiooouuncAAAAEEIOOOUUNC-")) );
}

function excelToArray($uploadfile, $nomeArquivo,  $iniciaCabecalhoLinha, $colunaTestaFim, $textoTesteFim)
{
	//$iniciaCabecalhoLinha = 11;
	$iniciaCabecalhoLinha -= 1;
	$separador = ";";
	//$colunaTestaFim = 1;//usado para indicar quando finaliza o arquivo para não importar totais etc
	//$textoTesteFim = "Total:";//usado para indicar quando finaliza o arquivo para não importar totais etc
	$cabecalho = array();
	$conteudo = array();
	$arrayData = array();
	if(substr(strtolower($nomeArquivo),-4) == "xlsx"  )
	{
		$arrayData = converter_xls_array($uploadfile);
	}
	elseif(substr(strtolower($nomeArquivo),-3) == "xls"  )
	{
		$arrayData = converter_xls_array($uploadfile);
	}
	//print_r($arrayData);
	foreach($arrayData as $aba)
	{
		$linha = 0;
		foreach($aba as $alinha)
		{
			$linha += 1;
			$txt = "";
			foreach($alinha as $coluna)
			{
				$txt .= $coluna;
			}
			$txt = str_replace('"','',$txt);
			$txt = str_replace("'","",$txt);
			if($linha >= $iniciaCabecalhoLinha)
			{
				if (preg_match('/[A-Za-z]/', $txt) || preg_match('/[0-9]/', $txt)) //linha contem numeros ou letras
				{
					if(count($cabecalho) == 0)
					{
						$qtdColuna = 0;
						foreach($alinha as $coluna)
						{
							//echo $coluna;
							$qtdColuna += 1;
							$cab = array();
							$cab["nome"] = $coluna;
							if(trim($cab["nome"]) == "")
							{
								$cab["nome"] = "coluna".$qtdColuna;
							}
							$cab["tipo"] = "varchar";
							$cab["mascara"] = "";
							$cab["tamanho"] = "40";
							$cab["qtdDecimais"] = "";
							array_push($cabecalho, $cab);
						}
					}
					else
					{
						$colunas= $alinha;
						if(count($colunas) >= count($cabecalho))
						{
							if(is_numeric($colunaTestaFim) and $textoTesteFim != "" and isset($colunas[$colunaTestaFim-1]) and count(explode($textoTesteFim, $colunas[$colunaTestaFim-1])) > 1)
							{
								break;
							}
							//echo $txt. "<br />";
							array_push($conteudo, $colunas);
						}
					}
					//echo "<br>";
				}
			}
		}
		break;
	}
	//print_r($arrayData);		
	$retorno = array();
	$retorno["cabecalho"] = $cabecalho;
	$retorno["conteudo"] = $conteudo;
	return  $retorno;
}

function converter_xls_array($fileOriXLS)
{
	$filename = $fileOriXLS;
	$type = PHPExcel_IOFactory::identify($filename);
	$objReader = PHPExcel_IOFactory::createReader($type);
	$objPHPExcel = $objReader->load($filename);

	foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
		$worksheets[$worksheet->getTitle()] = $worksheet->toArray();
	}

	//print_r($worksheets);
	return $worksheets;
}

function importar($array, $nomeTab)
{
    $funcoes_bd = new Funcoes_bd();
	$bi_layout_importacaoDAO = new Bi_layout_importacaoDAO();
	$insert = "insert ignore into bi_layout_".$nomeTab." (";
	$linha = 0;
	$i = 0;
	$entrouAlguma = false;
	$qtdColunaBD = count($array["cabecalho"]);
	$query = "SELECT count(1) qtd FROM bi_layout_importacao l
	join bi_colunas_layout_imp c on c.layout = l.codigo
	where
	l.nome = '".$nomeTab."' ";
	$rows = $funcoes_bd->sql($query);
	//echo $query."<br><Br>";
	foreach($rows as $row)
	{
		$qtdColunaBD = intval($row["qtd"]);
		//echo "qtd col ".$qtdColunaBD;
	}
	foreach($array["cabecalho"] as $coluna)
	{
		
		$colunaDb =  strtolower(preg_replace("/[^A-Za-z0-9]/", '',str_replace(" ","",tirarAcentos($coluna["nome"]))));
		if($linha > 0 )
		{
			$insert .= ",";
		}
		$insert .= $colunaDb;
		//obter o tamaho real no banco
		if(substr($coluna["tipo"],0,7) == "varchar") 
		{
			$query = "SELECT tamanho, qtd_decimais FROM bi_layout_importacao l
			join bi_colunas_layout_imp c on c.layout = l.codigo
			where
			l.nome = '".$nomeTab."' and c.coluna = '".$colunaDb."'";
			$rows = $funcoes_bd->sql($query);
			//echo $query."<br><Br>";
			foreach($rows as $row)
			{
				$array["cabecalho"][$i]["tamanho"] = intval($row["tamanho"]);
				//echo $colunaDb." ".intval($row["tamanho"])."<br><br>";
				//$array["cabecalho"][$i]["qtdDecimais"] = intval($row["qtd_decimais"]);
			}
		}
		$i += 1;
		$linha +=1;
		if($i+1 > $qtdColunaBD)
		{
			break;	
		}
	}
	$insert .= ")";
	foreach($array["conteudo"] as $linhas)
	{
		$selectduplicidade = "select count(1) qtd from bi_layout_".$nomeTab." where ";
		$query = $insert." values ( ";
		$primeira = true;
		for($i =0; $i < count($linhas); $i++)
		{
			//echo $i." - ";
			if($i+1 > $qtdColunaBD)
			{
				break;	
			}
			$colunas = $linhas[$i];
			$colunaDb =  strtolower(preg_replace("/[^A-Za-z0-9]/", '',str_replace(" ","",tirarAcentos($array["cabecalho"][$i]["nome"]))));
			if(! $primeira)
			{
				$query .=" , ";
				$selectduplicidade .= " and ";
			}
			if($colunas == ""){$colunas = "null"; }
			else
			{
				if(substr($array["cabecalho"][$i]["tipo"],0,7) == "varchar") 
				{
					//altera tamanho da coluna no banco
					if(strlen($colunas) > $array["cabecalho"][$i]["tamanho"])
					{
						
						//echo strlen($colunas) ." ". $array["cabecalho"][$i]["tamanho"]." ".$array["cabecalho"][$i]["nome"]." ALTER TABLE bi_layout_".$nomeTab." CHANGE COLUMN ".$colunaDb." ".$colunaDb." varchar(".(strlen($colunas)+1).")";
						$funcoes_bd->executarSql("ALTER TABLE bi_layout_".$nomeTab." CHANGE COLUMN ".$colunaDb." ".$colunaDb." varchar(".(strlen($colunas)+1).")", array());
						$update = "update bi_layout_importacao l
							join bi_colunas_layout_imp c on c.layout = l.codigo
							set tamanho = ".(strlen($colunas)+1)."
							where l.nome = '".$nomeTab."' and c.coluna = '".$colunaDb."'";
						$funcoes_bd->executarSql($update, array());
						$array["cabecalho"][$i]["tamanho"] = (strlen($colunas)+1);
					}
					$colunas = "'".$colunas."'";
					
				}
				elseif(substr($array["cabecalho"][$i]["tipo"],0,4) == "date")
				{
					/*$adata= explode("/", $colunas);
					if(count($adata) == 3)
					{
						if(strlen($colunas[0]) == 1)
						{
							$adata[0] = "0".$adata[0];
						}
						if(strlen($colunas[1]) == 1)
						{
							$adata[1] = "0".$adata[1];
						}
						$colunas = $adata[0]."/".$adata[1]."/".$adata[2];
					}*/
					$colunas = "STR_TO_DATE('".$colunas."', '".$array["cabecalho"][$i]["mascara"]."')";
				}
			
			}
			$query .= $colunas;
			$selectduplicidade .= $colunaDb ." = ".$colunas;
			$primeira = false;
		}
		$query .=" )  ";
		//echo $query." <br>";
		//validar duplicidade
		//
		$qtd = 0;
		$selectduplicidade = str_replace("= null", "is null",$selectduplicidade);
		//echo $selectduplicidade."<Br>";
		$rows = $funcoes_bd->sql($selectduplicidade);
		foreach($rows as $row)
		{
			$qtd = intval($row["qtd"]);
		}
		if($qtd == 0)
		{
			$funcoes_bd->executarSql($query, array());
		}
		$entrouAlguma = true;
		
	}
	
	return $entrouAlguma;
}