<?php
include_once '../classes/pagina.php';
include_once '../classes/equipe.php';

class TelaCadUnicoAnalise extends Pagina {
    
    const PAGINASISTAC = 'https://aplicacoes.mds.gov.br/sistac/publico/jsp/login.jsf';
    
    public function __construct() {
        parent::checarPermissao(array('administrador'));
        parent::__construct();
        if(empty($_REQUEST[executarAcao]) AND empty($_REQUEST[acao])) $this->includehead = "<style>body{max-width: 95%;}</style>";
    }
    
    public function corpo() {
        if(empty($_REQUEST[acao]) AND empty($_REQUEST[executarAcao])) echo "<div><a href='home.php' class='voltar'>Voltar para a tela inicial</a></div><br/>";
        
        if($_REQUEST[acao] == 'importar'){
            $this->importarResultado($_FILES[arquivo]);
        }elseif($_REQUEST[acao] == 'gerar'){
            $this->gerarArquivo();
        }else{
            $this->lista();
        }
    }
    
    public function lista(){
        echo "<div align='center'>";
        echo "<a href='cadunicoanalise.php?acao=gerar' target='_blank' class='adicionar'>Criar Arquivo para Analise</a> - ";
        echo "<a href='cadunicoanalise.php?acao=importar' target='_blank' class='adicionar'>Importar Resultados</a>";
        echo "</div><br/>";
        
        echo "<form action='cadunicoanalise.php' method='GET'>";
        echo "<fieldset><legend>Filtro</legend>";
        echo "<table align='center'>";
        echo "<tr style='display:block'><td>";
        echo "Código INEP: <input type='text' name='codigoinep' value='$_REQUEST[codigoinep]' size='10' /> &nbsp; ";
        echo "Escola: <input type='text' name='escola' value='$_REQUEST[escola]' size='30' /> &nbsp; ";
        echo "</td></tr>";
        echo "<tr style='display:block'><td>";
        echo "NIS Registro CadUnico: <input type='text' name='nis' value='$_REQUEST[nis]' size='10' /> &nbsp; ";
        echo "Nome Aluno: <input type='text' name='aluno' value='$_REQUEST[aluno]' size='30' /> &nbsp; ";
        echo "</td></tr>";
        echo "</table>";
        echo "<div align='center'><input type='submit' value='Filtrar' class='pesquisar' /></div>";
        echo "</fieldset>";
        echo "</form>";
        echo "<br/>";
        
        $where[] = 'integranteequipe.caduniconis IS NOT NULL';
        if(!empty($_REQUEST[escola])) $where[] = "escola.nome LIKE '%$_REQUEST[escola]%'";
        if(!empty($_REQUEST[codigoinep])) $where[] = "escola.codigoinep = '$_REQUEST[codigoinep]'";
        if(!empty($_REQUEST[nis])) $where[] = "cadunicoanalise.nis LIKE '".parent::soNumeros($_REQUEST[nis])."'";
        if(!empty($_REQUEST[aluno])) $where[] = "integranteequipe.nome LIKE '%$_REQUEST[aluno]%' AND integranteequipe.tipo = 'ALUNO'";
        $where = implode(' AND ', $where);
        
        $atributos[select] = 'equipe.nome, equipe.codigoinep AS codigo_inep
            , integranteequipe.nome AS aluno, cadunicoanalise.resultado, cadunicoanalise.datahoraanalise AS data_analise
            , integranteequipe.caduniconome AS nome_cadunico, integranteequipe.caduniconis AS nis, integranteequipe.caduniconis AS nis, integranteequipe.cadunicorgnumero AS rg, integranteequipe.cadunicorgorgao AS rg_orgao, integranteequipe.cadunicorgdata AS rg_data, integranteequipe.cadunicodatanascimento AS data_nascimento, integranteequipe.cadunicosexo AS sexo, integranteequipe.caduniconomemae AS nome_mae';
        $atributos[from] = 'imediaco_geo.equipe 
            INNER JOIN imediaco_geo.integranteequipe ON equipe.id = integranteequipe.equipe_id
            LEFT JOIN imediaco_geo.cadunicoanalise ON integranteequipe.caduniconis = cadunicoanalise.nis';
        $atributos[where] = $where;
        $atributos[orderBy] = 'equipe.nome, integranteequipe.nome';
        $atributos[chave] = 'equipe.id';
        $atributos[limit] = '15';
        
        $links[] = array('endereco'=>'crudequipe.php', 'acao'=>'editar', 'imagem'=>"../imagens/editar.png", 'target'=>'_blank');
        
        parent::tabela($atributos, $links);
    }
    
    public function gerarArquivo(){
        $corpo = "0;17879859000115;UNIFALMG;Universidade Federal de Alfenas;<br/>";
        
        $sql = "SELECT *
                FROM imediaco_geo.integranteequipe
                LEFT JOIN imediaco_geo.cadunicoanalise ON integranteequipe.caduniconis = cadunicoanalise.nis
                WHERE integranteequipe.caduniconis IS NOT NULL AND 
                    (
                    cadunicoanalise.resultado IS NULL
                    OR
                    cadunicoanalise.protocolo <> MD5(CONCAT_WS('', integranteequipe.caduniconome, integranteequipe.caduniconis, integranteequipe.cadunicodatanascimento, integranteequipe.cadunicosexo, integranteequipe.cadunicorgnumero, integranteequipe.cadunicorgdata, integranteequipe.cadunicorgorgao, integranteequipe.cadunicocpf, integranteequipe.caduniconomemae))
                    )
                ORDER BY integranteequipe.caduniconome";
        $this->bd->executarSQL($sql);
        while($obj = $this->bd->getObjeto()){
            $corpo .= "1;";
            $corpo .= "$obj->caduniconome;";
            $corpo .= "$obj->caduniconis;";
            $corpo .= "$obj->cadunicodatanascimento;";
            $corpo .= (!empty($obj->cadunicosexo))? "$obj->cadunicosexo;" : ((rand(1, 2) == 1) ? "M" : "F") . ";";
            $corpo .= (!empty($obj->cadunicorgnumero))? "$obj->cadunicorgnumero;" : rand(10000, 99999) . "X;";
            $corpo .= (!empty($obj->cadunicorgdata))? "$obj->cadunicorgdata;" : rand(10, 28) . rand(10, 12) . rand(2015, 2020) . ";";
            $corpo .= (!empty($obj->cadunicorgorgao))? "$obj->cadunicorgorgao;" : "XXX;";
            $corpo .= (!empty($obj->cadunicocpf))? "$obj->cadunicocpf;" : $this->geradorCPF() . ";";
            $corpo .= "$obj->caduniconomemae;";
            $corpo .= "<br/>";
        }
        
        echo "<p>Para gerar o arquivo CSV(TXT) para verificar no site do SISTAC <a href='".self::PAGINASISTAC."' target='_blank'>".self::PAGINASISTAC."</a> copia e cole o texto abaixo em um arquivo com o seguinte nome:<br/>
            17879859000115_NOMEDOEDITAL_DATADEENVIODDMMAAAA_SEQUENCIA(001, 002 etc).txt:</p>";
        
        echo "<fieldset>$corpo</fieldset>";
    }
    
    public function importarResultado($file){
        //formulario
        echo "<form action='cadunicoanalise.php' method='POST' enctype='multipart/form-data'>";
        echo "<input type='hidden' name='acao' value='importar' />";
        echo "<p>O arquivo CSV(TXT) de retorno pego no SISTAC <a href='".self::PAGINASISTAC."' target='_blank'>".self::PAGINASISTAC."</a><br/>
            Este arquivo tem o formato conforme exemplo abaixo:<br/>
            <font size='1'>
            0;17879859000115;UFA;Universidade Federal de Alfenas;<br/>
            1;ELISANGELA XXX;20112980109;02101987;F;MG16641328;01112006;POLICIA CIVIL DE MINAS GERAIS;08236873684;CARMEN XXX;N;4;<br/>
            1;PEDRO XXX;20755809364;07041992;M;5513472;09062015;SSPGO;03771311136;LUZMAIA XXX;S;;<br/>
            </font></p>";
        echo "<b>Arquivo CSV(TXT):</b><input type='file' name='arquivo' required accept='.csv, .txt' />";
        echo "<input type='submit' value='Processar Importação do Arquivo' />";
        echo "</form>";
        
        //processamento do arquivo
        if(!empty($file[tmp_name])){
            $equipe = new Equipe();
            
            echo "<br/><hr/><br/>";
            
            $linhas = file($file[tmp_name]);
            //cabecalho
            $cabecalho = $linhas[0];
            unset($linhas[0]);
            
            $separadordadosarquivo = ';';
            $i = $erros = 0;
            foreach($linhas as $linha){
                //cada linha: 
                //0=>numero 1;
                //1=>nome;
                //2=>nis;
                //3=datanascimento;
                //...
                $dados = explode($separadordadosarquivo, $linha);
                if(!empty($dados[1])){
                    $nis = $dados[2];
                    $resultado = ($dados[10] == 'S')? 'DEFERIDO' : 'INDEFERIDO';
                    $motivoindeferimento = $this->getMotivoIndeferimento($dados[11]);
//                    $protocolo = md5($dados[1] . $dados[2] . $dados[3] . $dados[4] . $dados[5] . $dados[6] . $dados[7] . $dados[8] . $dados[9]);
                    $protocolo = md5($dados[1] . $dados[2] . $dados[3] . '' . '' . '' . '' . '' . $dados[9]);//sexo, rgnumero, rgdata, rgorgao e cpf nao sao mais solicitados, por isso sao NULL no BD
                    $executou = $equipe->analisarCadUnico($nis, $resultado, $motivoindeferimento, $protocolo);
                    if($executou){
                        $cor = ($resultado == 'INDEFERIDO')? 'orange' : 'green';
                        echo "<font color='$cor'>$resultado</font> $motivoindeferimento para $dados[1] - NIS $dados[2]<br/>";
                        $i++;
                    }
                    else{
                        echo "<font color='red'>ERRO AO PROCESSAR $resultado $motivoindeferimento para $dados[1] - NIS $dados[2]</font><br/>";
                        $erros++;
                    }
                }
            }
            
            echo "<br/><hr/><br/>";
            echo "Processados $i registros.<br/>";
            if(!empty($erros)){
                echo "Total de erros: $erros<br/>";
                foreach($_SESSION[erros] as $erro){
                    echo "$erro<br/>";
                }
                unset($_SESSION[erros]);
            }

            echo "<script type='text/javascript'>window.opener.location.reload();</script>";
        
        echo "<br/>";
        echo "<div align='center'>";
        echo "<input type='button' name='fechar' value='Fechar' onclick=\"window.close();\" class='' />";
        echo "</div>";
        }
    }
    
    public function getMotivoIndeferimento($codigomotivo){
        $valores = array(
                    3=>'NIS inválido',
                    4=>'NIS não cadastrado',
                    5=>'NIS excluído',
                    6=>'NIS com renda fora do perfil',
                    7=>'NIS não é o da pessoa informada',
                    13=>'Cadastro desatualizado'
                    );
        return $valores[$codigomotivo];
    }
    
    public function geradorCPF() {
        $num = array();
        
        $num[9] = $num[10] = $num[11] = 0;
        for ($w = 0; $w > -2; $w--) {
            for ($i = $w; $i < 9; $i++) {
                $x = ($i - 10) * -1;
                $w == 0 ? $num[$i] = rand(0, 9) : '';
                ($w == -1 && $i == $w && $num[11] == 0) ?
                                $num[11] += $num[10] * 2 :
                                $num[10 - $w] += $num[$i - $w] * $x;
            }
            $num[10 - $w] = (($num[10 - $w] % 11) < 2 ? 0 : (11 - ($num[10 - $w] % 11)));
        }
        
        return $num[0].$num[1].$num[2].$num[3].$num[4].$num[5].$num[6].$num[7].$num[8].$num[10].$num[11];
    }

}

$pagina = new TelaCadUnicoAnalise();
$pagina->montar();
