<?php
include_once 'bd.php';

class Equipe 
{
    public $bd;
    
    public $id;
    public $status;
    public $datahora;
    public $prova_id;
    public $nome;
    public $senha;
    public $pago;
    public $email;
    public $professor_id;
    public $escolaprofessor_id;
    public $escola;
    public $tipoescola;
    public $codigoinep;
    public $logradouro;
    public $bairro;
    public $complemento;
    public $municipio;
    public $uf;
    public $cep;
    public $telefone;
    public $professor;
    public $professorcpf;
    public $professorsexo;
    public $professorcor;
    public $professorcategorias;
    public $professoremail;
    public $professortelefone;
    public $professorcelular;
    public $diretor;
    public $colocacao;
    public $medalha;

    public $alunos;

    public function __construct() {
        $this->bd = new BD();
    }
    
    public function inserir(){
        $sql = "INSERT INTO imediaco_geo.equipe (prova_id, nome, senha, pago, email, escola, tipoescola, codigoinep, logradouro, bairro, complemento, municipio, uf, cep, telefone, professor, professorcpf, professorsexo, professorcor, professorcategorias, professoremail, professortelefone, professorcelular, diretor, cnpj, colocacao, medalha, professor_id, escolaprofessor_id)
                VALUES ('$this->prova_id', '$this->nome', '$this->senha', '$this->pago', '$this->email', '$this->escola', '$this->tipoescola', '$this->codigoinep', '$this->logradouro', '$this->bairro', '$this->complemento', '$this->municipio', '$this->uf', '$this->cep', '$this->telefone', '$this->professor', '$this->professorcpf', '$this->professorsexo', '$this->professorcor', '$this->professorcategorias', '$this->professoremail', '$this->professortelefone', '$this->professorcelular', '$this->diretor','$this->cnpj', '$this->colocacao', '$this->medalha', '$this->professor_id','$this->escolaprofessor_id')";
        $executou = $this->bd->executarSQL($this->bd->substituiVazioPorNull($sql));
        if($executou){
            
            $sql = "SELECT id FROM imediaco_geo.equipe WHERE prova_id = '$this->prova_id' AND codigoinep = '$this->codigoinep' AND nome = '$this->nome' AND senha = '$this->senha' ORDER BY id DESC";
            $this->bd->executarSQL($sql);
            $obj = $this->bd->getObjeto();
            $this->id = $obj->id;
            
            $this->bd->log('inserir equipe', $sql, $this->id);
            foreach($this->alunos as $aluno){
                $this->inserirIntegrante($aluno, 'ALUNO');
            }
            
            return true;
        }else{
            $_SESSION[erro][] = "Erro ao inserir equipe";
            return false;
        }
    }
    
    public function editar($editarintegrantes=true){
        $sql = "UPDATE imediaco_geo.equipe SET
                nome = '$this->nome'
                ,status = '$this->status'
                ,senha = '$this->senha'
                ,email = '$this->email'
                ,escolaprofessor_id = '$this->escolaprofessor_id'
                ,escola = '$this->escola'
                ,tipoescola = '$this->tipoescola'
                ,codigoinep = '$this->codigoinep'
                ,logradouro = '$this->logradouro'
                ,bairro = '$this->bairro'
                ,complemento = '$this->complemento'
                ,municipio = '$this->municipio'
                ,uf = '$this->uf'
                ,cep = '$this->cep'
                ,telefone = '$this->telefone'
                ,professor = '$this->professor'
                ,professorcpf = '$this->professorcpf'
                ,professorsexo = '$this->professorsexo'
                ,professorcor = '$this->professorcor'
                ,professorcategorias = '$this->professorcategorias'
                ,professoremail = '$this->professoremail'
                ,professortelefone = '$this->professortelefone'
                ,professorcelular = '$this->professorcelular'
                ,diretor = '$this->diretor'
                ,cnpj = '$this->cnpj'
                ,pago = '$this->pago'
                ,colocacao = '$this->colocacao'
                ,medalha = '$this->medalha'
                WHERE id = '$this->id'";
        $executou = $this->bd->executarSQL($this->bd->substituiVazioPorNull($sql));
        if($executou){
            $this->bd->log('editar equipe', $sql, $this->id);
            if($editarintegrantes){
                $this->excluirIntegrantes($this->id, 'ALUNO');
                foreach($this->alunos as $aluno){
                    $this->inserirIntegrante($aluno, 'ALUNO');
                }
            }
            
            return true;
        }else{
            $_SESSION[erro][] = "Erro ao editar equipe";
            return false;
        }
    }
    
    public function excluir(){
        $sql = "DELETE FROM imediaco_geo.equipe WHERE id = '$this->id'";
        $executou = $this->bd->executarSQL($this->bd->substituiVazioPorNull($sql));
        if($executou){
            $this->bd->log('excluir equipe', $sql, $this->id);
            return true;
        }else{
            $sql = "UPDATE imediaco_geo.equipe SET status = 'INATIVO' WHERE id = '$this->id'";
            $executou = $this->bd->executarSQL($this->bd->substituiVazioPorNull($sql));
            if($executou){
                unset($_SESSION[erro]);
                $this->bd->log('inativar equipe', $sql, $this->id);
                return true;
            }else{
                $_SESSION[erro][] = "Erro ao excluir equipe";
                return false;
            }
        }
    }
    
    public function encontrar($id){
        if(empty($id)) $id = $this->id;
        if(empty($id)) return null;
        $sql = "SELECT equipe.*, prova.descricao AS prova, prova.isentopagamento, escola.categoriaadministrativa 
                FROM imediaco_geo.equipe 
                INNER JOIN imediaco_geo.prova ON prova.id = equipe.prova_id 
                LEFT JOIN imediaco_geo.escola ON equipe.codigoinep = escola.codigoinep
                WHERE equipe.id = '$id'";
        $this->bd->executarSQL($this->bd->substituiVazioPorNull($sql));
        $obj = $this->bd->getObjeto();
        
        $this->id = $obj->id;
        $this->status = $obj->status;
        $this->datahora = $obj->datahora;
        $this->prova_id = $obj->prova_id;
        $this->nome = $obj->nome;
        $this->senha = $obj->senha;
        $this->pago = $obj->pago;
        $this->email = $obj->email;
        $this->escolaprofessor_id = $obj->escolaprofessor_id;
        $this->professor_id = $obj->professor_id;
        $this->escola = $obj->escola;
        $this->tipoescola = $obj->tipoescola;
        $this->codigoinep = $obj->codigoinep;
        $this->logradouro = $obj->logradouro;
        $this->bairro = $obj->bairro;
        $this->complemento = $obj->complemento;
        $this->municipio = $obj->municipio;
        $this->uf = $obj->uf;
        $this->cep = $obj->cep;
        $this->telefone = $obj->telefone;
        $this->professor = $obj->professor;
        $this->professorcpf = $obj->professorcpf;
        $this->professorsexo = $obj->professorsexo;
        $this->professorcor = $obj->professorcor;
        $this->professorcategorias = $obj->professorcategorias;
        $this->professoremail = $obj->professoremail;
        $this->professortelefone = $obj->professortelefone;
        $this->professorcelular = $obj->professorcelular;
        $this->diretor = $obj->diretor;
        $this->cnpj = $obj->cnpj;
        $this->colocacao = $obj->colocacao;
        $this->medalha = $obj->medalha;
        
        $this->alunos = $this->encontrarIntegrantes($this->id, 'ALUNO');
        
        return $obj;
    }
    
    public function getDadosEquipeProfessor($cpf){
        $cpf = preg_replace('/\D/', '', $cpf);
        if(empty($cpf)) return null;
        
        $sql = "SELECT * FROM imediaco_geo.equipe WHERE professorcpf = '$cpf' ORDER BY id DESC LIMIT 1";
        $this->bd->executarSQL($sql);
        $obj = $this->bd->getObjeto();
        
        return $obj;
    }

    public function acharEquipeParticipante($participante_cpf, $provafase_id){
        $cpf = preg_replace('/\D/', '', $participante_cpf);
        if(empty($cpf)) return null;

        $sql = "SELECT integranteequipe.* "
                . "FROM imediaco_geo.integranteequipe "
                . "JOIN imediaco_geo.equipe "
                . "ON integranteequipe.equipe_id = equipe.id "
                . "JOIN imediaco_geo.prova "
                . "ON prova.id = equipe.prova_id "
                . "WHERE integranteequipe.cpf = '$cpf' AND prova.id = $provafase_id";


        $this->bd->executarSQL($this->bd->substituiVazioPorNull($sql));
        $obj = $this->bd->getObjeto();
        $lista = null;
        
        return $obj;
    }
    
    
    public function inserirIntegrante($obj, $tipo='ALUNO'){
        $sql = "INSERT INTO imediaco_geo.integranteequipe (equipe_id, tipo, nome, nomesocial, cpf, email, celular, datanascimento, sexo, cor, categorias
            ,caduniconis, cadunicocpf, cadunicorgnumero, cadunicorgorgao, cadunicorgdata, caduniconome, cadunicodatanascimento, cadunicosexo, caduniconomemae)
                VALUES ('$this->id', '$tipo', '$obj->nome', '$obj->nomesocial', '$obj->cpf','$obj->email', '$obj->celular', '$obj->datanascimento', '$obj->sexo', '$obj->cor', '$obj->categorias'
            ,'$obj->caduniconis', '$obj->cadunicocpf', '$obj->cadunicorgnumero', '$obj->cadunicorgorgao', '$obj->cadunicorgdata', '$obj->caduniconome', '$obj->cadunicodatanascimento', '$obj->cadunicosexo', '$obj->caduniconomemae')";
        $executou = $this->bd->executarSQL($this->bd->substituiVazioPorNull($sql));
        if($executou){
            $this->bd->log('inserir integranteequipe', $sql, null);
            return true;
        }else{
            $_SESSION[erro][] = "Erro ao inserir integranteequipe";
            return false;
        }
    }
    public function excluirIntegrante($equipe_id, $id){
        $sql = "DELETE FROM imediaco_geo.integranteequipe WHERE equipe_id = '$equipe_id' AND id = '$id'";
        $executou = $this->bd->executarSQL($this->bd->substituiVazioPorNull($sql));
        if($executou){
            $this->bd->log('excluir integrantesequipe', $sql, null);

            echo "<script type='text/javascript' class='modoajax'>";
        echo "window.location.reload();";
        echo "</script>";

            return true;
        }else{
            $_SESSION[erro][] = "Erro ao excluir integrante da equipe";
            return false;
        }
    }
    
    public function excluirIntegrantes($equipe_id, $tipo){
        $sql = "DELETE FROM imediaco_geo.integranteequipe WHERE equipe_id = '$equipe_id' AND tipo = '$tipo'";
        $executou = $this->bd->executarSQL($this->bd->substituiVazioPorNull($sql));
        if($executou){
            $this->bd->log('excluir integrantesequipe', $sql, null);
            return true;
        }else{
            $_SESSION[erro][] = "Erro ao excluir integrantes equipe";
            return false;
        }
    }
    
    public function encontrarIntegrantes($equipe_id, $tipo){
        $sql = "SELECT integranteequipe.* "
                . "FROM imediaco_geo.integranteequipe "
                . "WHERE integranteequipe.equipe_id = '$equipe_id' AND integranteequipe.tipo = '$tipo'";
        $this->bd->executarSQL($this->bd->substituiVazioPorNull($sql));
        $lista = null;
        while($obj = $this->bd->getObjeto()){
            $lista[] = $obj;
        }
        
        return $lista;
    }
    
    public function analisarCadUnico($nis, $resultado, $motivoindeferimento, $protocolo){
        $nis = preg_replace('/\D/', '', $nis);
        
        $obj = $this->getCadUnicoAnalise($nis);
        if(empty($obj->nis)){
            $sql = "INSERT INTO imediaco_geo.cadunicoanalise(nis, datahoraanalise, resultado, motivoindeferimento, protocolo) VALUES('$nis', NOW(), '$resultado', '$motivo', '$protocolo')";
        }else{
            $sql = "UPDATE imediaco_geo.cadunicoanalise SET datahoraanalise = NOW(), resultado = '$resultado', motivoindeferimento = '$motivoindeferimento', protocolo = '$protocolo' WHERE nis = '$nis'";
        }
        $executou = $this->bd->executarSQL($this->bd->substituiVazioPorNull($sql));
        if($executou){
            $this->bd->log('analisar cadunico', $sql, null);
            return true;
        }else{
            $_SESSION[erro][] = "Erro ao analisar cadunico";
            return false;
        }
    }
    
    public function getCadUnicoAnalise($nis){
        $nis = preg_replace('/\D/', '', $nis);
        if(empty($nis)) return null;
        
        $sql = "SELECT * FROM imediaco_geo.cadunicoanalise WHERE nis = '$nis'";
        $this->bd->executarSQL($sql);
        $obj = $this->bd->getObjeto();
        
        return $obj;
    }
    
    public function getPermiteIsencao($prova_id, $objequipe){
        $quantidademaximaisencao = 3;
        //se a equipe eh de escola Privada ja nao permite isencao
        if($objequipe->categoriaadministrativa == 'Privada') return false;
        //conta quantas equipes ja estao isentas
        //se a contagem for menor que a quantidademaximainsecao entao ainda permite insecao
        $sql = "SELECT COUNT(equipe.id) AS quantidade 
                FROM imediaco_geo.equipe 
                WHERE equipe.prova_id = '$prova_id' AND equipe.pago = 'ISENTO'";
        $this->bd->executarSQL($sql);//echo $sql;
        $obj = $this->bd->getObjeto();
        
        return ($obj->quantidade < $quantidademaximaisencao)? true : false;
    }
    

    public function alterarSenha($equipe_id, $novasenha){
        $sql = "UPDATE imediaco_geo.equipe SET senha = md5('$novasenha') WHERE id = '$equipe_id'";
        $executou = $this->bd->executarSQL($this->bd->substituiVazioPorNull($sql));
        if($executou){
            $this->bd->log('alterar senha equipe', $sql, $equipe_id);
            return true;
        }else{
            $_SESSION[erro][] = "Erro ao alterar a senha da equipe";
            return false;
        }
    }
    
    
    
    /**
     * Funcao criada para a prova final de 2021, que separa o resultado em prova de geografia e de cienciasdaterra.
     * Retorna os dados da equipe passada no paramentro o resultado da busca no arquivo com o resultado das equipes
     * Arquivo formatado na seguinte forma: equipe_id;notaprova;notaprojeto;notafinal;colocacao;medalha
     * @param type $equipe_id
     * @return type
     */
    public function getDadosArquivo($equipe_id, $tipoprova){
        if($tipoprova == 'cienciasdaterra') $linhas = file('/server/www/olimpiadageografia/tmp/resultadofinalnacional2021cienciasdaterra.csv');
        else $linhas = file('/server/www/olimpiadageografia/tmp/resultadofinalnacional2021geografia.csv');
        foreach($linhas as $linha){
            $valores = explode(';', $linha);
            if($valores[0] == $equipe_id){
                $valores[equipe_id] = $valores[0];
                $valores[notaprova] = $valores[1];
                $valores[notaprojeto] = $valores[2];
                $valores[notafinal] = $valores[3];
                $valores[colocacao] = $valores[4];
                $valores[medalha] = $valores[5];
                return $valores;
            }
        }
        
        return null;
    }
    
    
}