<?php

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

class Home extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('Auditoria_Model');
        $this->load->database();
        $this->load->library('Sanitize');
        $this->load->library('Criptografia');
    }

    public function index() {
        if (isset($_SESSION['admin']) == FALSE) {
            $this->load->view('login');
        } else {
            redirect('inicial');
        }
    }
    
    

    public function inicial() {

        if (isset($_SESSION['admin']) == TRUE) {
           
            $dados = array('controle' => $this, 'admin' => $this->Auditoria_Model->getLoginAdminporID(), 'alunos' => NULL);
            $this->load->view('inicio', $dados);
        } else {
            redirect();
        }
        
    }
    
    public function relatorio() {
        
        if (isset($_SESSION['admin']) == TRUE) {
            $alunos= $this->db->query('SELECT * FROM `aluno` where data_vencimento between DATE_SUB(curdate(), INTERVAL 5 DAY) and  curdate() and telefone is not null and telefone<>" "')->result();
            $alunossemfatura=$this->db->query('SELECT * FROM `aluno` where data_vencimento between DATE_SUB(curdate(), INTERVAL 14 DAY) and  DATE_SUB(curdate(), INTERVAL 7 DAY) and telefone is not null and telefone<>" "')->result();
            $dados = array('controle' => $this, 'admin' => $this->Auditoria_Model->getLoginAdminporID(), 'alunos' => $alunos,'alunossemfatura'=>$alunossemfatura);
            $this->load->view('relatorio_aluno', $dados);
        } else {
            redirect();
        }
        
    }

    public function login() {

        $_POST = $this->sanitize->filter($this->input->post());
        $login = $this->input->post('login', TRUE);
        $senha = $this->input->post('senha-login', TRUE);
        if ($login != "" || $senha != "") {

            $this->form_validation->set_rules('login', 'login', 'trim|required', array('required' => ' O seu login está em branco. '));

            $this->form_validation->set_rules('senha-login', 'senha', 'trim|required|min_length[6]', array('required' => ' O campo senha está em branco. ', 'min_length' => ' O campo senha deve conter pelo menos 6 caracteres.'));

            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', $form);

                redirect('');
            } else {

                $admin = $this->Auditoria_Model->getLoginAdmin($login, md5($senha));

                if ($admin != NULL && $admin['bloqueado'] == 0) {
                    $this->session->set_userdata("admin", $admin);
                    redirect('inicial');
                } else {
                    $this->session->set_flashdata('erro-usuario', '<div class="alert alert-warning" role="alert"><i class="fa fa-info-circle"></i> O usuário informado não está cadastrado ou suspenso </div>');
                    redirect('');
                }
            }
        } else {
            redirect();
        }
    }

    public function aluno() {

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

            $_GET = $this->sanitize->filter($this->input->get());
            $nome = str_replace("+", " ", trim($this->input->get('nome', TRUE)));
            $this->form_validation->set_data($this->input->get());

            $this->form_validation->set_rules('nome', 'Nome', 'trim|required', array('required' => 'O campo de pesquisa 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', $form);

                redirect('inicial');
            } else {

                 $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'
            );
                $config = array("base_url" => base_url('aluno'), "per_page" => 5, "num_links" => 2, "uri_segment" => 2, "total_rows" => $this->Auditoria_Model->CountAll($nome), "full_tag_open" => "<ul class= 'pagination pag-curso'>", "full_tag_close" => "</ul>", "first_link" => FALSE, "last_link" => '...Último', "first_tag_open" => "<li>", "first_tag_close" => "</li>", "prev_link" => "<i class='fa fa-arrow-circle-left'></i>", "prev_tag_open" => "<li class='next'>", "prev_tag_close" => "</li>", "next_link" => "<i class='fa fa-arrow-circle-right'></i>", "next_tag_open" => "<li class='next'>", "next_tag_close" => "</li>", "last_tag_open" => "<li class='ultimo-link'>", "last_tag_close" => "</li>", "cur_tag_open" => "<li class= 'active'><a href=''>", "cur_tag_close" => "</a></li>", "num_tag_open" => "<li>", "num_tag_close" => "</li>");
                if (!is_null($nome)) {
                    $filter = '?nome=' . $nome;
                    $config['suffix'] = $filter;
                    $config['first_url'] = base_url('aluno' . $filter);
                }

                $this->pagination->initialize($config);
                $offset = ($this->uri->segment(2)) ? $this->uri->segment(2) : 0;
                $dados = array('estados' => $estados,'pagination' => $this->pagination->create_links(), 'controle' => $this, 'admin' => $this->Auditoria_Model->getLoginAdminporID(), 'alunos' => $this->Auditoria_Model->getAluno($nome, $config['per_page'], $offset));
                $this->load->view('inicio', $dados);
            }
        } else {
            redirect();
        }
    }

    public function dados() {

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

        $data = array(
            'nome' => $this->input->post('nome', TRUE), 'email' => $this->input->post('email', TRUE), 'bloqueado' => $this->input->post('bloqueado', TRUE), 'ddd' => $this->input->post('ddd', 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('email', 'Email', 'trim|required|valid_email', array('required' => ' O e-mail está em branco. ', 'valid_email' => ' O campo email deve conter um endereço de e-mail válido. '));

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

            $form = validation_errors();
            $data = array('situacao' => 'form-erro', 'erro_form' => $form);
            echo json_encode($data);
        } else {

            $id = $this->criptografia->decodifica($this->input->post('id'));

            $aluno = $this->Auditoria_Model->getAlunoPorID($id);

            if ($aluno['email'] == $data['email']) {  // VERIFICA SE HOUVE ALTERAÇÃO NO E-AMIL

                $this->Auditoria_Model->autalizadadoscadastrais($data, $id);

                $data = array('situacao' => 'sucesso', 'nome' => $this->input->post('nome', TRUE));
                echo json_encode($data);
            } else {

                $por_email = $this->Auditoria_Model->getAlunoPorEmail($data['email']);

                if ($por_email != FALSE) { // VERIFICA SE O E-MAIL JÁ PERTENCE A UM ALUNO
                    $data = array('situacao' => 'erro-email');
                    echo json_encode($data);
                } else {
                    $this->Auditoria_Model->autalizadadoscadastrais($data, $id);

                    $data = array('situacao' => 'sucesso', 'nome' => $this->input->post('nome', TRUE));
                    echo json_encode($data);
                }
            }
        }
    }
    
    public function dados_old() {

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

        $data = array(
            'email' => $this->input->post('email', TRUE), 'bloqueado' => $this->input->post('bloqueado', TRUE), 'ddd' => $this->input->post('ddd', 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('email', 'Email', 'trim|required|valid_email', array('required' => ' O e-mail está em branco. ', 'valid_email' => ' O campo email deve conter um endereço de e-mail válido. '));
        $this->form_validation->set_rules('bloqueado', 'bloqueado', 'trim|required', array('required' => 'A situação do aluno está em branco'));
        $this->form_validation->set_rules('ddd', 'ddd', 'trim|required|min_length[2]|max_length[2]', array('required' => 'O ddd está em branco'));
        $this->form_validation->set_rules('celular', 'celular', 'trim|required|min_length[8]|max_length[9]', array('required' => 'O celular está em branco'));
        $this->form_validation->set_rules('cep', 'cep', 'trim|required', array('required' => 'O cep está em branco'));
        $this->form_validation->set_rules('endereco', 'endereco', 'trim|required', array('required' => 'O endereço está em branco'));
        $this->form_validation->set_rules('numero', 'numero', 'trim|required', array('required' => 'O número está em branco'));
        $this->form_validation->set_rules('bairro', 'bairro', 'trim|required', array('required' => 'O bairro está em branco'));
        $this->form_validation->set_rules('cidade', 'cidade', 'trim|required', array('required' => 'A cidade está em branco'));
        $this->form_validation->set_rules('estado', 'estado', 'trim|required', array('required' => 'O 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>');

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

            redirect('inicial');
        } else {
            $id = $this->input->post('id', TRUE);
            $this->Auditoria_Model->autalizadadoscadastrais($data, $this->criptografia->decodifica($id));

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

            redirect('inicial');
        }
    }

    public function logout() {
        $this->session->unset_userdata('admin');
        redirect();
    }

    public function recuperalog($id = NULL) {

        $cn = $this->Auditoria_Model->getalteracaocpf($this->criptografia->decodifica($id));
        if ($cn != NULL) {
            foreach ($cn as $value) {
                $data = date("d/m/Y H:i:s", strtotime($value->data_alteracao));
                $cpf = substr($value->cpf, 0, 4);
                return "   <td>$cpf...</td>"
                        . "<td>$value->nome_antigo</td>"
                        . "<td>$value->nome_atual</td>"
                        . "<td>$data</td>";
            }
        } else {
            return FALSE;
        }
    }

    public function academico() {


        $id = $this->criptografia->decodifica($this->input->post('id'));
        $historico = $this->Auditoria_Model->getCursoHistorico($id);
        $result = [];
        foreach ($historico as $historicos) {
            $pago = '-';
            $p = $this->Auditoria_Model->getCursoHistoricoTransacao($historicos->id_historico);
            if (!empty($p)) {
                foreach ($p as $pag) {
                    if ($pag->situacao_pagamento == 1 || $pag->situacao_pagamento == 4) {
                        $pago = 'SIM';
                        continue;
                    }
                }
            }
            $dado = array();
            $dado['id_historico'] = $historicos->id_historico;
            $dado['nome'] = $historicos->nome;
            $dado['primeiro_dia'] = $historicos->primeiro_dia;
            $dado['ultimo_dia'] = $historicos->ultimo_dia;
            $dado['carga_horaria'] = $historicos->carga_horaria;
            $dado['nota'] = $historicos->nota;
            $dado['concluido'] = $historicos->concluido;
            $dado['num_cliques'] = $historicos->num_cliques;
            $dado['situacao_pagamento'] = $pago;
            
            $result[] = $dado;
        }
        $object = (object) $result;
        echo json_encode(array('resp' => TRUE, 'result' => $object));
    }

    public function financeiro() {

        $id = $this->criptografia->decodifica($this->input->post('id'));
        $financeiro = $this->Auditoria_Model->obtemtransacao($id);

        if ($financeiro != NULL) {
            $nomes = '';

            $arrayfinanceiro = array();
            foreach ($financeiro as $valores) {

                foreach ($valores as $values) {
                    $itens = $values['itens_transacao'];
                    foreach ($itens as $item) {
                        foreach ($item as $info) {
                            $nomes .= $info->nome . ', ';
                        }
                    }
                    $regra = substr($nomes, 0, -2);
                    $arrayfinanceiro[] = array(
                        'transacao' => $values['id_transacao'],
                        'nome' => $regra,
                        'data' => $values['data'],
                        'tipo' => $values['tipo'],
                        'valor' => number_format($values['valor'], 2, ',', '.'),
                        'situacao' => $values['situacao']
                    );
                    $nomes = '';
                }
            }
            echo json_encode(array('resp' => TRUE, 'result' => $arrayfinanceiro));
        } else {
            echo json_encode(array('resp' => FALSE));
        }
    }

    public function transacao() {

        $transacao = $this->input->post('transacao');
        $financeiro = $this->Auditoria_Model->obtemtransacaonula($transacao);

        if ($financeiro != NULL) {
            $nomes = '';

            $arrayfinanceiro = array();
            foreach ($financeiro as $valores) {

                foreach ($valores as $values) {
                    $itens = $values['itens_transacao'];
                    foreach ($itens as $item) {
                        foreach ($item as $info) {
                            $nomes .= $info->nome . ', ';
                        }
                    }
                    $regra = substr($nomes, 0, -2);
                    $arrayfinanceiro[] = array(
                        'nome' => $regra
                    );
                    $nomes = '';
                }
            }
            echo json_encode(array('resp' => TRUE, 'result' => $arrayfinanceiro));
        } else {
            echo json_encode(array('resp' => FALSE));
        }
    }

}
