<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Aluno extends CI_Controller {

    function __construct() {
        parent::__construct();
        (isset($_SESSION['controle-aluno']) == TRUE) ? redirect('carreira') : '';
        $this->load->model('Cadastro_Model');
        $this->load->model('Cursos_Model');
        $this->load->model('Matricula_Model');
        $this->load->model('Historico_Model');
        $this->load->model('Pagamento_Model');
        $this->load->library('Criptografia');
        $this->load->library('Template');
        $this->load->library('Sanitize');
        $this->load->library('Cpf');
        $this->load->library('OvumCaption');
        $this->load->database();
    }

    public function home() {
        
       

        if (isset($_SESSION['aluno']) == TRUE) {

            $faturandamento = $this->Pagamento_Model->faturaemandamento();
            $transacao_pendente = $this->Pagamento_Model->getTransacaoPendentePorId();
            $falta = $this->Historico_Model->getHistoricoFaltaPorAluno();
            $id = $_SESSION['aluno']['id_aluno'];
            $aluno = $this->Cadastro_Model->getAlunoPorID($id);
            
            
            
            $cursos = $this->Historico_Model->getCursoHistorico($id_aluno = $_SESSION['aluno']['id_aluno']);
            $total = 0;
            $resp = [];
            foreach ($cursos as $curso) {
                if (($curso->concluido == 0 && $curso->certificado == 0) || ($curso->concluido == 1 && $curso->certificado == 0)) {
                    $total = $total + 1;
                    $resp[] = $curso;
                }
            }

            if ($total >= 3) {
                $promo = 1;
            } else {
                $promo = 0;
            }


            $dados = array(
                'andamento' => $faturandamento,
                'controle' => $this,
                'avaliacaoPendente' => $falta,
                'transacaoPendente' => $transacao_pendente,
                'aluno' => $aluno,
                'promo' => $promo,
                'descricao' => 'O Amazônia Cursos é uma plataforma de estudos baseada em cursos livres. Com certificados aprovados pela lei de amparo a cursos livres, é a perfeita solução para você que deseja estudar sem sair de casa, aprimorar seus conhecimentos ou dar aquela melhorada no currículo. Cursos com certificados de participação e conclusão, facilidade de acesso e o melhor de tudo: Você estuda de graça e paga apenas pelo certificado do seu curso',
                'titulo' => 'Página Inicial');
            
            $this->load->view('home', $dados);
        } else {
            redirect();
        }
    }

    // Cria uma função que retorna o timestamp de uma data no formato DD/MM/AAAA
    function geraTimestamp($data) {
        $partes = explode('/', $data);
        return mktime(0, 0, 0, $partes[1], $partes[0], $partes[2]);
    }

    public function meusdados_old() {
        if (isset($_SESSION['aluno']) == TRUE) {
            $id = $_SESSION['aluno']['id_aluno'];
            $aluno = $this->Cadastro_Model->getAlunoPorID($id);
            $documentacao = $this->Cadastro_Model->obtemdocumentacao();
            $estados = array(
                'PA' => 'Pará',
                'AC' => 'Acre',
                'AL' => 'Alagoas',
                'AP' => 'Amapá',
                'AM' => 'Amazonas',
                'BA' => 'Bahia',
                'CE' => 'Ceará',
                'DF' => 'Distrito Federal',
                'ES' => 'Espírito Santo',
                'GO' => 'Goiás',
                'MA' => 'Maranhão',
                'MT' => 'Mato Grosso',
                'MS' => 'Mato Grosso do Sul',
                'MG' => 'Minas Gerais',
                'PB' => 'Paraíba',
                'PR' => 'Paraná',
                'PE' => 'Pernambuco',
                'PI' => 'Piauí',
                'RJ' => 'Rio de Janeiro',
                'RN' => 'Rio Grande do Norte',
                'RS' => 'Rio Grande do Sul',
                'RO' => 'Rondônia',
                'RR' => 'Roraima',
                'SC' => 'Santa Catarina',
                'SP' => 'São Paulo',
                'SE' => 'Sergipe',
                'TO' => 'Tocantins'
            );
            $dados = array('estados' => $estados, 'documentacao' => $documentacao, 'erro_conf' => NULL, 'termos' => $this->Cadastro_Model->obtemTermo(), 'titulo' => 'Meus Dados', 'erro_conf' => NULL, 'aluno' => $aluno);
            $this->load->view('meusdados', $dados);
        } else {
            redirect();
        }
    }

    public function meusdados() {
        if (isset($_SESSION['aluno']) == TRUE) {
            $id = $_SESSION['aluno']['id_aluno'];
            $aluno = $this->Cadastro_Model->getAlunoPorID($id);
            $documentacao = $this->Cadastro_Model->obtemdocumentacao();
            $estados = array(
                'PA' => 'Pará',
                'AC' => 'Acre',
                'AL' => 'Alagoas',
                'AP' => 'Amapá',
                'AM' => 'Amazonas',
                'BA' => 'Bahia',
                'CE' => 'Ceará',
                'DF' => 'Distrito Federal',
                'ES' => 'Espírito Santo',
                'GO' => 'Goiás',
                'MA' => 'Maranhão',
                'MT' => 'Mato Grosso',
                'MS' => 'Mato Grosso do Sul',
                'MG' => 'Minas Gerais',
                'PB' => 'Paraíba',
                'PR' => 'Paraná',
                'PE' => 'Pernambuco',
                'PI' => 'Piauí',
                'RJ' => 'Rio de Janeiro',
                'RN' => 'Rio Grande do Norte',
                'RS' => 'Rio Grande do Sul',
                'RO' => 'Rondônia',
                'RR' => 'Roraima',
                'SC' => 'Santa Catarina',
                'SP' => 'São Paulo',
                'SE' => 'Sergipe',
                'TO' => 'Tocantins'
            );

            $dados = array('descricao' => 'O aluno pode alterar os seus dados cadastrais do Amazônia Cursos','controle' => $this, 'ovumcaption' => $this->ovumcaption->caption($aluno['email']), 'estados' => $estados, 'documentacao' => $documentacao, 'erro_conf' => NULL, 'termos' => $this->Cadastro_Model->obtemTermo(), 'titulo' => 'Meus Dados', 'erro_conf' => NULL, 'aluno' => $aluno);
            $this->load->view('meusdados', $dados);
        } else {
            redirect();
        }
    }

    private function idExterno($string) {
        for ($i = 0; $i < 3; $i++) {
            $string = strrev(base64_encode(str_replace('=', '+', $string)));
        }
        return $string;
    }

    public function iris() {

        $ambiente = URL_API_IRIS;
        $id_externo = $this->idExterno(ID_EXTERNO);
        $id = $_SESSION['aluno']['id_aluno'];
        $aluno = $this->Cadastro_Model->getAlunoPorID($id);
        $id_unico_cliente = md5($aluno['email']);
        return $url = $ambiente . 'emailsettings/' . $id_externo . '/' . $id_unico_cliente;
    }

    public function dados() {

        $_POST = $this->sanitize->filter($this->input->post());

        $data = array(
            'ddd' => $this->input->post('ddd_celular', TRUE), 'telefone' => $this->input->post('celular', TRUE), 'cep' => str_replace('-', '', $this->input->post('cep', TRUE)), 'endereco' => $this->input->post('endereco', TRUE), 'numero' => $this->input->post('numero', TRUE), 'complemento' => $this->input->post('complemento', TRUE), 'bairro' => $this->input->post('bairro', TRUE), 'cidade' => $this->input->post('cidade', TRUE), 'estado' => $this->input->post('estado', TRUE)
        );

        $this->form_validation->set_rules('ddd_celular', 'ddd', 'trim|required|min_length[2]|max_length[2]|is_numeric', array('required' => ' O DDD está em branco. ', 'min_length' => ' O campo ddd deve conter pelo menos 2 caracteres.', 'max_length' => ' O campo ddd não deve conter mais de 2 caracteres.', 'is_numeric' => ' O campo ddd deve conter apenas caracteres numéricos.'));
        $this->form_validation->set_rules('celular', 'celular', 'trim|required|min_length[9]|max_length[9]|is_numeric', array('required' => ' O Celular está em branco. ', 'min_length' => ' O campo celular deve conter pelo menos 9 caracteres.', 'max_length' => ' O campo celular não deve conter mais de 9 caracteres.', 'is_numeric' => ' O campo celular deve conter apenas caracteres numéricos.'));
        $this->form_validation->set_rules('cep', 'cep', 'trim|required', array('required' => 'O seu cep está em branco'));
        $this->form_validation->set_rules('endereco', 'endereco', 'trim|required', array('required' => 'O seu endereço está em branco'));
        $this->form_validation->set_rules('numero', 'número', 'trim|required|alpha_numeric', array('required' => 'O seu número está em branco'));
        $this->form_validation->set_rules('bairro', 'bairro', 'trim|required', array('required' => 'O seu bairro está em branco'));
        $this->form_validation->set_rules('cidade', 'cidade', 'trim|required', array('required' => 'A sua cidade está em branco'));
        $this->form_validation->set_rules('estado', 'estado', 'trim|required|min_length[2]|max_length[2]', array('required' => 'O seu estado está em branco'));

        if ($this->form_validation->run() == FALSE) {
            $form = validation_errors('<div class="alert alert-warning" role="alert"><div class=""> <i class="fa fa-info-circle"></i> <span> ', ' </span> </div> </div>');
            $id = $_SESSION['aluno']['id_aluno'];
            $aluno = $this->Cadastro_Model->getAlunoPorID($id);
            $documentacao = $this->Cadastro_Model->obtemdocumentacao();
            $dados = array('documentacao' => $documentacao, 'termos' => $this->Cadastro_Model->obtemTermo(), 'erro_conf' => $form, 'titulo' => 'Meus Dados', 'aluno' => $aluno);
            $this->load->view('meusdados', $dados);
        } else {

            $valida = $this->buscaCEP($data['cep']);

            if ($valida['sucesso'] == 1) {

                $id = $_SESSION['aluno']['id_aluno'];
                $aluno = $this->Cadastro_Model->getAlunoPorID($id);

                $this->Cadastro_Model->autalizadadoscadastrais($data);
                $this->session->set_flashdata('sucesso-dados', '<div class="alert alert-success" role="alert">  <i class="fa fa-check-circle"></i> Dados alterados com sucesso </div>');
                redirect('meusdados');
            } else {
                $this->session->set_flashdata('erro-email', '<div class="alert alert-warning " role="alert"><i class="fa fa-info-circle"></i> Formato de CEP inválido. Por favor verifique os seus dados</div>');
                redirect('meusdados');
            }
        }
    }

    public function documentacao() {
        
        $documentacao = $this->Cadastro_Model->obtemdocumentacao();
        
        (!empty($documentacao['documento'])) ? redirect('meusdados') : '';
        
        $_POST = $this->sanitize->filter($this->input->post());
        $tipo = $this->input->post('tipo');
        $documento = $this->input->post('documento');

        $this->form_validation->set_rules('tipo', 'Tipo', 'trim|required', array('required' => 'O tipo de documento está em branco'));
        $this->form_validation->set_rules('documento', 'Documento', 'trim|required|is_numeric', array('required' => 'O número do documento está em branco'));
        if ($this->form_validation->run() == FALSE) {

            $form = validation_errors('<div class="alert alert-warning" role="alert"><div class=""> <i class="fa fa-info-circle"></i> <span> ', ' </span> </div> </div>');
            $this->session->set_flashdata('erro-documento', $form);
            redirect('meusdados');
        } else {

            if ($tipo == 2) {

                $valida = new Cpf($documento);

                if ($valida->valida()) {
                    //recupera o aluno e insere o seu e-mail na requisicao como identificador
                    $email_aluno = $this->Cadastro_Model->getAlunoPorID($_SESSION['aluno']['id_aluno'])['email'];
                    if (isset($email_aluno) && $email_aluno != null) {
                        $post['identificador'] = $email_aluno;
                    }

                    $info = array('tipo_doc' => $tipo, 'documento' => $documento);
                    $this->Cadastro_Model->documentacao($info);

                    $this->session->set_flashdata('sucesso-documento', '<div class="alert alert-success" role="alert"><i class="fa fa-check-circle"></i> Documento salvo com sucesso</div>');

                    redirect('meusdados');
                } else {
                    $this->session->set_flashdata('falha', '<div class="alert alert-warning" role="alert"><i class="fa fa-info-circle"></i> O CPF informado não é válido</div>');
                    redirect('meusdados');
                }
            } else {
                $info = array('tipo_doc' => $tipo, 'documento' => $documento);
                $this->Cadastro_Model->documentacao($info);

                $this->session->set_flashdata('sucesso-documento', '<div class="alert alert-success" role="alert"><i class="fa fa-check-circle"></i> Documento salvo com sucesso</div>');

                redirect('meusdados');
            }
        }
    }

    public function contador() {

        if (isset($_SESSION['contador'])) {

            $_SESSION['contador'] = $_SESSION['contador'] + 1;
        } else {

            $this->session->set_userdata("contador", 1);
        }

        if ($_SESSION['contador'] == 3) {

            return TRUE;
        }
    }

    public function alterasenha() {
        $_POST = $this->sanitize->filter($this->input->post());
        $senha_aluno = $this->input->post('senha-aluno', TRUE);
        $senha_aluno_conf = $this->input->post('senha-aluno-conf', TRUE);

        $this->form_validation->set_rules('senha-aluno', 'senha', 'trim|required|min_length[6]', array('required' => ' O campo senha está em branco. '));
        $this->form_validation->set_rules('senha-aluno-conf', 'confirmação de senha', 'trim|required|min_length[6]', array('required' => ' O campo de confirmação de senha está em branco. '));
        if ($this->form_validation->run() == FALSE) {
            $form = validation_errors('<div class="alert alert-warning " role="alert"><div class=""> <i class="fa fa-info-circle"></i> <span> ', ' </span> </div> </div>');
            $id = $_SESSION['aluno']['id_aluno'];
            $aluno = $this->Cadastro_Model->getAlunoPorID($id);
            $documentacao = $this->Cadastro_Model->obtemdocumentacao();
            $dados = array('documentacao' => $documentacao, 'termos' => $this->Cadastro_Model->obtemTermo(), 'erro_conf' => $form, 'titulo' => 'Meus Dados', 'aluno' => $aluno);
            $this->load->view('meusdados', $dados);
        } else {

            // VERIFICAR SE AS SENHAS SÃO A MESMA 
            if ($senha_aluno != $senha_aluno_conf) {

                $this->session->set_flashdata('erro-senha', '<div class="alert alert-warning" role="alert"><i class="fa fa-info-circle"></i> As senhas não são iguais. Verifique os seus dados</div>');
                redirect('meusdados');
            } else {
                $data = array('senha' => $this->Cadastro_Model->codifica($senha_aluno));
                $this->Cadastro_Model->autalizadadoscadastrais($data);
                $this->session->set_flashdata('sucesso-senha', '<div class="alert alert-success" role="alert"><i class="fa fa-check-circle"></i> Senha alterada com sucesso</div>');
                redirect('meusdados');
            }
        }
    }

    public function downloads() {

        if (isset($_SESSION['aluno']) == TRUE) {

            $id = $_SESSION['aluno']['id_aluno'];
            $aluno = $this->Cadastro_Model->getAlunoPorID($id);
            $dados = array('descricao' => 'Faça o download dos utilitários do Amazônia Cursos','termos' => $this->Cadastro_Model->obtemTermo(), 'titulo' => 'Downloads', 'aluno' => $aluno);
            $this->load->view('downloads', $dados);
        }
    }

    public function buscar_cep() {

        $this->form_validation->set_rules('cep', 'cep', 'trim|required|min_length[8]');

        if ($this->form_validation->run() != FALSE) {

            $cep = $this->input->post('cep');

            $ch = curl_init();

            //desenvolvimento
            //Chaves de acesso à API enviadas via POST
            $post = array(
                "token" => CEP_TOKEN,
                "chave" => CEP_CHAVE,
                "nome_instituicao" => "AMAZONIACURSOS",
                "cep" => $cep
            );
            curl_setopt($ch, CURLOPT_URL, CEP_URL);

            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $requisicao = json_decode(curl_exec($ch));
            curl_close($ch);


            if (isset($requisicao->status) && $requisicao->status == 200) {
                $this->output
                        ->set_content_type('application/json')
                        ->set_output(json_encode(array("sucesso" => 1, "data" => $requisicao->response)));
            } else {
                $this->output
                        ->set_content_type('application/json')
                        ->set_output(json_encode(array("sucesso" => 0, "data" => null)));
            }
        } else {

            $this->output
                    ->set_content_type('application/json')
                    ->set_output(json_encode(array("sucesso" => 0, "data" => null)));
        }
    }

    public function indique() {

        if (isset($_SESSION['aluno']) == TRUE) {

            $id = $_SESSION['aluno']['id_aluno'];
            $aluno = $this->Cadastro_Model->getAlunoPorID($id);

            $dados = array('descricao' => 'O aluno pode realizar a indicação do site Amazônia Cursos para um ou mais amigos','termos' => $this->Cadastro_Model->obtemTermo(), 'titulo' => 'Indique', 'aluno' => $aluno);
            $this->load->view('indique', $dados);
        }
    }

    public function indiqueamigo() {
        $_POST = $this->sanitize->filter($this->input->post());
        $nome_amigo = $this->input->post('nome-amigo', TRUE);
        $email_amigo = mb_strtolower($this->input->post('email-amigo', TRUE));

        $this->form_validation->set_rules('nome-amigo', 'nome do amigo', 'trim|required|min_length[10]', array('required' => ' O campo nome está em branco. '));
        $this->form_validation->set_rules('email-amigo', 'email', 'trim|required|valid_email', array('required' => ' O campo email está em branco. '));
        if ($this->form_validation->run() == FALSE) {
            $form = validation_errors('<div class="alert alert-warning" role="alert"><div class=""> <i class="fa fa-info-circle"></i> <span> ', ' </span> </div> </div>');

            $this->session->set_flashdata('erro-form-indique', $form);

            redirect('indique');
        } else {


            $id = $_SESSION['aluno']['id_aluno'];
            $aluno = $this->Cadastro_Model->getAlunoPorID($id);

            $poremail = $this->Cadastro_Model->getAlunoPorEmail($email_amigo);

            if ($poremail == FALSE) {
                $Subject = "Indicao de Cursos da Plataforma Amazônia Cursos";

                $nome = $aluno['nome'];

                $Body = $this->template->indicarAmigo($nome, $nome_amigo);
                $this->Cadastro_Model->email($Subject, $Body, $email_amigo);
                $this->session->set_flashdata('sucesso-indique', '<div class="alert alert-success" role="alert"><i class="fa fa-check-circle"></i> Indicação realizada com sucesso</div>');
                redirect('indique');
            } else {
                $this->session->set_flashdata('erro-indique', '<div class="alert alert-warning" role="alert"><i class="fa fa-info-circle"></i> O e-mail informado pertence a um aluno cadastro no site</div>');
                redirect('indique');
            }
        }
    }

    public function buscaCEP($cep) {

        $ch = curl_init();

        //desenvolvimento
        //Chaves de acesso à API enviadas via POST
        $post = array(
            "token" => CEP_TOKEN,
            "chave" => CEP_CHAVE,
            "nome_instituicao" => "AMAZONIACURSOS",
            "cep" => $cep
        );
        curl_setopt($ch, CURLOPT_URL, CEP_URL);

        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $requisicao = json_decode(curl_exec($ch));
        curl_close($ch);


        if (isset($requisicao->status) && $requisicao->status == 200) {
            return array("sucesso" => 1, "data" => $requisicao->response);
        } else {
            return array("sucesso" => 0, "data" => null);
        }
    }

    public function consultaNome() {
        
        $id = $_SESSION['aluno']['id_aluno'];
        $aluno = $this->Cadastro_Model->getAlunoPorID($id);
        $data = $this->dataDiferenca();

        if ($aluno['situacao'] == 1) {
            $log = $this->Cadastro_Model->logAluno($id);
            if (empty($log)) {
                $doc = $this->Cadastro_Model->obtemdocumentacao();
                if ($doc['tipo_doc'] == 2) {
                    $ovumc = $this->ovumc($doc['documento']);
                    if ($ovumc->status != 1) {
                    $this->session->set_flashdata('erro-senha', '<div class="alert alert-warning" role="alert"><i class="fa fa-info-circle"></i> '.$ovumc->mensagem.'</div>');
                    redirect('meusdados');    
                    } else {
                    $this->Cadastro_Model->insereLog($ovumc->nome, $aluno['nome'], $doc['documento']);
                    $this->docs();
                    $this->session->set_flashdata('sucesso-senha', '<div class="alert alert-success" role="alert"><i class="fa fa-check-circle"></i> Dados atualizados com sucesso</div>');
                    redirect('meusdados');
                    }
                } else {
                    $this->session->set_flashdata('erro-senha', '<div class="alert alert-warning" role="alert"><i class="fa fa-info-circle"></i> O seu CPF não está cadastrado. Por favor verique os seus dados</div>');
                    redirect('meusdados');
                }
            } else {
                if ($data > 30) {
                    $ovumc = $this->ovumc($log[0]->cpf);
                    if ($ovumc->status != 1) {
                    $this->session->set_flashdata('erro-senha', '<div class="alert alert-warning" role="alert"><i class="fa fa-info-circle"></i> '.$ovumc->mensagem.'</div>');
                    redirect('meusdados'); 
                    } 
                    if ($ovumc->nome != $log[0]->nome_atual) {
                        $this->Cadastro_Model->atualizaLog($ovumc->nome, $aluno['nome']);
                        $this->docs();
                        $this->session->set_flashdata('sucesso-senha', '<div class="alert alert-success" role="alert"><i class="fa fa-check-circle"></i> Dados atualizados com sucesso</div>');
                        redirect('meusdados');
                    } else {
                        $this->Cadastro_Model->atualizaLogData();
                        $this->session->set_flashdata('erro-senha', '<div class="alert alert-warning" role="alert"><i class="fa fa-info-circle"></i> Não foi possível identificar alterações nos seus registros</div>');
                        redirect('meusdados');
                    }
                } else {
                   $this->session->set_flashdata('erro-senha', '<div class="alert alert-warning" role="alert"><i class="fa fa-info-circle"></i> A consulta por este CPF já foi realizada nos últimos dias </div>');
                   redirect('meusdados');   
                }
            }
        } else {
            redirect('meusdados');
        }
    }

    public function dataDiferenca() {

        $log = $this->Cadastro_Model->logAluno($_SESSION['aluno']['id_aluno']);

        if (!empty($log)) {

            $data_inicio = new DateTime(date("Y-m-d", strtotime($log[0]->data_alteracao)));
            $data_fim = new DateTime(date('Y-m-d'));

            // Resgata diferença entre as datas
            $dateInterval = $data_inicio->diff($data_fim);
            return $dateInterval->days;
        }
    }

    private function ovumc($cpf) {
        
        $aluno = $this->Cadastro_Model->getAlunoPorID($_SESSION['aluno']['id_aluno']);
        
        $ch = curl_init();

        $post = array(
            'token' => CPF_TOKEN,
            'chave' => CPF_CHAVE,
            'instituicao' => 'AMAZONIACURSOS',
            'cpf' => $cpf,
            'identificador' => md5($aluno['email']),
            'forcar_consulta' => false
           );
        curl_setopt($ch, CURLOPT_URL, CPF_URL);
        
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $requisicao = curl_exec($ch);
        
        curl_close($ch);

        return $res = json_decode($requisicao);
    }

    private function docs() {
        $this->load->model('Certificado_Model', 'certificado');
        $certificado = $this->certificado->certificadoPago();

        if (!empty($certificado)) {

            foreach ($certificado as $certificados) {
                $cod_aut = $this->codAutenticacao();

                if ($certificados->concluido == 1) {
                    $this->certificado->setAutenticaHistorico($certificados->id_historico, $cod_aut, 2);
                } else {
                    $this->certificado->setAutenticaHistorico($certificados->id_historico, $cod_aut, 1);
                }

                $this->certificado->ovumDocs($cod_aut, 'CERTIFICADO', $this->criptografia->codifica($certificados->id_historico));
            }
        }
    }

    private function codAutenticacao() {

        do {

            $hash = $this->Matricula_Model->gera_hash();
            $cod_aut = $this->Matricula_Model->gera_autenticacao($hash);

            $this->db->where('cod_autenticacao', $cod_aut);
            $vCod = $this->db->get('autentica_historico')->result();
        } while (!empty($vCod));

        return $cod_aut;
    }

    public function alteraEmail() {
        $email = mb_strtolower($this->input->post('email_novo', TRUE));
        $this->form_validation->set_rules('email_novo', 'email', 'trim|required|valid_email', array('required' => ' O campo email está em branco. '));
        if ($this->form_validation->run() == FALSE) {
            $form = validation_errors('<div class="alert alert-warning" role="alert"><div class=""> <i class="fa fa-info-circle"></i> <span> ', ' </span> </div> </div>');
            $this->session->set_flashdata('erro-senha', $form);
            redirect('meusdados');
        } else {
            $rec = $this->Cadastro_Model->recuperaemailAluno($email);

            if (empty($rec)) {
                $this->preferenciaIris($email);
                $this->Cadastro_Model->atualizaEmail($email);
                $this->session->set_flashdata('sucesso-senha', '<div class="alert alert-success" role="alert"><i class="fa fa-check-circle"></i> Dados atualizados com sucesso</div>');
                redirect('meusdados');
            } else {
                $this->session->set_flashdata('erro-senha', '<div class="alert alert-warning" role="alert"><i class="fa fa-info-circle"></i> O e-mail informado está cadastrado. Por favor, tente novamente</div>');
                redirect('meusdados');
            }
        }
    }

    private function preferenciaIris($email_novo) {
        $ambiente = URL_API_IRIS;
        $url = $ambiente . 'cliente/consultar_preferencias/';
        $token = OPAYT_TOKEN;
        $chave = OPAYT_CHAVE;
        $id = $_SESSION['aluno']['id_aluno'];
        $aluno = $this->Cadastro_Model->getAlunoPorID($id);
        $email_antigo = $aluno['email'];
        
        $id_unico_antigo = md5($email_antigo);

        $post = array(
            'token' => $token,
            'chave' => $chave,
            'id_unico' => $id_unico_antigo,
        );
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $requisicao = curl_exec($ch);
        
        $requisicao_decodificada = json_decode($requisicao, TRUE);
        
        if ($requisicao_decodificada['status'] !== '200') {
            $preferencias = $requisicao_decodificada['preferencias'];
            $id_unico_novo = md5($email_novo);

            $url = $ambiente . 'cliente/atualizar_preferencias/';
            $post = array(
                'token' => $token,
                'chave' => $chave,
                'id_unico' => $id_unico_novo,
                'intervalo_sms' => $preferencias['intervalo_sms'],
                'intervalo_email' => $preferencias['intervalo_email'],
                'intervalo_push' => $preferencias['intervalo_push'],
                'informativo' => $preferencias['informativo'],
                'promocional' => $preferencias['promocional'],
            );
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
            $requisicao = curl_exec($ch);
            
            curl_close($ch);
        }
    }

}
