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

class CRUDEscola extends Pagina {
    
    public function __construct() {
        parent::checarPermissao(array('administrador'));
        parent::__construct();
    }
    
    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->importar($_FILES[arquivo]);
        }elseif($_REQUEST[executarAcao] == 'inserir' OR $_REQUEST[executarAcao] == 'editar' OR $_REQUEST[executarAcao] == 'excluir'){
            $this->salvar($_REQUEST[executarAcao]);
        }elseif($_REQUEST[acao] == 'inserir' OR $_REQUEST[acao] == 'editar' OR $_REQUEST[acao] == 'excluir'){
            $this->formulario($_REQUEST[acao], $_REQUEST[id]);
        }else{
            $this->lista();
        }
    }
    
    public function lista(){
        echo "<div align='center'>";
        echo "<a href='crudescola.php?acao=inserir' target='_blank' class='adicionar'>Inserir Nova Escola</a> - ";
        echo "<a href='crudescola.php?acao=importar' target='_blank' class='adicionar'>Importar Escolas CSV</a>";
        echo "</div><br/>";
        
        echo "<form action='crudescola.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 "Nome: <input type='text' name='nome' value='$_REQUEST[nome]' size='30' /> &nbsp; ";
        echo "</td></tr>";
        echo "<tr style='display:block'><td>";
        echo "UF: <input type='text' name='uf' value='$_REQUEST[uf]' size='2' /> &nbsp; ";
        echo "Município: <input type='text' name='municipio' value='$_REQUEST[municipio]' size='30' /> &nbsp; ";
        echo "</td></tr>";
        echo "<tr style='display:block'><td>";
        echo "*Localização: ";parent::montaSelect('localizacao', array('Urbana', 'Rural', 'SEM LOCALIZAÇÃO'), $_REQUEST[localizacao]);echo " &nbsp; ";
        echo "Categoria Administrativa: <input type='text' name='categoriaadministrativa' value='$_REQUEST[categoriaadministrativa]' size='15' /> &nbsp; ";
        echo "</td></tr>";
        echo "</table>";
        echo "<div align='center'><input type='submit' value='Filtrar' class='pesquisar' /></div>";
        echo "<font size='1'>* Para filtrar aquelas escolas inseridas por um professor no ato de inscrição e que ainda não foram analisadas/conferidas, selecione SEM LOCALIZAÇÃO no filtro da Localização</font>";
        echo "</fieldset>";
        echo "</form>";
        echo "<br/>";
        
        $where[] = '1=1';
        if(!empty($_REQUEST[nome])) $where[] = "escola.nome LIKE '%$_REQUEST[nome]%'";
        if(!empty($_REQUEST[codigoinep])) $where[] = "escola.codigoinep = '$_REQUEST[codigoinep]'";
        if(!empty($_REQUEST[uf])) $where[] = "escola.uf LIKE '$_REQUEST[uf]'";
        if(!empty($_REQUEST[municipio])) $where[] = "escola.municipio LIKE '%$_REQUEST[municipio]%'";
        if(!empty($_REQUEST[localizacao])){
            if($_REQUEST[localizacao] == 'SEM LOCALIZAÇÃO') $where[] = "escola.localizacao IS NULL";
            else $where[] = "escola.localizacao LIKE '%$_REQUEST[localizacao]%'";
        }
        if(!empty($_REQUEST[categoriaadministrativa])) $where[] = "escola.categoriaadministrativa LIKE '%$_REQUEST[categoriaadministrativa]%'";
        $where = implode(' AND ', $where);
        
        $atributos[select] = 'escola.nome, escola.codigoinep AS codigo_inep, escola.uf, escola.municipio, escola.localizacao, escola.categoriaadministrativa AS categoria_administrativa';
        $atributos[from] = 'imediaco_geo.escola';
        $atributos[where] = $where;
        $atributos[orderBy] = 'escola.nome';
        $atributos[chave] = 'escola.id';
        $atributos[limit] = '15';
        
        $links[] = array('endereco'=>'crudescola.php', 'acao'=>'editar', 'imagem'=>"../imagens/editar.png", 'target'=>'_blank');
        $links[] = array('endereco'=>'crudescola.php', 'acao'=>'excluir', 'imagem'=>"../imagens/excluir.png", 'target'=>'_blank');
        
        parent::tabela($atributos, $links);
    }

    public function formulario($acao, $id=null){
        if(!empty($id)){
            $escola = new Escola();
            $obj = $escola->encontrar($id);
        }
        
        echo "<h1>Cadastro de Escola</h1>";
        
        echo "<form action='crudescola.php' method='POST'>";
        echo "<input type='hidden' name='executarAcao' value='$acao' />";
        echo "<input type='hidden' name='id' value='$id' />";
        
        echo "<table class='formulario'>";
        
        echo "<tr><th>Nome:</th><td><input type='text' name='nome' value='$obj->nome' size='60' required /></td></tr>";
        echo "<tr><th>Código INEP:</th><td><input type='text' name='codigoinep' value='$obj->codigoinep' size='10' class='inteiro' required /></td></tr>";
        echo "<tr><th>UF:</th><td><input type='text' name='uf' value='$obj->uf' size='2' required /></td></tr>";
        echo "<tr><th>Município:</th><td><input type='text' name='municipio' value='$obj->municipio' size='60' required /></td></tr>";
        echo "<tr><th>Localização:</th><td><font size='1'>Este campo de Localização será utilizado para indicar se uma escola que foi inserida por um professor no ato de inscrição ainda não foi conferida pela equipe administrativa do evento.
                                        <br/>Caso os dados da escola esteja OK, insira um valor neste campo (Urbana ou Rural). Caso contrario, o professor deve ser informado para fazer ajustes ou ser desclassificado do evento.</font>
                                        <br/>";parent::montaSelect('localizacao', array('Urbana', 'Rural', $obj->localizacao), $obj->localizacao);echo "</td></tr>";
        echo "<tr><th>Localidade:</th><td><input type='text' name='localidade' value='$obj->localidade' size='60' /></td></tr>";
        echo "<tr><th>Categoria Administrativa:</th><td><input type='text' name='categoriaadministrativa' value='$obj->categoriaadministrativa' size='60' /></td></tr>";
        echo "<tr><th>Restrição Atendimento:</th><td><input type='text' name='restricaoatendimento' value='$obj->restricaoatendimento' size='60' /></td></tr>";
        echo "<tr><th>Endereço:</th><td><input type='text' name='endereco' value='$obj->endereco' size='60' /></td></tr>";
        echo "<tr><th>Telefone:</th><td><input type='text' name='telefone' value='$obj->telefone' size='60' /></td></tr>";
        echo "<tr><th>Dependencia Administrativa:</th><td><input type='text' name='dependenciaadministrativa' value='$obj->dependenciaadministrativa' size='60' /></td></tr>";
        echo "<tr><th>Categoria Privada:</th><td><input type='text' name='categoriaprivada' value='$obj->categoriaprivada' size='60' /></td></tr>";
        echo "<tr><th>Conveniado Poder Público:</th><td><input type='text' name='conveniadapoderpublico' value='$obj->conveniadapoderpublico' size='60' /></td></tr>";
        echo "<tr><th>Regulamentação:</th><td><input type='text' name='regulamentacao' value='$obj->regulamentacao' size='60' /></td></tr>";
        echo "<tr><th>Porte:</th><td><input type='text' name='porte' value='$obj->porte' size='60' /></td></tr>";
        echo "<tr><th>Etapa e Modalidade de Ensino:</th><td><input type='text' name='etapamodalidadeensino' value='$obj->etapamodalidadeensino' size='60' /></td></tr>";
        echo "<tr><th>Outras Ofertas:</th><td><input type='text' name='outrasofertas' value='$obj->outrasofertas' size='60' /></td></tr>";
        echo "<tr><th>Latitude:</th><td><input type='text' name='latitude' value='$obj->latitude' size='60' /></td></tr>";
        echo "<tr><th>Longitude:</th><td><input type='text' name='longitude' value='$obj->longitude' size='60' /></td></tr>";
        
        echo "</table>";
        
        echo "<br/>";
        echo "<div align='center'>";
        echo "<input type='submit' name='cadastrar' value='".ucwords($acao)."' class='confirmar'/> &nbsp;&nbsp; ";
        echo "<input type='button' name='cancelar' value='Cancelar' onclick=\"window.close();\" class='cancelar' />";
        echo "</div>";
        
        echo "</form>";
    }
    
    public function salvar($acao){
        $escola = new Escola();
        
        if(!empty($_POST[id])) $escola->encontrar($_POST[id]);
        
        $escola->restricaoatendimento = parent::acertarString($_POST[restricaoatendimento]);
        $escola->nome = parent::acertarString($_POST[nome]);
        $escola->codigoinep = parent::soNumeros($_POST[codigoinep]);
        $escola->uf = parent::acertarString($_POST[uf]);
        $escola->municipio = parent::acertarString($_POST[municipio]);
        $escola->localizacao = parent::acertarString($_POST[localizacao]);
        $escola->localidade = parent::acertarString($_POST[localidade]);
        $escola->categoriaadministrativa = parent::acertarString($_POST[categoriaadministrativa]);
        $escola->endereco = parent::acertarString($_POST[endereco]);
        $escola->telefone = parent::acertarString($_POST[telefone]);
        $escola->dependenciaadministrativa = parent::acertarString($_POST[dependenciaadministrativa]);
        $escola->categoriaprivada = parent::acertarString($_POST[categoriaprivada]);
        $escola->conveniadapoderpublico = parent::acertarString($_POST[conveniadapoderpublico]);
        $escola->regulamentacao = parent::acertarString($_POST[regulamentacao]);
        $escola->porte = parent::acertarString($_POST[porte]);
        $escola->etapamodalidadeensino = parent::acertarString($_POST[etapamodalidadeensino]);
        $escola->outrasofertas = parent::acertarString($_POST[outrasofertas]);
        $escola->latitude = parent::acertarString($_POST[latitude]);
        $escola->longitude = parent::acertarString($_POST[longitude]);
        
        switch($acao){
            case 'inserir':
                $executou = $escola->inserir();
                break;
            case 'editar':
                $executou = $escola->editar();
                break;
            case 'excluir':
                $executou = $escola->excluir();
                break;
        }
        
        echo "<script type='text/javascript'>window.opener.location.reload(); window.close();</script>";
    }
    
    public function importar($file){
        //formulario
        echo "<form action='crudescola.php' method='POST' enctype='multipart/form-data'>";
        echo "<input type='hidden' name='acao' value='importar' />";
        echo "<p>O arquivo CSV, separado por ; (ponto-e-virgula), a ser enviado deve ter exatamente e na mesma ordem como cabeçalho os seguintes dados:<br/>
            <font size='2'><i>Restrição de Atendimento;Escola;Código INEP;UF;Município;Localização;Localidade Diferenciada;Categoria Administrativa;Endereço;Telefone;Dependência Administrativa;Categoria Escola Privada;Conveniada Poder Público;Regulamentação pelo Conselho de Educação;Porte da Escola;Etapas e Modalidade de Ensino Oferecidas;Outras Ofertas Educacionais;Latitude;Longitude</i></font><br/>
            Exemplo:<br/><font size='1'>
            Restrição de Atendimento;Escola;Código INEP;UF;Município;Localização;Localidade Diferenciada;Categoria Administrativa;Endereço;Telefone;Dependência Administrativa;Categoria Escola Privada;Conveniada Poder Público;Regulamentação pelo Conselho de Educação;Porte da Escola;Etapas e Modalidade de Ensino Oferecidas;Outras Ofertas Educacionais;Latitude;Longitude<br/>
            ESCOLA ATENDE EXCLUSIVAMENTE ALUNOS COM DEFICIÊNCIA;EEEE ABNAEL MACHADO DE LIMA - CENE;11000023;RO;Porto Velho;Urbana;A escola não está em área de localização diferenciada;Pública;AVENIDA AMAZONAS, 6492 ZONA LESTE. TIRADENTES. 76824-556 Porto Velho - RO.;(69) 992083054;Estadual;Não Informado;Não;Não;Entre 51 e 200 matrículas de escolarização;Ensino Fundamental;Atendimento Educacional Especializado;-8.758459;-63.8540109
            ESCOLA EM FUNCIONAMENTO E SEM RESTRIÇÃO DE ATENDIMENTO;EMEIEF PEQUENOS TALENTOS;11000040;RO;Porto Velho;Urbana;A escola não está em área de localização diferenciada;Pública;RUA CAETANO, 3256 PREDIO. CALADINHO. 76808-108 Porto Velho - RO.;(69) 32135237;Municipal;Não Informado;Não;Sim;Entre 201 e 500 matrículas de escolarização;Educação Infantil;;-8.79373016;-63.88391863
            ESCOLA EM FUNCIONAMENTO E SEM RESTRIÇÃO DE ATENDIMENTO;CENTRO DE ENSINO CLASSE A;11000058;RO;Porto Velho;Urbana;A escola não está em área de localização diferenciada;Privada;AVENIDA CARLOS GOMES, 1135 CENTRO. 76801-123 Porto Velho - RO.;(69) 32244473;Privada;Particular;Não;Sim;Mais de 1000 matrículas de escolarização;Educação Infantil, Ensino Fundamental, Ensino Médio;;-8.7607343;-63.9019859
            </font></p>";
        echo "<b>Arquivo CSV:</b><input type='file' name='arquivo' required accept='.csv' />";
        echo "<input type='submit' value='Processar Importação do Arquivo' />";
        echo "</form>";
        
        //processamento do arquivo
        if(!empty($file[tmp_name])){
            $escola = new Escola();
            
            $linhas = file($file[tmp_name]);
            //cabecalho
            $cabecalho = $linhas[0];
            unset($linhas[0]);
            
            $separadordadosarquivo = ';';
            $i = $erros = 0;
            foreach($linhas as $linha){
                //cada linha: 
                //0=>restricaoatendimento;
                //1=>nome;
                //2=>codigoinep;
                //3=>uf;
                //...
                $dados = explode($separadordadosarquivo, $linha);
                if(!empty($dados[1])){
                    $escola->restricaoatendimento = parent::acertarString($dados[0]);
                    $escola->nome = parent::acertarString($dados[1]);
                    $escola->codigoinep = parent::soNumeros($dados[2]);
                    $escola->uf = parent::acertarString($dados[3]);
                    $escola->municipio = parent::acertarString($dados[4]);
                    $escola->localizacao = parent::acertarString($dados[5]);
                    $escola->localidade = parent::acertarString($dados[6]);
                    $escola->categoriaadministrativa = parent::acertarString($dados[7]);
                    $escola->endereco = parent::acertarString($dados[8]);
                    $escola->telefone = parent::acertarString($dados[9]);
                    $escola->dependenciaadministrativa = parent::acertarString($dados[10]);
                    $escola->categoriaprivada = parent::acertarString($dados[11]);
                    $escola->conveniadapoderpublico = parent::acertarString($dados[12]);
                    $escola->regulamentacao = parent::acertarString($dados[13]);
                    $escola->porte = parent::acertarString($dados[14]);
                    $escola->etapamodalidadeensino = parent::acertarString($dados[15]);
                    $escola->outrasofertas = parent::acertarString($dados[16]);
                    $escola->latitude = parent::acertarString($dados[17]);
                    $escola->longitude = parent::acertarString($dados[18]);

                    $executou = $escola->salvar();
                    if($executou) $i++;
                    else $erros++;
                }
            }
            
            echo "<br/><hr/><br/>";
            echo "Processados $i escolas.<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>";
        }
    }
}

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