<?php

set_time_limit(0);
ini_set("upload_max_filesize", "10M");
ini_set("max_execution_time", "-1");
ini_set("memory_limit", "-1");
ini_set("realpath_cache_size", "-1");
?>

<?php
    $aux = 0;

    class Upload
    {
        var $tipo;
        var $nome;
        var $tamanho;
         
        function Upload(){
        //Criando objeto
        }
         
        function UploadArquivo($arquivo, $pasta){ 
            if(isset($arquivo)){
                $nomeOriginal = $arquivo["name"]; 
                $tamanho = $arquivo["size"];
                 
                if (move_uploaded_file($arquivo["tmp_name"], $pasta . $nomeOriginal)){ 

                    $this->nome=$pasta . $nomeOriginal;
                    $this->tamanho=number_format($arquivo["size"]/1024, 2) . "KB";
                    return true; 
                }else{ 
                    return false;
                } 
            }
        } 
    }


    if(isset($_FILES["clientes"])){

        $upArquivo = new Upload;
        if($upArquivo->UploadArquivo($_FILES["clientes"], "planilhas/"))
        {   
            $nome = $upArquivo->nome;
            $tamanho = $upArquivo->tamanho;
            $caminho = "planilhas/".$nome;
            $resultado = grava_planilha_oco($nome); // recebo os dados da gravação
            $aux = 1;
        }else{
            $aux = 5;
        }

        unlink($nome);
    }


function consulta_empreendimento($empreendimento, $db){

	$query = mysqli_query($db, "SELECT `empreendimento_cadastro_id` FROM `empreendimento` WHERE `idempreendimento` = $empreendimento")or die(mysqli_error($db));

	$executa_query = mysqli_fetch_assoc($query);

	if(!empty($executa_query)){
		return $executa_query['empreendimento_cadastro_id'];
	}else{
		return false;
	}
}

function consulta_cliente($imobliaria, $db){

    $query = mysqli_query($db, "SELECT idcliente FROM `cliente` WHERE `nome_cli`= '$imobliaria' ");

    $executa_query = mysqli_fetch_assoc($query);

    if(!empty($executa_query)){
        return $executa_query['idcliente'];
    }else{
        return false;
    }
}

function consulta_quadra($empreendimento, $quadra, $db){

    $query = mysqli_query($db, "SELECT produto.idproduto FROM produto
                                INNER JOIN empreendimento ON empreendimento.idempreendimento = produto.empreendimento_idempreendimento
                                WHERE produto.quadra ='$quadra' AND empreendimento.idempreendimento = '$empreendimento'  ");

    if($query != null){
        $executa_query = mysqli_fetch_assoc($query);

        if(!empty($executa_query)){
            return $executa_query['idproduto'];
        }
    }else{
        return false;
    }
}

function consulta_lote($empreendimento, $quadra, $lote, $db){

    $query = mysqli_query($db, "SELECT lote.idlote FROM lote INNER JOIN produto 
                                ON produto.idproduto = lote.produto_idproduto INNER JOIN empreendimento 
                                ON empreendimento.idempreendimento = produto.empreendimento_idempreendimento 
                                WHERE lote.lote = '$lote' AND produto.idproduto = $quadra AND empreendimento.idempreendimento = $empreendimento ")or die(mysqli_error($db));

    $query ? $executa_query = mysqli_fetch_assoc($query) : $executa_query = '';

    if(!empty($executa_query)){
        return $executa_query['idlote'];
    }else{
        return false;
    }
}

function formata_data($data){
    $aux = explode('-', $data);

    $aux1 = $aux[1];
    $aux[1] = $aux[0];
    $aux[0] = $aux1;

    if($aux[2] > 90){
        $aux[2] = "19".$aux[2];
    }else{
        $aux[2] = "20".$aux[2];
    }

    $aux = implode('-', $aux);

    return $aux;
}

function formata_quadra_lote($quadra){

    //var_dump(strpos($quadra, '0'));
    //die();

    $valida = 1;
    //var_dump($quadra);

    for ($i=0; $i < strlen($quadra) ; $i++) {

        //var_dump($quadra[$i]);
        //echo "</br></br>";

        if(!is_numeric($quadra[$i])){
            $valida = 0;
            break;
        }
    }

    
    if(strpos($quadra, '0') === 0 && $valida == 1){
        $quadra = str_replace('0', '', $quadra);
    }
    

    /* assim esta colocando o 0 na frente
    if(($quadra > 0 && $quadra < 10) && strpos($quadra, '0') !== 0){
        $aux = $quadra;

        $quadra = '0'.$aux;
    }*/

    return $quadra;
}


function grava_planilha_oco($arquivo){// Passando o caminho do arquivo

    include_once "conexao.php";
	$retorno["ok"] = Array();

    // If you need to parse XLS files, include_once php-excel-reader
    require('spreadsheet-reader-master/PHPExcel.php');
    require('spreadsheet-reader-master/php-excel-reader/excel_reader2.php');
    require('spreadsheet-reader-master/SpreadsheetReader.php');


    $tabela_erro = new PHPExcel();
    $colunas = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X"];

    $Reader = new SpreadsheetReader($arquivo); // Crio o objeto do arquivo
    $Sheets = $Reader -> Sheets(); // Obtenho as planilhas do arquivo

    foreach ($Sheets as $Index => $Name){// Para percorrer as planilhas do arquivo
    	$aux_erro = 2;
		$Reader -> ChangeSheet($Index);  // Habilito a página atual para edição

		foreach ($Reader as $registro => $linha ){  //Para percorrer as linhas dentro da planilha

			$cont = 0;

			//Verifico se a linha está completamente vazia 
			foreach ($linha as $valor) {
				if(empty($valor)){
					$cont++;
				}
			}

			//Se a linha estiver vazia o script para a varredura
			if($cont == 7 && $registro > 1){
				break;
			}

			//Esse bloco verifica o titulo da planilha
			if ($registro == 0) {
				$aux = 0;
				foreach ($linha as $valor) {
    				if ($valor == "TABELA PARA CADASTRO DE OCORRENCIAS") {
    					$aux = 1;
    				}
				}
				if ($aux !== 1) {
					break;
				}
			}

			if($registro == 1){
				for($i = 0; $i <= count($linha); $i++){
                    if($i == count($linha)){
                        $tabela_erro->setActiveSheetIndex(0)->setCellValue("".$colunas[$i]."1", "Problema(s)");
                        break;
                    }
                    $tabela_erro->setActiveSheetIndex(0)->setCellValue("".$colunas[$i]."1", $linha[$i]);
				}
			}
		
			// Verifico se já passou as linhas de informação no começo do arquivo
			if ($registro > 1){

				// Validação dos dados da linha atual, segue abaixo os Index de cada coluna dentro da $linha

    			// imobiliaria = 0           Entrada/Sinal = 7               
                // Quadra = 1                Entrada = 8                     
                // Lote = 2                  Parcelamento Entrada = 9        
                // Cliente = 3               Vencimento 1 = 10               
                // Data da Venda = 4         Vencimento Restante = 11        
                // Número da Ficha = 5       Periodo = 12                 
                // Desconto = 6              Qntd Parcelas = 13


                //var_dump($linha);
                //die();
                $problema = '';
    			$venda;
                $aux;
    			$valida = 1;
    			for($i = 0; $i < count($linha); $i++){


    				if($i == 0){
    					if (empty($linha[$i])) {
    						$problema .= "empreendimento Não digitado";
    						$valida = 0;
    						break;
    					}else{
    						$empreendimento = consulta_empreendimento($linha[$i], $db);
    					}
    				}
    				elseif ($i == 1) {	
    					if (empty($linha[$i])) {
    						$valida = 0;
                            $problema = "Lote ou quadra nao preenchido";
    						break;

    					}else{
                            $aux = ($linha[$i]);
                            $aux = explode('*', $aux);
                            $aux[0] = formata_quadra_lote($aux[0]);
                            $aux[1] = formata_quadra_lote($aux[1]);

                            /*
                            var_dump($empreendimento);
                            var_dump(consulta_quadra($empreendimento, $aux[0]));
                            echo "</br>";
                            var_dump(consulta_lote($empreendimento, consulta_quadra($empreendimento, $aux[0]), $aux[1]));
                            echo "</br>";
                            var_dump($aux);
                            die();
                            */

                            if(consulta_quadra($empreendimento, $aux[0], $db)){
                                $venda['quadra'] = consulta_quadra($empreendimento, $aux[0], $db );

                                if(consulta_lote($empreendimento, $venda['quadra'], $aux[1], $db)){
                                    $venda['lote'] = consulta_lote($empreendimento, $venda['quadra'], $aux[1], $db);
                                }else{
                                	$valida = 0;
                                	$problema = "Lote nao encontrado";
                                	break;
                                }
                            }else{
                                $problema = "Quadra Não encontrado";
                                $valida = 0;
                                break;
                            }
                        }
    				}
    				elseif ($i == 2) {
    					if (empty($linha[$i])) {
    						$problema .= "usuario Não digitado";
                            $valida = 0;
                            break;
    					}else{
                            if(consulta_cliente($linha[$i], $db)){
                                $venda['cliente'] = consulta_cliente($linha[$i], $db);
                            }else{
                                $venda['cliente'] = '1665';
                            }
                        }
    				}
    				elseif ($i == 3) {
                        if(!empty($linha[$i])){
                            $venda['titulo'] = addslashes($linha[$i]);
                        }else {
                            $venda['titulo'] = '';
                        }
    				}

    				elseif ($i == 4) {
                        if(!empty($linha[$i])){
                            $venda['data'] = formata_data($linha[$i]);
                        }else {
                            $venda['data'] = '';
                        }
                    }

    				elseif ($i == 5) {
                        if(!empty($linha[$i])){
                            $venda['hora'] = ($linha[$i]);
                        }else {
                            $venda['hora'] = '';
                        }
                    }

    				elseif ($i == 6) {
                        if(!empty($linha[$i])){
                            $venda['texto'] = addslashes($linha[$i]);
                        }else {
                            $venda['texto'] = '';
                        }
                    }
                }
                //var_dump($linha);
                
    			if ($valida == 1) {

    				$venda['data_master'] = $venda['data'].' '.$venda['hora'];

    				$query = mysqli_query($db, "INSERT INTO `ocorrencia`(`idlocacao`, `titulo`, `descricao`, `data_ocorrencia`, `cadastrado_por`, `status_ocorrencia`, `ocorrencia_para`, `imovel_id`, `empreendimento_id`, `quadra_id`, `lote_id`, `ocorrencia_para_grupo`) 
    											VALUES (0,'".$venda['titulo']."','".$venda['texto']."','".$venda['data_master']."',".$venda['cliente'].",4,0,0,$empreendimento,'".$venda['quadra']."','".$venda['lote']."',0)");
    				array_push($retorno['ok'], $registro);

    			}else{	

    				// Insere as linha incorretas na tabela de erros
    				for($i = 0; $i <= count($linha) ; $i++){
                        if($i == count($linha)){
                            $tabela_erro->setActiveSheetIndex(0)->setCellValue("".$colunas[$i].$aux_erro."", $problema);
                            break;
                        }
                        $tabela_erro->setActiveSheetIndex(0)->setCellValue("".$colunas[$i].$aux_erro."", $linha[$i]);
    				}
    				$aux_erro++;

    				$retorno["error"] = 1;
    			}
			}
		}
    }

    $file = $objWriter = PHPExcel_IOFactory::createWriter($tabela_erro, 'Excel2007');
    $file->save("planilhas/falhas.xlsx");


    echo "acabou";
    if(isset($retorno['ok'])){
        echo "\nLINHAS GRAVADAS: ".count($retorno['ok']);
    }elseif(isset($retorno['error'])){
         echo "\n\nLINHAS NÃO GRAVADAS: ".count($retorno['error']);
    }
    return $retorno;
}

?>

<!DOCTYPE html>
<html>
<head>
	<title>alindo</title>
</head>
<body>
	<form class="form-action" action="grava_oco.php" method="POST" enctype="multipart/form-data" name="envia_xlsx">
		<div class="modal-body">
			<div class="form-group">
				<label for="exampleFormControlFile1"> Selecione seu arqiuvo .xlsx</label>
				<input type="hidden" name="MAX_FILE_SIZE" value="30000000" required="required">
				<input name="clientes" type="file" class="form-control-file" id="exampleFormControlFile1" required="required">
			</div>
		</div>
		<div class="modal-footer">
			<input type="submit" name="cadastrar" value="Cadastrar" class="btn btn-success"/>
		</div>
	</form>
</body>
</html>