<?php

class Usuarios extends CI_Controller {

    private $modelPagina = 'usuarios_model';
    private $tabela = 'tbl_006_usuarios';

    function __construct() {
        parent::__construct();
        $this->load->helper(get_helpers_paginas());
        ValidacaoUtils::verificarLoginUtils($this->session);
        ValidacaoUtils::nivelTemAcessoPermitido($this->session->userdata('nivel'), $this->router->class);
        ValidacaoUtils::carregarModelsPagina($this->modelPagina, $this);
        $this->data['menuUsuarios'] = 'Usuários';
        $this->data['menuConfiguracoes'] = 'Configurações';
    }

    function index() {
        $this->gerenciar();
    }

    function gerenciar() {
//        $config = DadosPaginas::layoutPaginacao('usuarios/gerenciar/', $this->usuarios_model->count($this->tabela), $this);
//        $this->pagination->initialize($config);
        $this->data['results'] = $this->usuarios_model->get($this->tabela, 'idUsuarios,nome,rg,cpf,telefone,nivel,celular');
        $this->data['view'] = 'sistema/usuarios/usuarios';
        $this->load->view(DadosPaginas::PG_TOPO_SISTEMA, $this->data);
    }

    function adicionar() {
        $this->load->library(DadosPaginas::FORM_VALIDATION);
        $this->data['custom_error'] = '';

        if ($this->form_validation->run('usuarios') == false) {
            $this->data['custom_error'] = (validation_errors() ? '<div class="alert alert-danger">' . validation_errors() . '</div>' : false);

        } else {

            $this->load->library('encrypt');
            $data = array(
                'nome' => set_value('nome'),
                'sobreNomeUsuario' => set_value('sobreNomeUsuario'),
                'endereco' => set_value('endereco'),
                'funcaoUsuario' => set_value('funcaoUsuario'),
                'email' => set_value('email'),
                'senha' => $this->encrypt->sha1($this->input->post('senha')),
                'celular' => set_value('celular'),
                'nivel' => $this->input->post('nivel'),
                'FUNCIONARIO_ID' => $this->input->post('funcionario_id'),
                'dataCadastro' => date('Y-m-d')
            );

            if ($this->usuarios_model->add($this->tabela, $data) == TRUE) {
                $this->session->set_flashdata('success', 'Usuário cadastrado com sucesso!');
                redirect(base_url() . 'usuarios/adicionar/');
            } else {
                $this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro.</p></div>';

            }
        }
        $this->data['resultscomboFuncionarios'] = $this->usuarios_model->get('tbl_010_funcionario', 'idFuncionario, nomeFuncionario, sobreNome, funcao');
        $this->data['view'] = 'sistema/usuarios/adicionarUsuario';
        $this->load->view(DadosPaginas::PG_TOPO_SISTEMA, $this->data);


    }

    function editar() {

        $this->load->library(DadosPaginas::FORM_VALIDATION);
        $this->data['custom_error'] = '';
        $this->form_validation->set_rules('nome', 'Nome', 'trim|required');
        $this->form_validation->set_rules('sobreNomeUsuario', 'Sobre Nome', 'trim|required');
        $this->form_validation->set_rules('cpf', 'CPF', 'trim|required');
        $this->form_validation->set_rules('endereco', 'Endereco', 'trim|required');
        $this->form_validation->set_rules('email', 'Email', 'trim|required');
        $this->form_validation->set_rules('telefone', 'Telefone', 'trim|required');
        $this->form_validation->set_rules('funcaoUsuario', 'funcao', 'trim|required');
        $this->form_validation->set_rules('nivel', 'Nível', 'trim|required');

        if ($this->form_validation->run() == false) {
            $this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' . validation_errors() . '</div>' : false);

        } else {

            if ($this->input->post('idUsuarios') == 1 && $this->input->post('situacao') == 0) {
                $this->session->set_flashdata('error', 'O usuário super admin não pode ser desativado!');
                redirect(base_url() . 'usuarios/editar/' . $this->input->post('idUsuarios'));
            }

            $senha = $this->input->post('senha');
            if ($senha != null) {
                $this->load->library('encrypt');
                $senha = $this->encrypt->sha1($senha);
                $situacao = $this->input->post('situacao')?1:0;

                $data = array(
                    'nome' => $this->input->post('nome'),
                    'sobreNomeUsuario' => $this->input->post('sobreNomeUsuario'),
                    'rg' => $this->input->post('rg'),
                    'cpf' => $this->input->post('cpf'),
                    'endereco' => $this->input->post('endereco'),
                    'email' => $this->input->post('email'),
                    'cep' => $this->input->post('cep'),
                    'endereco' => $this->input->post('endereco'),
                    'senha' => $senha,
                    'telefone' => $this->input->post('telefone'),
                    'celular' => $this->input->post('celular'),
                    'situacao' => $situacao,
                    'funcaoUsuario' => $this->input->post('funcaoUsuario'),
                    'nivel' => $this->input->post('nivel')
                );
            } else {

                $data = array(
                    'nome' => $this->input->post('nome'),
                    'sobreNomeUsuario' => $this->input->post('sobreNomeUsuario'),
                    'rg' => $this->input->post('rg'),
                    'cpf' => $this->input->post('cpf'),
                    'endereco' => $this->input->post('endereco'),
                    'email' => $this->input->post('email'),
                    'cep' => $this->input->post('cep'),
                    'endereco' => $this->input->post('endereco'),
                    'telefone' => $this->input->post('telefone'),
                    'celular' => $this->input->post('celular'),
                    'situacao' => $this->input->post('situacao'),
                    'funcaoUsuario' => $this->input->post('funcaoUsuario'),
                    'nivel' => $this->input->post('nivel')
                );

            }


            if ($this->usuarios_model->edit($this->tabela, $data, 'idUsuarios', $this->uri->segment(3)) == TRUE) {
                $this->session->set_flashdata('success', 'Usuário editado com sucesso!');
                redirect(base_url() . 'usuarios/editar/' . $this->uri->segment(3));
            } else {
                $this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro</p></div>';

            }
        }

        $this->data['result'] = $this->usuarios_model->getById($this->uri->segment(3));


        $this->data['view'] = 'sistema/usuarios/editarUsuario';
        $this->load->view(DadosPaginas::PG_TOPO_SISTEMA, $this->data);


    }

    function excluir() {

        $id = $this->input->post('id');
        if ($id == null) {
            $this->session->set_flashdata('error', 'Erro ao tentar excluir usuário.');
            redirect('usuarios/gerenciar/');
        }


        $this->db->where('idUsuarios', $id);

        $this->db->delete($this->tabela);

        $this->session->set_flashdata('success', 'Usuário excluído com sucesso!');
        redirect('usuarios/gerenciar/');

    }
}

