<?php

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

class Cadastro extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('Cadastro_Model');
        $this->load->model('Saldo_Model');
        $this->load->library('sanitize');
        $this->load->library('criptografia');
        $this->load->library('Cpf');
        $this->load->database();
        $this->ci = & get_instance();
        $this->ci->load->config('url', TRUE);
    }

    public function cadastro() {

        $id_cliente = $_SESSION['id_amn'];

        $cliente_termo = $this->Cadastro_Model->obtemClienteTermo($id_cliente);

        $aluno = $this->Cadastro_Model->verificaAluno();

        if (isset($_SESSION['logado']) == TRUE && empty($aluno)) {
            $dados = array('amazonia' => $this->Cadastro_Model->getAlunoPorID(), 'cliente' => $this->Cadastro_Model->verificaAluno(), 'termos' => $this->Cadastro_Model->obtemTermo());
            $this->load->view('cadastro', $dados);
        } else {
            redirect('base');
        }
    }
     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 cadastros() {

        // DADOS VINDO DO FORMULÁRIO DE CADASTRO
        $data = array(
            'id_negocio' => $this->geraIdNegocio(),
            'nome' => html_escape($this->input->post('nome', TRUE)),
            'nome_negocio' => strtoupper(html_escape($this->input->post('nome_negocio', TRUE))),
            'email' => html_escape($this->input->post('email', TRUE)),
            'saldo' => 0,
            'bonificacao' => 10,
            'ddd_celular' => html_escape($this->input->post('ddd_celular', TRUE)),
            'celular' => html_escape($this->input->post('celular')),
            'data_cadastro' => date('Y-m-d H:i:s'),
            'cep' => str_replace('-', '', html_escape($this->input->post('cep', TRUE))),
            'cpf' => preg_replace('#[^0-9]#', '', html_escape($this->input->post('cpf', TRUE))),
            'endereco' => html_escape($this->input->post('endereco', TRUE)),
            'numero' => html_escape($this->input->post('numero', TRUE)),
            'complemento' => html_escape($this->input->post('complemento', TRUE)),
            'bairro' => html_escape($this->input->post('bairro', TRUE)),
            'cidade' => $this->input->post('cidade', TRUE),
            'estado' => $this->input->post('estado', TRUE),
            'situacao' => 1
        );

        $termos = $this->Cadastro_Model->obtemTermo();
        $id = $termos['id_termo'];

        // VALIDA O FORMULÁRIO DE CADASTRO CASO O REQUIRED DO HTML SEJA DESABILITADO
        $this->form_validation->set_rules('nome', 'Nome', 'trim|required', array('required' => 'O seu nome está em branco'));
        $this->form_validation->set_rules('ddd_celular', 'Ddd', 'trim|required|min_length[2]|max_length[2]', array('required' => 'O DDD está em branco', 'min_length' => 'Verifique o seu DDD', 'max_length' => 'Verifique o seu DDD'));
        $this->form_validation->set_rules('celular', 'Celular', 'trim|required|min_length[8]|max_length[9]', array('required' => 'O DDD está em branco', 'min_length' => 'Verifique o seu celular', 'max_length' => 'Verifique o seu celular'));
        $this->form_validation->set_rules('cep', 'Cep', 'trim|required', array('required' => 'O seu cep está em branco'));
        $this->form_validation->set_rules('cpf', 'CPF', 'trim|required', array('required' => 'O seu cpf 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', 'Numero', 'trim|required', 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', array('required' => 'O seu estado está em branco'));
        $this->form_validation->set_rules('email', 'Email', 'trim|required', array('required' => 'O seu e-mail está em branco'));

        if ($this->form_validation->run() == FALSE) {
            $form = validation_errors('<script>alertify.set("notifier","position", "top-right"); alertify.error("', '");</script>');
            $dados = array('amazonia' => $this->Cadastro_Model->getAlunoPorID(), 'cliente' => $this->Cadastro_Model->verificaAluno(), 'erro_form' => $form);
            $this->load->view('cadastro', $dados); // REDIRECIONA O USUARIO CASA ALGUM CAMPO SEJA INFORMADO INCORRETAMENTE 
        } else {

            $cpf = $data['cpf']; // API DE VALIDAÇÃO DE CPF 
            $valida = new Cpf($cpf);
            if ($valida->valida()) {
                
                $ch = curl_init();
                $cliente_cpf = $this->Cadastro_Model->obtemClienteCPF($cpf);

                $rec = $this->Saldo_Model->recuperaemail();
                $email = $rec['email'];

                $cp = $cliente_cpf['cpf'];
                //Chaves de acesso  API enviadas via POST
                $post = array(
                    'token' => '22O0LOWPEIDIQaCVGAPJS5W3eoB2lFXd', 
                    'chave' => '2OLOWQAMAZKQagrgergCVGAPJS5W3eoB2lFXdiF', 
                    'instituicao' => 'AMAZONIACURSOS', 
                    'cpf' => preg_replace('#[^0-9]#', '', $this->input->post('cpf')));

                curl_setopt($ch, CURLOPT_URL, 'https://www.ovum.com.br/ovumc/consulta_cpf');
                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);

                $res = json_decode($requisicao);
                
                if (($res->status) == 0) {
                    $this->session->set_flashdata('erro-cpf', '<script> alertify.set("notifier","position", "top-center"); alertify.error("O CPF informado não é válido");</script>');
                    $dados = array('amazonia' => $this->Cadastro_Model->getAlunoPorID(), 'cliente' => $this->Cadastro_Model->verificaAluno(), 'termos' => $this->Cadastro_Model->obtemTermo());
                    $this->load->view('cadastro', $dados);
                } else if ($cp != "") {
                    $this->session->set_flashdata('erro-cpf', '<script> alertify.set("notifier","position", "top-center"); alertify.error("O CPF informado já está cadastrado");</script>');
                    $dados = array('amazonia' => $this->Cadastro_Model->getAlunoPorID(), 'cliente' => $this->Cadastro_Model->verificaAluno(), 'termos' => $this->Cadastro_Model->obtemTermo());
                    $this->load->view('cadastro', $dados);
                } else if ($email != NULL) {
                    $this->session->set_flashdata('erro-email', '<div class="alert alert-warning" role="alert"><span class="glyphicon glyphicon-exclamation-sign login-span"></span> O e-mail informado já está cadastrado </div>');
                    $dados = array('amazonia' => $this->Cadastro_Model->getAlunoPorID(), 'cliente' => $this->Cadastro_Model->verificaAluno(), 'termos' => $this->Cadastro_Model->obtemTermo());
                    $this->load->view('cadastro', $dados);
                } else if (($res->status) == 1 && $res->nome != "" && $res->nascimento != "0000-00-00" && $email == NULL) {
                    
                    $this->Cadastro_Model->insereCliente($data, $id); // INSERÇÃO DOS DADOS DO FORMULÁRIO DE CADASTRO E DO TERMO DE USO VIGENTE

                    redirect('saldo'); // SE TODAS AS INFORMAÇÕES ESTIVEREM CORRETAS
                } else if ($res->nome == "" || $res->nascimento == "0000-00-00" && $res->status == 1 && $email == NULL) { 
                    $cont = $this->contador();
                    if ($cont < 3) {
                    $this->session->set_flashdata('falhageral', '<script> alertify.set("notifier","position", "top-center"); alertify.error("Houve uma falha ao realizar a validação. Por favor, tente novamente.");</script>');
                    $dados = array('amazonia' => $this->Cadastro_Model->getAlunoPorID(), 'cliente' => $this->Cadastro_Model->verificaAluno(), 'termos' => $this->Cadastro_Model->obtemTermo());
                    $this->load->view('cadastro', $dados);
                    } else {
                    $this->session->set_flashdata('maximatentativa', '<script> alertify.set("notifier","position", "top-center"); alertify.error("Houve uma falha ao realizar a validação. Por favor entre em contato com o atendimento");</script>');
                    $dados = array('amazonia' => $this->Cadastro_Model->getAlunoPorID(), 'cliente' => $this->Cadastro_Model->verificaAluno(), 'termos' => $this->Cadastro_Model->obtemTermo());
                    $this->load->view('cadastro', $dados);
                    $this->session->unset_userdata('contador');
                    }
                }
            } else {
                    $this->session->set_flashdata('erro-cpf-valida', '<script> alertify.set("notifier","position", "top-center"); alertify.error("O CPF informado não é válido");</script>');
                    $dados = array('amazonia' => $this->Cadastro_Model->getAlunoPorID(), 'cliente' => $this->Cadastro_Model->verificaAluno(), 'termos' => $this->Cadastro_Model->obtemTermo());
                    $this->load->view('cadastro', $dados);
            }
        }
    }

    public function geraIdNegocio() {

        $a1 = strtoupper(substr(md5(uniqid() . $_SESSION['logado']['id'] . $_SESSION['logado']['nome'] . $_SESSION['logado']['email'] . date('Y-m-d H:i:s')), -4));
        $a2 = strtoupper(substr(md5(uniqid() . $_SESSION['logado']['id'] . $_SESSION['logado']['nome'] . $_SESSION['logado']['email'] . date('Y-m-d H:i:s')), -4));
        $codigo = $a1 . "-" . $a2;

        return $codigo;
    }

    public function base() {
        $lk = $this->ci->config->item('url_base', 'url');
        redirect($lk);
    }

}
