Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
82 kB
2
Indexable
Never
<?php

class Usuarios extends MY_Controller {


    public function index()
    {
        redirect($this->router->class.'/listar');
    }


    public function login()
    {


        delete_cookie('GRUPO_EMPRESARIAL_EXTERNO');
    	if( $this->nativesession->get('usuario_logado') ){
			redirect();
		}
    	else {

    	    //Fixando grupo empresarial de acordo com o servidor cliente J&O
            //Caso não se encaixe em nenhum servidor pré-definido, assume que o Elo está rodando via Cloud J&O, então exige código empresarial
    	    switch( gethostname() ){
                case 'SRV-ELORP-01':
                    $this->nativesession->set('grupo_empresarial_fixo', 1);
                break;
                case 'elo-php-2':
                default:
                    $this->nativesession->set('grupo_empresarial_fixo', 0);
                break;
            }

			$this->load->view('usuarios/login');

		}

    }


    public function login_etapa1()
    {

        if( $this->input->post() || $this->nativesession->get('codigo_usuario') ){

            if( $this->nativesession->get('codigo_usuario') ){
                $usuario = strip_tags( mb_strtoupper($this->nativesession->get('codigo_usuario')) );
                $senha   = $this->nativesession->get('senha_usuario');
                $grupo   = limpar_campo($this->nativesession->get('codigo_grupo_login'));

                $this->nativesession->delete('codigo_usuario');
                $this->nativesession->delete('senha_usuario');
                $this->nativesession->delete('codigo_grupo_login');
            }
            else {
                $usuario = strip_tags( mb_strtoupper($this->input->post('usuario')) );
                $senha   = $this->input->post('senha');
                $grupo   = $this->nativesession->get('grupo_empresarial_fixo') != 0 ? $this->nativesession->get('grupo_empresarial_fixo') : limpar_campo($this->input->post('codigo_grupo_login'));
            }


            if( !validar_recaptcha( $this->input->post('g-recaptcha-response') ) ){
                flashdata('alert-error', 'Marque a opção Eu não sou um robô');
                redirect('usuarios/login');
            }
            else {

                $obj = new Grupo_Empresarial();
                $objGrupo = $obj->buscar_por_codigo_ativos($grupo);

                if ( $objGrupo->result_count() == 1 ) {

                $obj = new Usuario();
                $data['usuario'] = $obj->login(trim($usuario), criptografar($senha), $grupo);

                    if ($data['usuario']->result_count() == 1) {

                        $cookie = array(
                            'name'   => 'GRUPO_EMPRESARIAL',
                            'value'  => serialize($grupo),
                            'expire' => 5184000
                        );

                        set_cookie($cookie);

                        $obj2 = new Empresa_Usuario();
                        $data['empresas'] = $obj2->listar_por_usuario($data['usuario']->CD_USUARIO);

                        if ($data['empresas']->result_count() == 1) { //Usuário pertence a somente uma empresa

                            $retornoHorario = explode(";", (new Usuario())->verificar_permissao(conectar_oracle(), $data['usuario']->CD_EMPRESA, $data['usuario']->CD_USUARIO));

                            $this->nativesession->set('empreendimentos_codigos', 0);

                            if ($retornoHorario[0] == 'S') {
                                $obj3 = new Empresa();
                                $empresa = $obj3->buscar_por_id($data['empresas']->CD_EMPRESA);

                                if ($empresa->AO_POSSUI_UNIDADE_NEGOCIO == 'S') {
                                    $objEUsuario = new Empresa_Usuario();
                                    $unidadeNegocio = $objEUsuario->listar_unidade_negocio($data['usuario']->CD_USUARIO, $empresa->CD_EMPRESA);
                                } else {
                                    $unidadeNegocio = null;
                                }

                                $imagem = file_exists("assets/upload/{$data['usuario']->CD_GRUPO_EMPRESARIAL}/usuarios/{$data['usuario']->CD_USUARIO}.jpg") ? base_url("assets/upload/{$data['usuario']->CD_GRUPO_EMPRESARIAL}/usuarios/" . buscar_thumb($data['usuario']->CD_USUARIO . '.jpg')) : base_url('assets/img/avatar.jpg');

                                login_usuario($data['usuario']->CD_USUARIO, $data['usuario']->DS_USUARIO, $empresa->NO_EMPRESA, $empresa->CD_EMPRESA, $imagem, buscar_permissoes($data['usuario']->CODPERFIL), $data['usuario']->CODPERFIL, $empresa->TX_CAMINHO_GRAVACAO_GED, $empresa->CD_GRUPO_EMPRESARIAL, $data['usuario']->CD_USUARIO_CADASTRO, $empresa->AO_POSSUI_VENDA_TITULO_CAP, $data['usuario']->AO_OBSERVADOR_OCORRENCIAS, $data['usuario']->AO_ACEITA_NOTIFICACOES_POPUP, $empresa->AO_POSSUI_UNIDADE_NEGOCIO, $unidadeNegocio, false, $empresa->TX_CAMINHO_MODELO_DOCTOS, $empresa->TP_PLANO_ASSIST_FUNERAL, $empresa->TX_LOGO, $empresa->TP_AMBIENTE_INSTALACAO_ELO, $data['usuario']->TP_AREA_PREFERENCIA_USUARIO, $empresa->AO_REC_ATEND_DIR_PLANO_GER_OS, $empresa->TP_METODO_INTEGRACAO_GED, $data['usuario']->AO_ADMINISTRADOR, $data['usuario']->AO_USUARIO_REC_NOTIF_SMS_RESP, $empresa->AO_POSSUI_PROD_COM_EST_UNIFIC, $empresa->URL_SERVIDOR_PAINEIS, $empresa->AO_OBRIGA_INF_LOC_VENDA_PLFUN, $empresa->AO_VENDA_CONS_PLANO_TAB_SEG, $empresa->TP_PASTA_CONTRATO_GED, $empresa->NO_FANTASIA, $empresa->NR_MAX_IMPRESSOES_TICKETS, $data['usuario']->AO_CONCEDE_DESCONTO_VENDAS, $data['usuario']->TX_EMAIL, $empresa->TP_RAMO_EMPRESARIAL_ATIVIDADE, $empresa->CD_EMPRESA_CLINICA);

                                flashdata('alert-success', 'Bem vindo(a): ' . $data['usuario']->DS_USUARIO);
                                if ( $data['usuario']->AO_OBRIGA_TROCA_SENHA == 'S' ) { 
                                    redirect ( $this->router->class . '/trocar_senha_usuario/' . $data['usuario']->CD_USUARIO );
                                }
                                
                                if ($this->nativesession->get('usuario_url_redirecionar')) {

                                    $url = $this->nativesession->get('usuario_url_redirecionar');
                                    $this->nativesession->delete('usuario_url_redirecionar');
                                    redirect($url);
                                } else {
                                    redirect();
                                }
                            } else if ($retornoHorario[0] == 'N') {
                                flashdata('alert-danger', utf8_decode($retornoHorario[1]));
                                redirect($this->router->class . '/login');
                            } else {
                                flashdata('alert-danger', 'O usuário não possui permissão de acesso nesse horário!');
                                redirect($this->router->class . '/login');
                            }
                        } else if (!$data['empresas']->result_count()) { //Usuário não pertence a nenhuma empresa
                            flashdata('alert-danger', 'O usuário não possui acesso a nenhum empreendimento.');
                            redirect($this->router->class . '/login');
                        } else { //Usuário pertence a mais de um empreendimento
                            flashdata('alert-success', 'Bem vindo(a): ' . $data['usuario']->DS_USUARIO);
                            $this->load->view('usuarios/login', $data);
                        }
                    } else {

                        $this->session->set_flashdata('usuario', strip_tags($this->input->post('usuario')));

                        flashdata('alert-error', 'Usuário não encontrado!');

                        redirect($this->router->class . '/login');
                    }

                } else {

                    $this->session->set_flashdata('usuario', strip_tags($this->input->post('usuario')));

                    flashdata('alert-error', 'Grupo empresarial não encontrado ou inativo!');

                    redirect($this->router->class . '/login');

                }
            }

        }
        else {
            redirect($this->router->class.'/login');
        }

    }


    public function login_etapa2()
    {

        if( $this->input->post() && $this->input->post('verificacao') == criptografar($this->input->post('codigo_usuario').'verificacao_seg') ){
            //Verifica se o usuário não alterou o código do usuário no formulário, impedindo que ele logue em outros empreendimentos

            $obj = new Empresa();
            $empresa = $obj->buscar_por_id( $this->input->post('empreendimento') );

            $obj2 = new Usuario();
            $u = $obj2->buscar_por_codigo( $this->input->post('codigo_usuario'), $this->input->post('grupo_usuario') );

            $imagem = file_exists("assets/upload/{$u->CD_GRUPO_EMPRESARIAL}/usuarios/{$u->CD_USUARIO}.jpg") ? base_url("assets/upload/{$this->nativesession->get('usuario_grupo_empresarial')}/{$this->nativesession->get('usuario_cd_empresa')}/usuarios/" . buscar_thumb("$u->CD_USUARIO.jpg")) : base_url('assets/img/avatar.jpg');

            if ( $empresa->AO_POSSUI_UNIDADE_NEGOCIO == 'S' ) {
                $objEUsuario = new Empresa_Usuario();
                $unidadeNegocio = $objEUsuario->listar_unidade_negocio( $u->CD_USUARIO, $empresa->CD_EMPRESA );
            }
            else {
                $unidadeNegocio = null;
            }

            $retornoHorario = explode(";", (new Usuario())->verificar_permissao(conectar_oracle(), $u->CD_EMPRESA, $u->CD_USUARIO) );

            if ( $retornoHorario[0] == 'S') {

                login_usuario($this->input->post('codigo_usuario'), $this->input->post('nome_usuario'), $empresa->NO_EMPRESA, $empresa->CD_EMPRESA, $imagem, buscar_permissoes($u->CODPERFIL), $u->CODPERFIL, $empresa->TX_CAMINHO_GRAVACAO_GED, $empresa->CD_GRUPO_EMPRESARIAL, $u->CD_USUARIO_CADASTRO, $empresa->AO_POSSUI_VENDA_TITULO_CAP, $u->AO_OBSERVADOR_OCORRENCIAS, $u->AO_ACEITA_NOTIFICACOES_POPUP, $empresa->AO_POSSUI_UNIDADE_NEGOCIO, $unidadeNegocio, false, $empresa->TX_CAMINHO_MODELO_DOCTOS, $empresa->TP_PLANO_ASSIST_FUNERAL, $empresa->TX_LOGO, $empresa->TP_AMBIENTE_INSTALACAO_ELO, $u->TP_AREA_PREFERENCIA_USUARIO, $empresa->AO_REC_ATEND_DIR_PLANO_GER_OS, $empresa->TP_METODO_INTEGRACAO_GED, $u->AO_ADMINISTRADOR, $u->AO_USUARIO_REC_NOTIF_SMS_RESP, $empresa->AO_POSSUI_PROD_COM_EST_UNIFIC, $empresa->URL_SERVIDOR_PAINEIS,  $empresa->AO_OBRIGA_INF_LOC_VENDA_PLFUN, $empresa->AO_VENDA_CONS_PLANO_TAB_SEG, $empresa->TP_PASTA_CONTRATO_GED, $empresa->NO_FANTASIA, $empresa->NR_MAX_IMPRESSOES_TICKETS, $u->AO_CONCEDE_DESCONTO_VENDAS, $u->TX_EMAIL, $empresa->TP_RAMO_EMPRESARIAL_ATIVIDADE, $empresa->CD_EMPRESA_CLINICA);


                $obj2 = new Empresa_Usuario();
				$data['empresas'] = $obj2->listar_por_usuario($this->input->post('codigo_usuario'));

                //Deixa em sessão os empreendimentos do usuário, para facilmente logar nos outros empreendimentos
                $cd_empresas = array();
                $no_empresas = array();
                $tp_empresas = array();
                foreach( $data['empresas'] AS $empresa ){
                    array_push($cd_empresas, $empresa->CD_EMPRESA);
                    array_push($no_empresas, $empresa->NO_EMPRESA);
                    array_push($tp_empresas, $empresa->TP_RAMO_EMPRESARIAL);
                }

                $this->nativesession->set('empreendimentos_codigos', $cd_empresas);
                $this->nativesession->set('empreendimentos_nomes', $no_empresas);
                $this->nativesession->set('empreendimentos_tipos', $tp_empresas);
                flashdata('alert-success', 'Bem vindo(a): ' . $this->input->post('nome_usuario'));

                if ( $u->AO_OBRIGA_TROCA_SENHA == 'S' ) {
                    $data['usuario']  = $u;
                    redirect ( $this->router->class . '/trocar_senha_usuario/' . $u->CD_USUARIO );
                }

                if( $this->nativesession->get('usuario_url_redirecionar') ){

                    $url = $this->nativesession->get('usuario_url_redirecionar');
                    $this->nativesession->delete('usuario_url_redirecionar');
                    redirect( $url );

                }
                else {
                    redirect();
                }
            }  else if ($retornoHorario[0] == 'N'){
                flashdata('alert-danger', utf8_encode($retornoHorario[1]));
                redirect($this->router->class.'/login');
            } else {
                flashdata('alert-danger', 'O usuário não possui permissão de acesso nesse horário!');
                redirect($this->router->class.'/login');
            }

        }
        else {
            redirect($this->router->class.'/login');
        }

    }

    public function trocar_senha_usuario() {

        if ( $this->uri->segment(3) ) {
            $cd                = $this->uri->segment(3);
            if ( $cd == $this->nativesession->get('usuario_cd')) {
                $data['usuario'] = (new Usuario())->buscar_por_codigo($cd, $this->nativesession->get('usuario_grupo_empresarial'));
                $this->load->view('estrutura/topo_min');
                $this->load->view($this->router->class .'/trocar_senha', $data);
                $this->load->view('estrutura/rodape');
            } else {
                redirect();
            }
        } else {
            redirect();
        }
    }

    public function trocar_senha() {

        if ( $this->input->post() ) {
            $cd                 = $this->input->get('cd');
            if ( $cd == $this->nativesession->get('usuario_cd')) {
                $senha          = $this->input->post('senha') ? criptografar($this->input->post('senha')) : '';
                $trocar_senha   = 'N';

                $obj = new Usuario();
                $obj->atualizar_senha($cd, $senha, $trocar_senha, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp']);

                flashdata('alert-success', 'Bem vindo(a): ' . $this->nativesession->get('usuario_nome'));
                redirect();
            }
        }
    }


    public function download_arquivo()
    {

        $usuario            = $this->input->get('usuario');
        $arquivo            = $this->input->get('arquivo');
        $base               = $this->nativesession->get('caminho_ged').'/usuarios';

        $local_file         = "$base/$usuario/$arquivo";
        $download_file      = $arquivo;

        if ( $this->nativesession->get('metodo_integracao_ged') != 'LO') {
            $obj = new API_Dropbox();
            $obj->getToken();
            header('Location: ' . $obj->getTmpLink( "/$local_file" ));
        } else {

            // set the download rate limit (=> 20,5 kb/s)
            $download_rate = 200.5;
            if (file_exists($local_file) && is_file($local_file)) {
                header('Cache-control: private');
                header('Content-Type: application/octet-stream');
                header('Content-Length: ' . filesize($local_file));
                header('Content-Disposition: filename=' . $download_file);

                flush();
                $file = fopen($local_file, "r");
                while (!feof($file)) {
                    // send the current file part to the browser
                    print fread($file, round($download_rate * 1024));
                    // flush the content to the browser
                    flush();
                    // sleep one second
                    sleep(1);
                }
                fclose($file);
            } else {
                die('Arquivo não existente');
            }
        }

    }


    public function login_biometria()
    {

        if( !$this->nativesession->get('usuario_logado') )
        {

            $grupo                  = 1;
            $hash                   = mb_strtolower( $this->uri->segment(3) );
            $hash_usuario_biometria = substr(substr($hash, 32, 64), 0, 32);
            $hash_dia_biometria     = substr($hash, 96, 128);
            $hash_dia_php           = md5( date('d') );

            $obj = new Usuario();
            $u   = $obj->buscar_por_hash($hash_usuario_biometria, $grupo);

            if( $hash_dia_biometria == $hash_dia_php ){

                if( $u->result_count() == 1 ){

                    $imagem = file_exists("assets/upload/{$this->nativesession->get('usuario_grupo_empresarial')}/usuarios/{$u->CD_USUARIO}.jpg") ? base_url("assets/upload/{$this->nativesession->get('usuario_grupo_empresarial')}/usuarios/" . buscar_thumb( "{$u->CD_USUARIO}.jpg") ) : base_url('assets/img/avatar.jpg');

                    //Empresa virá fixa junto com a digital
                    $obj2 = new Empresa();
                    $emp  = $obj2->buscar_por_id(2);

                    login_usuario($u->CD_USUARIO, $u->DS_USUARIO, $emp->NO_EMPRESA, $emp->CD_EMPRESA, $imagem, buscar_permissoes($u->CODPERFIL), $u->CODPERFIL, $emp->TX_CAMINHO_GRAVACAO_GED, $emp->CD_GRUPO_EMPRESARIAL, $u->CD_USUARIO_CADASTRO, $emp->AO_POSSUI_VENDA_TITULO_CAP, $u->AO_OBSERVADOR_OCORRENCIAS, $u->AO_ACEITA_NOTIFICACOES_POPUP, $emp->AO_POSSUI_UNIDADE_NEGOCIO, null, true, $emp->TX_CAMINHO_MODELO_DOCTOS, $emp->TP_PLANO_ASSIST_FUNERAL, $emp->TX_LOGO, $emp->TP_AMBIENTE_INSTALACAO_ELO, $u->TP_AREA_PREFERENCIA_USUARIO, $emp->AO_REC_ATEND_DIR_PLANO_GER_OS, $emp->TP_METODO_INTEGRACAO_GED, $u->AO_ADMINISTRADOR, $u->AO_USUARIO_REC_NOTIF_SMS_RESP, $emp->AO_POSSUI_PROD_COM_EST_UNIFIC, $emp->URL_SERVIDOR_PAINEIS, $emp->AO_OBRIGA_INF_LOC_VENDA_PLFUN, $emp->AO_VENDA_CONS_PLANO_TAB_SEG, $emp->TP_PASTA_CONTRATO_GED, $emp->NO_FANTASIA, $emp->NR_MAX_IMPRESSOES_TICKETS, $u->AO_CONCEDE_DESCONTO_VENDAS, $u->TX_EMAIL, $emp->TP_RAMO_EMPRESARIAL_ATIVIDADE, $emp->CD_EMPRESA_CLINICA);

                    redirect('esteira_servicos');

                }
                else {
                    flashdata('alert-error', 'Usuário não encontrado!');
                }
            }
            else {
                flashdata('alert-error', 'Não foi possível verificar o usuário!');
            }

			redirect();

        }
        else {
            flashdata('alert-error', 'Usuário já está logado!');
			redirect('esteira_servicos');
        }

    }


    public function trocar_empreendimento_logado()
    {

        autorizar_documentacao(false, $this->nativesession->get('usuario_cd'), $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_grupo_empresarial'));

        $obj = new Empresa_Usuario();
        $resultado = $obj->verificar_usuario_pertence_empresa( $this->nativesession->get('usuario_cd'), $this->uri->segment(3) );

        if( $resultado->result_count() == 1 ){//Se usuário pertence ao empreendimento informado

            $obj = new Empresa();
            $e   = $obj->buscar_por_id( $this->uri->segment(3) );

            if ( $e->AO_POSSUI_UNIDADE_NEGOCIO == 'S' ) {

                $objEUsuario = new Empresa_Usuario();
                $unidadeNegocio = $objEUsuario->listar_unidade_negocio( $this->nativesession->get('usuario_cd'), $e->CD_EMPRESA );

            }
            else {
                $unidadeNegocio = null;
            }

            $u = (new Usuario())->buscar_por_codigo($this->nativesession->get('usuario_cd'), $this->nativesession->get('usuario_grupo_empresarial'));

            $imagem = file_exists("assets/upload/{$e->CD_GRUPO_EMPRESARIAL}/usuarios/{$u->CD_USUARIO}.jpg") ? base_url("assets/upload/{$e->CD_GRUPO_EMPRESARIAL}/usuarios/" . buscar_thumb( "{$u->CD_USUARIO}.jpg") ) : base_url('assets/img/avatar.jpg');

            if ( $e->AO_POSSUI_UNIDADE_NEGOCIO == 'S' ) {
                $objEUsuario = new Empresa_Usuario();
                $idUnidadeNegocio = $objEUsuario->listar_unidade_negocio( $u->CD_USUARIO, $e->CD_EMPRESA );
            }
            else {
                $idUnidadeNegocio = null;
            }

            $this->nativesession->set('possui_unidade_negocio', $e->AO_POSSUI_UNIDADE_NEGOCIO == 'S' ? 'S' : 'N');
            $this->nativesession->set('unidade_negocio', $idUnidadeNegocio);
            $this->nativesession->set('usuario_empresa', $e->NO_EMPRESA);
            $this->nativesession->set('usuario_empresa_fantasia', $e->NO_FANTASIA);
            $this->nativesession->set('metodo_integracao_ged', $e->TP_METODO_INTEGRACAO_GED);
            $this->nativesession->set('tipo_plano_assistencial', $e->TP_PLANO_ASSIST_FUNERAL);
            $this->nativesession->set('usuario_cd_empresa', $this->uri->segment(3));
            $this->nativesession->set('usuario_cd_empresa_clinica', $e->CD_EMPRESA_CLINICA);
            $this->nativesession->set('usuario_troco_premiado', $e->AO_POSSUI_VENDA_TITULO_CAP);

            $grupo_empresarial = $this->nativesession->get('usuario_grupo_empresarial');
            $codigo_empresa    = $e->CD_EMPRESA;
            $caminho_ged       = $e->TX_CAMINHO_GRAVACAO_GED;

            $this->nativesession->set('caminho_ged', $e->TP_METODO_INTEGRACAO_GED != 'LO' ? "$grupo_empresarial/$codigo_empresa/$caminho_ged" : "$caminho_ged" );

            $this->nativesession->set('caminho_documentos_preenchidos', $e->TX_CAMINHO_MODELO_DOCTOS );
            $this->nativesession->set('usuario_empresa_logo', empty($e->TX_LOGO) || !file_exists("assets/upload/{$this->nativesession->get('usuario_grupo_empresarial')}/{$e->CD_EMPRESA}/empresas/{$e->TX_LOGO}") ? base_url('assets/img/logo.png') : base_url("assets/upload/{$this->nativesession->get('usuario_grupo_empresarial')}/{$e->CD_EMPRESA}/empresas/{$e->TX_LOGO}"));
            $this->nativesession->set('usuario_imagem', $imagem);
            $this->nativesession->set('usuario_recebe_notificacao_popup', $u->AO_ACEITA_NOTIFICACOES_POPUP);
            $this->nativesession->set('responde_sms', $u->AO_USUARIO_REC_NOTIF_SMS_RESP);
            $this->nativesession->set('usuario_area_preferencia', $u->TP_AREA_PREFERENCIA_USUARIO);
            $this->nativesession->set('recebe_diariamente_atendimentos', $e->AO_REC_ATEND_DIR_PLANO_GER_OS);
            $this->nativesession->set('tipo_plano_assistencial', $e->TP_PLANO_ASSIST_FUNERAL);
            $this->nativesession->set('estoque_unificado', $e->AO_POSSUI_PROD_COM_EST_UNIFIC);
            $this->nativesession->set('obriga_local_venda', $e->AO_OBRIGA_INF_LOC_VENDA_PLFUN);
            $this->nativesession->set('tipo_pasta_ged', $e->TP_PASTA_CONTRATO_GED);
            $this->nativesession->set('ramo_empresarial', $e->TP_RAMO_EMPRESARIAL_ATIVIDADE);

            // clinica
            $this->nativesession->set('usuario_prestador', (new Prestador_Servico())->buscar_por_usuario($u->CD_USUARIO, $e->CD_EMPRESA));

            // paineis
            $this->nativesession->set('url_painel', $e->URL_SERVIDOR_PAINEIS);

            autorizar_documentacao(true, $this->nativesession->get('usuario_cd'), $e->CD_EMPRESA, $e->CD_GRUPO_EMPRESARIAL);

            salvar_login_usuario();

            flashdata('alert-success', 'Logado agora no empreendimento '.$e->NO_EMPRESA);
        }
        else {
            flashdata('alert-error', 'Você não tem permissão!');
        }

        if( $_SERVER['HTTP_REFERER'] && $_SERVER['HTTP_REFERER'] != null ){
            redirect( $_SERVER['HTTP_REFERER'] );
        }
        else {
            redirect();
        }

    }



    public function logout()
    {

        salvar_usuario_deslogado();
        autorizar_documentacao(false, $this->nativesession->get('usuario_cd'), $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_grupo_empresarial'));
        $login_esteira = $this->nativesession->get('login_via_esteira_servicos');
		deletar_sessoes_usuario();
		deletar_cookies_usuarios();

        if ($this->uri->segment(3) == 'sessao') {
            flashdata('alert-danger', 'Sua sessão expirou, faça o login novamente!');
        }
        else if( $this->uri->segment(3) == 'token' ){
			flashdata('alert-danger', 'Seu usuário está logado em outro local, faça o login novamente!');
		}
        else {
            flashdata('alert-success', !$login_esteira ? 'Deslogado com sucesso!' : 'Operação realizada com sucesso!');
		}

        redirect($this->router->class.'/login');

    }


    public function cadastrar()
    {
        $obj            = new Grupo_Empresarial();
        $data['grupo']  = $obj->buscar_por_codigo( $this->nativesession->get('usuario_grupo_empresarial') );

        $obj                    = new Departamento();
        $data['departamentos']  = $obj->listar();

        $obj                = new Perfil();
        $data['perfils']    = $obj->listar(null, $this->nativesession->get('usuario_grupo_empresarial'));

        $obj                = new Empresa();
        $data['empresas']   = $obj->buscar_por_grupo( $this->nativesession->get('usuario_grupo_empresarial') );

        $data['linhas']     = (new Usuario_Acesso())->listar($this->uri->segment(3));

        $data['empresa2']   = $obj->buscar_por_id($this->nativesession->get('usuario_cd_empresa'));

        $obj                    = new Local_Venda();
        $data['locaisVenda']    = $obj->listar_por_grupo( $this->nativesession->get('usuario_grupo_empresarial') );

        $obj                        = new Tipo_Documento_Escaneado();
		$data['tipos_documentos']   = $obj->listar();

        $this->load->view('estrutura/topo');
        $this->load->view($this->router->class.'/cadastrar', $data);
        $this->load->view('estrutura/rodape');
    }


    public function editar()
    {
        $obj = new Usuario();
        $data['objeto'] = $obj->buscar_por_codigo( $this->uri->segment(3), $this->nativesession->get('usuario_grupo_empresarial') );

        if( !in_array('USUARIOS', $this->nativesession->get('usuario_permissoes')) ){
            //Se usuário não possui permissão de USUÁRIOS, deixa ele editar somente seu próprio cadastro
            if( $this->nativesession->get('usuario_cd') != $this->uri->segment(3) ){
                flashdata('alert-danger', 'Você não tem permissão para realizar esta ação!');
                redirect();
            }

        }

        $chat = new Chat_Usuario();
        $data['participante'] = $chat->buscar_por_codigo($this->uri->segment(3));

        if( $data['objeto']->result_count() ){

            $obj            = new Grupo_Empresarial();
            $data['grupo']  = $obj->buscar_por_codigo( $this->nativesession->get('usuario_grupo_empresarial') );

            $obj                    = new Departamento();
            $data['departamentos']  = $obj->listar();

            $data['linhas']         = (new Usuario_Acesso())->listar($this->uri->segment(3));

            $obj                    = new Perfil();
            $data['perfils']        = $obj->listar(null, $this->nativesession->get('usuario_grupo_empresarial'));

            $obj                    = new Profissao();
            $data['cargo']          = $obj->buscar_por_codigo( $data['objeto']->CD_CARGO );

            $obj                    = new Empresa_Usuario();
            $data['empresas']       = $obj->buscar_por_usuario( $data['objeto']->CD_USUARIO );

            $obj                    = new Empresa();
            $data['empresasLista']  = $obj->buscar_por_grupo( $this->nativesession->get('usuario_grupo_empresarial') );
            $data['empresa2']       = $obj->buscar_por_id($this->nativesession->get('usuario_cd_empresa'));

            $obj                    = new Local_Venda();
            $data['locaisVenda']    = $obj->listar_por_grupo( $this->nativesession->get('usuario_grupo_empresarial') );

            $obj                                = new Usuario_Local_Venda();
            $data['unidadesComerciaisUsuario']  = $obj->listar($this->uri->segment(3));

            $obj                        = new Tipo_Documento_Escaneado();
		    $data['tipos_documentos']   = $obj->listar();

            $obj                = new Ged_Usuario();
            $data['arquivos']   = $obj->buscar_por_usuario( $this->uri->segment(3) );


            $obj   = new Usuario_BI_Personalizado();
            $data['bi_lista'] = $obj->buscar_por_usuario($this->uri->segment(3));

            $this->load->view('estrutura/topo');
            $this->load->view($this->router->class.'/editar', $data);
            $this->load->view('estrutura/rodape');
        }
        else {
            flashdata('alert-danger', 'Objeto não encontrado!');
            redirect($this->router->class.'/listar');
        }

    }

    //Edição de perfil para usuários do Perfil de Acesso diferentes de 1 e 2
    public function editar_perfil()
    {
        $obj = new Usuario();
        $data['objeto'] = $obj->buscar_por_codigo($this->uri->segment(3), $this->nativesession->get('usuario_grupo_empresarial'));

        if (!in_array('USUARIOS', $this->nativesession->get('usuario_permissoes'))) {
            //Se usuário não possui permissão de USUÁRIOS, deixa ele editar somente seu próprio cadastro
            if ($this->nativesession->get('usuario_cd') != $this->uri->segment(3)) {
                flashdata('alert-danger', 'Você não tem permissão para realizar esta ação!');
                redirect();
            }
        }

        if ($data['objeto']->result_count()) {

            $obj = new Grupo_Empresarial();
            $data['grupo'] = $obj->buscar_por_codigo($this->nativesession->get('usuario_grupo_empresarial'));

            $this->load->view('estrutura/topo');
            $this->load->view($this->router->class . '/editar_perfil', $data);
            $this->load->view('estrutura/rodape');
        } else {
            flashdata('alert-danger', 'Objeto não encontrado!');
            redirect($this->router->class . '/listar');
        }
    }


    public function listar()
    {

        $pagina = $this->input->get('p') ? $this->input->get('p') : 1;
        $status = $this->input->get('status') ? mb_strtoupper( $this->input->get('status') ): 'A';

        $obj = new Usuario();
		$data['objetos'] = $this->input->get('t') == 1 ? $obj->listar_todos($this->nativesession->get('usuario_grupo_empresarial'), $status) : $obj->listar_paginado( mb_strtoupper( $this->input->get('busca') ), limpar_campo($this->input->get('departamento')), $this->nativesession->get('usuario_grupo_empresarial'), $status, $pagina );
		
		$usuarios 		  = $obj->contar_usuarios( conectar_oracle(), $this->nativesession->get('usuario_grupo_empresarial') );
		$u        		  = explode(';', $usuarios);
		$data['ativos']   = $u[0];
		$data['inativos'] = $u[1];

        $obj = new Departamento();
		$data['departamentos'] = $obj->listar();
		

        $this->load->view('estrutura/topo');
        $this->load->view('impressao/topo');
        $this->load->view($this->router->class.'/listar', $data);
        $this->load->view('estrutura/paginacao');
        $this->load->view('impressao/rodape');
        $this->load->view('estrutura/rodape');
    }


    public function vincular_perfil()
    {

        $obj = new Perfil();
        $data['perfils'] = $obj->listar(null, $this->nativesession->get('usuario_grupo_empresarial'));

        $this->load->view('estrutura/topo');
        $this->load->view($this->router->class.'/vincular_perfil', $data);
        $this->load->view('estrutura/rodape');
    }


    public function salvar_vinculo_perfil()
    {

        if ( $this->input->post() ) {

            $perfil = $this->input->post('codigo_perfil');
            $dados  = '';
            foreach ($this->input->post('titulo') as $i=>$titulo) {

                $link   = $this->input->post('link')[$i];
                if ( !empty($titulo) && !empty($link) )
                    $dados .= "$titulo;$link|";

            }

            $obj = new Link_Usuario();
            $r = explode(";", $obj->atualizar_impressao_associado(conectar_oracle(), $this->nativesession->get('usuario_cd_empresa'), $perfil, $dados));

            if ($r[0] == 'S') {
                flashdata('alert-success', 'Operação realizada com sucesso!');
            } else {
                flashdata('alert-danger', 'Ocorreu um problema ao realizar a operação! <br>' . $r[1]);
            }

             redirect($this->router->class . '/vincular_perfil');

        }

    }


	public function cadastrar_link_util()
	{

		$this->load->view('estrutura/topo');
		$this->load->view($this->router->class.'/cadastrar_link_util');
		$this->load->view('estrutura/rodape');

	}


	public function editar_link_util()
	{
		$obj = new Link_Usuario();
		$data['objeto'] = $obj->buscar_por_codigo( $this->uri->segment(3), $this->nativesession->get('usuario_cd') );

		if( $data['objeto']->result_count() ){

			$this->load->view('estrutura/topo');
			$this->load->view($this->router->class.'/editar_link_util', $data);
			$this->load->view('estrutura/rodape');

		}
		else {
			flashdata('alert-danger', 'Objeto não encontrado!');
			redirect($this->router->class.'/links_uteis');
		}

	}


    public function verificar_tab()
    {

        $retorno = explode(";", (new Usuario())->verificar_permissao(conectar_oracle(), $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd')));

        if ($retorno[0] == 'S') {

            $data['linhas'] = (new Usuario_Acesso());
            if ($this->input->post()) {
                $data['linhas'] = (new Usuario_Acesso())->listar($this->input->post('usuario'));
            }
            $this->load->view($this->router->class . '/tab3', $data);
        } else {
            echo "<h5 class=\"text-center\">$retorno[1]</h5>";
        }

    }


    public function links_uteis()
	{

		$obj = new Link_Usuario();
		$data['objetos'] = $obj->listar($this->nativesession->get('usuario_cd'), mb_strtoupper($this->input->get('busca')) );

		$this->load->view('estrutura/topo');
		$this->load->view('impressao/topo');
		$this->load->view($this->router->class.'/listar_links_uteis', $data);
		$this->load->view('impressao/rodape');
		$this->load->view('estrutura/rodape');
	}


	public function DB_link_util()
	{

		if( $this->input->post() ){

			$obj 		= new Link_Usuario();

			$codigo 	= $this->input->get('cd');
			$titulo 	= strip_tags( mb_strtoupper($this->input->post('titulo')) );
			$link 		= prep_url( mb_strtolower($this->input->post('link')) );

			$log = new Log();

			$historico = "Código - $codigo #Título - $titulo #Link - $link ";


			if( $this->input->post('remover') == 1 ){

				$obj = new Link_Usuario();

				$obj->inativar($this->input->get('cd'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp'] );

				$log->salvar($this->dados_globais['stamp'], $this->nativesession->get('usuario_cd'), 30, $obj->table, uri_string(), $historico, $this->nativesession->get('usuario_cd_empresa'));

			}
			else {
				switch( $this->input->get('acao') ){
					case 'salvar';

						foreach( $this->input->post('titulo') AS $indice=>$titulo ) {

							if( !empty($titulo) && !empty($this->input->post('link')[$indice])){

								$obj 		= new Link_Usuario();
								$codigo 	= buscar_sequencia_oracle('SEQ_AUTO_ID_USUA_SIST_FAV');
								$titulo 	= strip_tags( mb_strtoupper($titulo) );
								$link 		= prep_url( mb_strtolower($this->input->post('link')[$indice]) );

								$historico = "Código - $codigo #Título - $titulo #Link - $link ";

								$obj->salvar($codigo, $this->nativesession->get('usuario_cd'), $titulo, $link);

								$log->salvar($this->dados_globais['stamp'], $this->nativesession->get('usuario_cd'), 10, $obj->table, uri_string(), $historico, $this->nativesession->get('usuario_cd_empresa'));

							}

						}

					break;
					case 'atualizar';

						$obj->atualizar($codigo, $this->nativesession->get('usuario_cd'), $titulo, $link);

						$log->salvar($this->dados_globais['stamp'], $this->nativesession->get('usuario_cd'), 20, $obj->table, uri_string(), $historico, $this->nativesession->get('usuario_cd_empresa'));
					break;
				}
			}




			flashdata('alert-success', 'Operação realizada com sucesso!');
			redirect($this->router->class.'/links_uteis');

		}
	}


	public function atualizar_acesso_link_util()
	{

		if( $this->input->post() ){

			$link = limpar_campo( $this->input->post('link') );

			$obj = new Link_Usuario();
			$l   = $obj->buscar_por_codigo($link, $this->nativesession->get('usuario_cd'));
			$obj->atualizar_acessos($link, $this->nativesession->get('usuario_cd'), $l->NR_QTDE_ACESSOS + 1);

		}

    }
    

    public function verificar_senha_repetida()
    {
        if( $this->input->post() && $this->input->post('s') != '' ){

            $obj = new Empresa();
            $emp = $obj->buscar_flag_repetir_senha( $this->nativesession->get('usuario_cd_empresa') );

            if( $emp->AO_PERMITE_MESMA_SENHA_TROCA == 'S' ){
                echo 'S';
            }
            else {
                $nova_senha = criptografar( $this->input->post('s') );

                $obj = new Usuario();
                $usu = $obj->buscar_senha_atual( $this->input->post('u') );

                echo $nova_senha == $usu->DS_SENHA ? 'N' : 'S';
            }

        } else {
            echo "N";
        }
    }


    public function DB()
    {

        if( $this->input->post() ){

            $obj = new Usuario();

            $codigo 		                    = $this->input->get('cd') ? $this->input->get('cd') : strip_tags( mb_strtoupper(str_replace(' ', '', $this->input->post('codigo'))) );
            $grupo_empresarial                  = $this->nativesession->get('usuario_grupo_empresarial');
            $codigo_final                       = $codigo.$grupo_empresarial;
            $nome 			                    = strip_tags( mb_strtoupper($this->input->post('nome')) );
            $senha 			                    = $this->input->post('senha') ? criptografar($this->input->post('senha')) : '';
            $troca_senha                        = strip_tags(mb_strtoupper($this->input->post('troca_senha')));
            $cargo 			                    = limpar_campo($this->input->post('codigo_cargo'));
            $departamento 	                    = limpar_campo( $this->input->post('codigo_departamento') );
            $descontos 		                    = $this->input->post('descontos');
            $perfil 		                    = limpar_campo( $this->input->post('codigo_perfil') );
            $administrador 	                    = $this->input->post('administrador');
            $caixa 			                    = $this->input->post('caixa');
            $estorna 		                    = $this->input->post('estorna');
            $email 			                    = strip_tags( mb_strtolower($this->input->post('email') ) );
            $ativo 			                    = $this->input->post('ativo');
            $telefone_residencial 		        = limpar_campo( $this->input->post('telefone_residencial') );
            $telefone_particular 		        = limpar_campo( $this->input->post('telefone_particular') );
            $telefone_comercial 		        = limpar_campo( $this->input->post('telefone_comercial') );
            $cpf                                = limpar_campo( $this->input->post('cpf') );
            $solucionador 			            = strip_tags( mb_strtoupper($this->input->post('solucionador')) );
            $observador		                    = strip_tags( mb_strtoupper($this->input->post('observador')) );
            $notificacao_sangria                = strip_tags( mb_strtoupper($this->input->post('recebe_notificacao_sangria')) );
            $notificacao_solic_pagto            = strip_tags( mb_strtoupper($this->input->post('notificacao_solicitacao_pagamento')) );
            $notificacao_venc_certif_nf         = strip_tags( mb_strtoupper($this->input->post('notificacao_venc_certif_nf')) );
            $notificacao_atraso_pgto_recorr     = strip_tags( mb_strtoupper($this->input->post('notificacao_atraso_pgto_recorrencia')) );
            $notificacao_falec_area_cliente     = strip_tags( mb_strtoupper($this->input->post('notificacao_falec_area_cliente')) );
            $notificacao_cli_vinda_consulta     = strip_tags( mb_strtoupper($this->input->post('notificacao_cli_vinda_consulta')) );
            $notificacao_cli_nao_vinda_consulta = strip_tags( mb_strtoupper($this->input->post('notificacao_cli_nao_vinda_consulta')) );
            $notificacao_solic_compra           = strip_tags( mb_strtoupper($this->input->post('notificacao_solic_compra')) );
            $notificacao_solic_compra_aprov     = strip_tags( mb_strtoupper($this->input->post('notificacao_solic_compra_aprovada')) );
            $notificacao_rec_aviso_sms          = strip_tags( mb_strtoupper($this->input->post('notificacao_rec_aviso_sms')) );
            $notificacao_saldo_sms              = strip_tags( mb_strtoupper($this->input->post('notificacao_saldo_sms')) );
            $notificacao_ordem_compra           = strip_tags( mb_strtoupper($this->input->post('notificacao_ordem_compra')) );
            $notificacao_estoque_minimo         = strip_tags( mb_strtoupper($this->input->post('notificacao_estoque_minimo')) );
            $notificacao_crm                    = strip_tags( mb_strtoupper($this->input->post('notificacao_crm')));
            $notificacao_prot_atdo_funer        = strip_tags( mb_strtoupper($this->input->post('prot_atdo_funeraria')));
            $ao_aceita_notificacoes_popup       = strip_tags( mb_strtoupper($this->input->post('recebe_notificacao')) );
            $recebe_notificacao_email           = strip_tags( mb_strtoupper($this->input->post('recebe_notificacao_email')) );
            $recebe_notificacao_sms             = strip_tags( mb_strtoupper($this->input->post('recebe_notificacao_sms')) );
            $recebe_notificacao_whats           = strip_tags( mb_strtoupper($this->input->post('recebe_notificacao_whats')) );
            $nAutorizacaoDocto                  = strip_tags( mb_strtoupper($this->input->post('nr_autorizacao_agente')) );
            $altera_dados_falecido              = strip_tags( mb_strtoupper($this->input->post('altera_dados_falecido')) );
            $padrao                             = $this->input->post('usuario_padrao') == 'on' ? 'S' : 'N';
            $motorista                          = $this->input->post('motorista') == 'on' ? 'S' : 'N';
            $ornamentador                       = $this->input->post('ornamentador') == 'on' ? 'S' : 'N';
            $tanatopraxista                     = $this->input->post('tanatopraxista') == 'on' ? 'S' : 'N';
            $higienizador                       = $this->input->post('higienizador') == 'on' ? 'S' : 'N';
            $estornaOS                          = strip_tags( mb_strtoupper( $this->input->post('estorna_os') ) );
            $gestorDepto                        = strip_tags( mb_strtoupper( $this->input->post('gestor_dpto') ) );
            $responsavel_fechamento             = strip_tags( mb_strtoupper( $this->input->post('responsavel_fechamento') ) );
            $area_preferencia                   = strip_tags( mb_strtoupper( $this->input->post('area_preferencia') ) );
            $elo_bi                             = strip_tags( mb_strtoupper( $this->input->post('elo_bi') ) );
            $notificacao_ecommerce              = $this->input->post('notificacao_ecommerce');
            $desconfirma_agenda                 = $this->input->post('desconfirma_agenda');
            $tipo_usuario                       = $this->input->post('tipo_usuario');
            $notif_terceiros                    = strip_tags( mb_strtoupper($this->input->post('notif_terceiros')) );
            $regra_estorno                      = strip_tags( mb_strtoupper( $this->input->post('regra_estorno') ) );
            $recebe_notif_boleto_nao_liq        = strip_tags( mb_strtoupper( $this->input->post('recebe_notif_boleto_nao_liq') ) );
            $receb_not_mural_falec              = strip_tags( mb_strtoupper( $this->input->post('receb_not_mural_falec') ) );
            $recebe_aviso_max_usuarios          = strip_tags( mb_strtoupper( $this->input->post('recebe_aviso_max_usuarios') ) );
            $permite_abrir_caixa_cvalor         = strip_tags( mb_strtoupper( $this->input->post('permite_abrir_caixa_cvalor') ) );
            $recebe_notificacao_venc_carteira   = strip_tags( mb_strtoupper( $this->input->post('recebe_notificacao_venc_carteira') ) );
            $recebe_notif_aut_atend_ext_conv    = strip_tags( mb_strtoupper( $this->input->post('recebe_notif_aut_atend_ext_conv') ) );
            $tp_agendamento_clinica             = strip_tags( mb_strtoupper( $this->input->post('tp_agendamento_clinica') ) );


            $historico = "Código - $codigo #Nome - $nome #Senha - $senha #Cargo - $cargo #Departamento - $departamento #Descontos - $descontos #Perfil - $perfil #Administrador - $administrador #Caixa - $caixa #Estorna - $estorna #E-mail - $email #Ativo - $ativo #Telefone Residencial - $telefone_residencial #Telefone Particular - $telefone_particular #Telefone Comercial - $telefone_comercial #Cpf/Cnpj - $cpf #Solucionador - $solucionador #Observador - $observador #Notificação Sangria - $notificacao_sangria #Notificação Solic. Pagto - $notificacao_solic_pagto #Recebe Notificações POPUP - $ao_aceita_notificacoes_popup #N° Autorização Docto - $nAutorizacaoDocto #Altera dados do falecido - $altera_dados_falecido #Padrão - $padrao #Motorista - $motorista #Ornamentador - $ornamentador #Tanato - $tanatopraxista #Higienizador - $higienizador #Gestor Dpto - $gestorDepto #Estorna OS - $estornaOS #Resp. Fechamento - $responsavel_fechamento #Área Preferência - $area_preferencia #Notificações Venc. - $notificacao_venc_certif_nf #Notificação Recorr. - $notificacao_atraso_pgto_recorr #Notificações Solic. Compra - $notificacao_solic_compra #Notificações Solic. Compra Aprov.- $notificacao_solic_compra_aprov #Notificações Ordem Compra - $notificacao_ordem_compra #Notificações Estoque Mínimo - $notificacao_estoque_minimo #Recebe Notif. Email - $recebe_notificacao_email #Recebe Notif. SMS - $recebe_notificacao_sms #Recebe Notif. Whats - $recebe_notificacao_whats #Notif. CRM - $notificacao_crm #Recebe Falec. Area - $notificacao_falec_area_cliente #Notificações Prot. Atdo. Funr. - $notificacao_prot_atdo_funer #Notificação Rec. Aviso SMS - $notificacao_rec_aviso_sms #Notificação Saldo Sms - $notificacao_saldo_sms #Not. Ecommerce - $notificacao_ecommerce #Not. Cli. Vinda - $notificacao_cli_vinda_consulta #Not. Cli. NVinda - $notificacao_cli_nao_vinda_consulta #Desc. Agenda - $desconfirma_agenda #Tipo Usuário - $tipo_usuario #ELO B.I. - $elo_bi #Recebe Notif. Terceiros - $notif_terceiros #Regra Est. Cupom - $regra_estorno #Recebe Notif. Boleto Não Liq. - $recebe_notif_boleto_nao_liq #Recebe Notif. Mural Falec. - $receb_not_mural_falec #Recebe Notif. Máx. Usu. Excedido - $recebe_aviso_max_usuarios #Permite Abrir Caixa Com Valor - $permite_abrir_caixa_cvalor #Recebe Notif. Venc. Carteira Motorista - $recebe_notificacao_venc_carteira #Recebe Notif. Aut. Atend. Extra Conv. - $recebe_notif_aut_atend_ext_conv #Tipo Agendamentos Clínica - $tp_agendamento_clinica";

            $log = new Log();


            //Remover imagem atual
            if( $this->input->post('remover_imagem') ){
                //$this->nativesession->set('usuario_imagem', base_url('assets/upload/usuarios/avatar.jpg'));

                if( file_exists("assets/upload/{$this->nativesession->get('usuario_grupo_empresarial')}/usuarios/{$codigo}.jpg") ){
                    unlink("assets/upload/{$this->nativesession->get('usuario_grupo_empresarial')}/usuarios/{$codigo}.jpg");
                    unlink("assets/upload/{$this->nativesession->get('usuario_grupo_empresarial')}/usuarios/" . buscar_thumb( "{$codigo}.jpg") );
                }
            }
            /* IMAGEM */
            if( !empty( $_FILES['imagem']['name'] ) ){

                $ext = extensao( $_FILES['imagem']['name'] );
                $img = $codigo.'.jpg';

                if( upload($this->router->class, 'imagem', $img, '102400', false) ){
                    //$this->nativesession->set('usuario_imagem', base_url('assets/upload/usuarios/'.buscar_thumb($codigo.'.jpg')));
                    thumb($this->router->class, $img, 100, 80, false);
                }

            }

            switch( $this->input->get('acao') ){
                case 'salvar';

                    $obj->salvar($codigo_final, $codigo, $nome, $senha, $cargo, $departamento, $descontos, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp'], $perfil, $administrador, $caixa, $estorna, $email, $grupo_empresarial, $ativo, $telefone_residencial, $telefone_particular, $telefone_comercial, $cpf, $solucionador, $observador, $notificacao_sangria, $notificacao_solic_pagto, $ao_aceita_notificacoes_popup, $nAutorizacaoDocto, $altera_dados_falecido, $padrao, $motorista, $ornamentador, $tanatopraxista, $higienizador, $gestorDepto, $estornaOS, md5( $codigo ), $responsavel_fechamento, $area_preferencia, $notificacao_venc_certif_nf, $notificacao_solic_compra, $notificacao_solic_compra_aprov, $notificacao_ordem_compra, $notificacao_estoque_minimo, $recebe_notificacao_email, $recebe_notificacao_sms, $recebe_notificacao_whats, $notificacao_crm, $troca_senha, $notificacao_falec_area_cliente, $notificacao_atraso_pgto_recorr, $notificacao_prot_atdo_funer, $notificacao_rec_aviso_sms, $notificacao_saldo_sms, $notificacao_ecommerce, $desconfirma_agenda, $tipo_usuario, $notificacao_cli_vinda_consulta, $notificacao_cli_nao_vinda_consulta, $elo_bi, $notif_terceiros, $regra_estorno, $recebe_notif_boleto_nao_liq, $receb_not_mural_falec, $recebe_aviso_max_usuarios, $permite_abrir_caixa_cvalor, $recebe_notificacao_venc_carteira, $recebe_notif_aut_atend_ext_conv, $tp_agendamento_clinica);

                    if ( $troca_senha == 'S' && $email != '' ) {
                        $emp = (new Empresa())->buscar_por_id($this->nativesession->get('usuario_cd_empresa'));
                        $mensagem = "<strong>Aviso ELO!</strong> <br><br>Quando acessar pela primeira vez o <strong>ELO Sistema Gestão Unificado</strong> será solicitado a troca de senha atual para uma senha pessoal. Escolha uma senha segura e forte, é de sua total responsabilidade manter em segurança sua credencial, não passando-a para terceiros. Se tiver dúvidas ou achar necessário, poderá trocar sua senha quantas vezes quiser, no menu do Usuário no <strong>\"Editar meus dados\"</strong><br><br>Seja bem-vindo ao <strong>ELO Sistema Gestão Unificado</strong>";

                        $status   = enviar_email_elo($emp->TX_SIGLA, $emp->TX_USUARIO_ADM_AUT_EMAIL, $emp->TX_PROTOCOL_AUT_EMAIL, $emp->TX_ENDERECO_AUT_EMAIL, $emp->TX_PORTA_AUT_EMAIL, $emp->TX_AUTENTICACAO_ADM_SMTP, $emp->TX_SENHA_USUAR_ADM_AUT_EMAIL, 'TROCA DE SENHA NO PRIMEIRO ACESSO AO ELO.', $mensagem, $email) ? 'S' : 'N';

                        if ($status == 'N') {
                            flashdata('alert-error', 'Ocorreu um problema ao enviar o e-mail!');
                        }
                    }


                    //GED
                    $per = array('jpg', 'jpeg', 'png', 'bmp', 'pdf');
                    for ($i = 1; $i <= 50; $i++) {

                        //Verifica por substituição
                        if( !empty( $_FILES["arquivo_substituicao_$i"]['name'] ) && !empty($this->input->post('codigo_tipo_documento_substituicao_'.$i)) ) {

                            $ext = extensao($_FILES["arquivo_substituicao_$i"]['name']);

                            if (in_array($ext, $per)) {

                                $obj2           = new Ged_Usuario();
                                $seq            = buscar_sequencia_oracle($obj2->seq);
                                $tipo_documento = limpar_campo($this->input->post('codigo_tipo_documento_substituicao_' . $i));
                                $arquivo        = "$seq.$ext";

                                if (upload_ged_contratos('usuarios', $codigo, "arquivo_substituicao_$i", $arquivo)) {
                                    $obj2->salvar($seq, $codigo, $tipo_documento, $ext, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp'], null);

                                    $obj2 = new Ged_Usuario();
                                    $obj2->atualizar_como_substituido($this->input->post('arquivo_ser_substituido_' . $i), $seq, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp']);

                                }

                            }
                        }

                        //Novo documento
                        if (!empty($_FILES["arquivo_$i"]['name']) && !empty($this->input->post('codigo_tipo_documento_' . $i))) {

                            $ext = extensao($_FILES["arquivo_$i"]['name']);

                            if (in_array($ext, $per)) {

                                $obj2           = new Ged_Usuario();
                                $seq            = buscar_sequencia_oracle($obj2->seq);
                                $tipo_documento = limpar_campo($this->input->post('codigo_tipo_documento_' . $i));
                                $arquivo        = "$seq.$ext";

                                if ( upload_ged_contratos('usuarios', $codigo, "arquivo_$i", $arquivo) ) {
                                    $obj2->salvar($seq, $codigo, $tipo_documento, $ext, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp'], null);
                                }

                            }

                        }

                    }

                    //Empresas
                    $ids = array('0');
                    foreach( $this->input->post('codigo_empresa') AS $indice=>$empresa ){

                        $unNegocio = $this->input->post('unidade_negocio')[$indice];

                        if( !empty($empresa) && !in_array($empresa, $ids) ){

                            array_push($ids, $empresa);

                            $obj2 = new Empresa_Usuario();
                            $obj2->salvar($codigo_final, $empresa, $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp'], $unNegocio);

                            $historico .= " #Empreendimento: $empresa ";

                        }

                    }


					//Períodos Acessos
                    for ( $i = 0; $i < 7; $i++) {

                        $dia                 = $this->input->post('dia_semana_' . $i);
                        $horario_inicial     = $this->input->post('horario_inicial_' . $i);
                        $horario_final       = $this->input->post('horario_final_' . $i);

                        if ( !empty($dia) ) {

                            $objAcesso = new Usuario_Acesso();
                            $sequenciaAcesso = buscar_sequencia_oracle($objAcesso->sequencia);
                            $utilizar_24_horas = $this->input->post('utilizar_24_horas_' . $i) == 'on' ? 'S' : 'N';

                            $objAcesso->salvar($sequenciaAcesso, $codigo_final, $dia, $horario_inicial, $horario_final, $utilizar_24_horas, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp']);

                            $log->salvar($this->dados_globais['stamp'], $this->nativesession->get('usuario_cd'), 10, $objAcesso->table, uri_string(), "Sequencia - $sequenciaAcesso #CD Usuário - $codigo_final #Dia - $dia #Horário Inicial - $horario_inicial #Horário Final - $horario_final", $this->nativesession->get('usuario_cd_empresa'));
                        }

                    }

                    foreach ( $this->input->post("unidades_comerciais") as $i=>$unidade ) {
                        if ( !empty($unidade) ) {

                            $obj = new Usuario_Local_Venda();
                            $seqLocal = buscar_sequencia_oracle($obj->sequencia);

                            $obj->salvar($seqLocal, $codigo_final, $unidade, '', $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp']);
                        }
                    }

                    $tipo_log = 10;
                    break;

                case 'atualizar';
                    $codigo = $this->input->get('cd');
                    if ($ativo == 'N') {
                        /*  Lucas - 23/09/2022 - 10:43 
                            Função para inativar o chat do usuário caso inative ele pra não aparecer usuários inativos no chat */
                        $objAux = new Chat_Usuario();
                        $objAux->atualizar($codigo, 'N', 0);

                        $obj->deslogar_usuario_desativado($codigo);                        
                    }

                    $obj->atualizar($codigo, $nome, $senha, $cargo, $departamento, $descontos, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp'], $perfil, $administrador, $caixa, $estorna, $email, $ativo, $telefone_residencial, $telefone_particular, $telefone_comercial, $cpf, $solucionador, $observador, $notificacao_sangria, $notificacao_solic_pagto, $ao_aceita_notificacoes_popup, $nAutorizacaoDocto, $altera_dados_falecido, $padrao, $motorista, $ornamentador, $tanatopraxista, $higienizador, $gestorDepto, $estornaOS, $responsavel_fechamento, $area_preferencia, $notificacao_venc_certif_nf, $notificacao_solic_compra, $notificacao_solic_compra_aprov, $notificacao_ordem_compra, $notificacao_estoque_minimo, $recebe_notificacao_email, $recebe_notificacao_sms, $recebe_notificacao_whats, $notificacao_crm, $troca_senha, $notificacao_falec_area_cliente, $notificacao_atraso_pgto_recorr, $notificacao_prot_atdo_funer, $notificacao_rec_aviso_sms, $notificacao_saldo_sms, $notificacao_ecommerce, $desconfirma_agenda, $tipo_usuario, $notificacao_cli_vinda_consulta, $notificacao_cli_nao_vinda_consulta, $elo_bi, $notif_terceiros, $regra_estorno, $recebe_notif_boleto_nao_liq, $receb_not_mural_falec,  $recebe_aviso_max_usuarios, $permite_abrir_caixa_cvalor, $recebe_notificacao_venc_carteira, $recebe_notif_aut_atend_ext_conv, $tp_agendamento_clinica);

                    if ( $troca_senha == 'S' && $email != '' ) {
                        $emp = (new Empresa())->buscar_por_id($this->nativesession->get('usuario_cd_empresa'));
                        $mensagem = "<strong>Aviso ELO!</strong> <br><br>Quando acessar na próxima vez o <strong>ELO Sistema Gestão Unificado</strong> será solicitado a troca de senha atual para uma senha pessoal. Escolha uma senha segura e forte, é de sua total responsabilidade manter em segurança sua credencial, não passando-a para terceiros. Se tiver dúvidas ou achar necessário, poderá trocar sua senha quantas vezes quiser, no menu do Usuário no <strong>\"Editar meus dados\"</strong><br><br>
 <strong>Um ótimo dia de trabalho!</strong><br><br><strong>ELO Sistema Gestão Unificado</strong>";

                        $status   = enviar_email_elo($emp->TX_SIGLA, $emp->TX_USUARIO_ADM_AUT_EMAIL, $emp->TX_PROTOCOL_AUT_EMAIL, $emp->TX_ENDERECO_AUT_EMAIL, $emp->TX_PORTA_AUT_EMAIL, $emp->TX_AUTENTICACAO_ADM_SMTP, $emp->TX_SENHA_USUAR_ADM_AUT_EMAIL, 'SOLICITAÇÃO PARA TROCAR A SENHA AO ACESSAR O ELO.', $mensagem, $email) ? 'S' : 'N';

                        if ($status == 'N') {
                            flashdata('alert-error', 'Ocorreu um problema ao enviar o e-mail!');
                        }
                    }

                    if ( $this->nativesession->get('usuario_possui_chat_adm') == 'S' ) {

                        $chat_ativo = $this->input->post('inpt_chat_ativo');
                        $chat_adm   = $this->input->post('inpt_chat_adm');

                        $obj = new Chat_Usuario(); 
 
                        $affectedRows = $obj->atualizar( $codigo, $chat_ativo, $chat_adm );
            
                        if ( $affectedRows == 0 ) {
                            $obj->salvar( $codigo, $chat_ativo, $chat_adm, $this->nativesession->get('usuario_grupo_empresarial'));
                        }
                    }


                    //GED
                    $per = array('jpg', 'jpeg', 'png', 'bmp', 'pdf');
                    for ($i = 1; $i <= 50; $i++) {

                        //Verifica por substituição
                        if( !empty( $_FILES["arquivo_substituicao_$i"]['name'] ) && !empty($this->input->post('codigo_tipo_documento_substituicao_'.$i)) ) {

                            $ext = extensao($_FILES["arquivo_substituicao_$i"]['name']);

                            if (in_array($ext, $per)) {

                                $obj2           = new Ged_Usuario();
                                $seq            = buscar_sequencia_oracle($obj2->seq);
                                $tipo_documento = limpar_campo($this->input->post('codigo_tipo_documento_substituicao_' . $i));
                                $arquivo        = "$seq.$ext";

                                if (upload_ged_contratos('usuarios', $codigo, "arquivo_substituicao_$i", $arquivo)) {
                                    $obj2->salvar($seq, $codigo, $tipo_documento, $ext, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp'], null);

                                    $obj2 = new Ged_Usuario();
                                    $obj2->atualizar_como_substituido($this->input->post('arquivo_ser_substituido_' . $i), $seq, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp']);

                                }

                            }
                        }

                        //Novo documento
                        if (!empty($_FILES["arquivo_$i"]['name']) && !empty($this->input->post('codigo_tipo_documento_' . $i))) {

                            $ext = extensao($_FILES["arquivo_$i"]['name']);

                            if (in_array($ext, $per)) {

                                $obj2           = new Ged_Usuario();
                                $seq            = buscar_sequencia_oracle($obj2->seq);
                                $tipo_documento = limpar_campo($this->input->post('codigo_tipo_documento_' . $i));
                                $arquivo        = "$seq.$ext";

                                if ( upload_ged_contratos('usuarios', $codigo, "arquivo_$i", $arquivo) ) {
                                    $obj2->salvar($seq, $codigo, $tipo_documento, $ext, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp'], null);
                                }

                            }

                        }

                    }

                    //Empresas
                    $obj2 = new Empresa_Usuario();
                    $obj2->remover_por_usuario( $codigo );

                    $ids = array('0');

                    foreach( $this->input->post('codigo_empresa') AS $indice=>$empresa ){

                        $unNegocio = $this->input->post('unidade_negocio')[$indice];

                        if( !empty($empresa) && !in_array($empresa, $ids) ){

                            array_push($ids, $empresa);

                            $obj2 = new Empresa_Usuario();
                            $obj2->salvar($codigo, $empresa, $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp'], $unNegocio);

                            $historico .= " #Empreendimento: $empresa ";

                        }

                    }
					

					//Períodos Acessos
					if( $this->input->post('excluir_periodo_acesso') ){

						$obj2 = new Usuario_Acesso();

						foreach( $this->input->post('excluir_periodo_acesso') AS $periodo ){
							$obj2->inativar($periodo, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd_empresa'), $this->dados_globais['stamp']);
						}

					}


                    for ( $i = 0; $i < 7; $i++) {

                        $dia                 = $this->input->post('dia_semana_' . $i);
                        $horario_inicial     = $this->input->post('horario_inicial_' . $i);
                        $horario_final       = $this->input->post('horario_final_' . $i);

                        if ( !empty($dia) ) {

                            $objAcesso = new Usuario_Acesso();
                            $sequenciaAcesso = buscar_sequencia_oracle($objAcesso->sequencia);
                            $utilizar_24_horas = $this->input->post('utilizar_24_horas_' . $i) == 'on' ? 'S' : 'N';

                            if ( !empty($this->input->post('codigos_' . $i)) ) {

                                $objAcesso->atualizar($this->input->post('codigos_' . $i), $codigo, $dia, $horario_inicial, $horario_final, $utilizar_24_horas, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp']);

                                $log->salvar($this->dados_globais['stamp'], $this->nativesession->get('usuario_cd'), 20, $objAcesso->table, uri_string(), "Sequencia - $sequenciaAcesso #CD Usuário - $codigo #Dia - $dia #Horário Inicial - $horario_inicial #Horário Final - $horario_final", $this->nativesession->get('usuario_cd_empresa'));

                            } else {

                                $objAcesso->salvar($sequenciaAcesso, $codigo, $dia, $horario_inicial, $horario_final, $utilizar_24_horas, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp']);

                                $log->salvar($this->dados_globais['stamp'], $this->nativesession->get('usuario_cd'), 10, $objAcesso->table, uri_string(), "Sequencia - $sequenciaAcesso #CD Usuário - $codigo #Dia - $dia #Horário Inicial - $horario_inicial #Horário Final - $horario_final", $this->nativesession->get('usuario_cd_empresa'));

                            }


                        }

                    }


                    $tipo_log = 20;

                    foreach ( $this->input->post("unidades_comerciais") as $i=>$unidade ) {

                        if ( !empty($unidade) ) {
                            $obj = new Usuario_Local_Venda();
                            if ( isset($this->input->post('id_unidade')[$i]) ) {
                                $seqLocal = $this->input->post('id_unidade')[$i];
                                $obj->atualizar($seqLocal, $codigo, $unidade, '', $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp']);
                            } else {
                                $seqLocal = buscar_sequencia_oracle($obj->sequencia);

                                $obj->salvar($seqLocal, $codigo, $unidade, '', $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp']);

                            }
                        }

                    }

                    foreach ( $this->input->post("inativar_unidade") as $i=>$un) {
                        $obj = new Usuario_Local_Venda();
                        $obj->inativar($un, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp']);

                        $log = new Log();
                        $log->salvar($this->dados_globais['stamp'], $this->nativesession->get('usuario_cd'), 30, $obj->table, uri_string(), "Sequencia - $un #CD Usuário - $codigo", $this->nativesession->get('usuario_cd_empresa'));
                    }


                    foreach ($this->input->post('indice_modulo') as $i=>$atual) {

                        $controladora   = $this->input->post('modulo')[$i];
                        $id_modulo      = $this->input->post('id_modulo')[$i];
                        $tp_modulo      = $this->input->post('tipo_utilizacao')[$i];
                        $area_principal = 'N';//$this->input->post('area_principal')[$i];

                        if ( $id_modulo != '' && $controladora != '' ) {

                            $obj    = new Usuario_BI_Personalizado();
                            $seqBI  = buscar_sequencia_oracle($obj->sequencia);
                            $obj->salvar($seqBI, $codigo, $controladora, $id_modulo, $tp_modulo, $area_principal, null, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp']);


                            /* todo Implementar futuramente com a atualização do BI
                            foreach ($this->input->post("campo_$atual") as $indice=>$campo) {
                                switch ($this->input->post("mascara_$atual")[$indice] ) {
                                    case 'mascara-data':
                                    case 'mascara-data-curta':
                                    case 'mascara-data-hora':
                                        $tp_filtro = 'D';
                                    break;
                                    default:
                                        $tp_filtro = 'C';
                                    break;
                                }

                                if ( is_numeric( $campo ) )
                                    $tp_filtro = 'N';

                                $label      = $this->input->post("label_$atual")[$indice];
                                $nome_campo = $this->input->post("nome_campo_$atual")[$indice];

                                $obj2 = new Usuario_BI_Personalizado_Parametro();
                                $seqBIParam = buscar_sequencia_oracle($obj2->sequencia);
                                $obj2->salvar($seqBIParam, $seqBI, $tp_filtro, $label, $campo, $nome_campo, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp']);

                            }
                            */

                        }


                    }

                    break;
                case 'atualizar_perfil';


                    $codigo = $this->input->get('cd');
                    $obj->atualizar_perfil($codigo, $nome, $senha, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp'], $email, $telefone_residencial, $telefone_particular, $telefone_comercial, $cpf, $area_preferencia );

                    $tipo_log = 20;
                    break;
            }

            $log->salvar($this->dados_globais['stamp'], $this->nativesession->get('usuario_cd'), $tipo_log, $obj->table, uri_string(), $historico, $this->nativesession->get('usuario_cd_empresa'));


            if ($ativo == 'N') {
                $objO = new Assunto_Item_Responsavel_Observador();

                $cdFinal = $this->input->get('cd') ? $this->input->get('cd') : $codigo_final;
                $lista = $objO->buscar_por_usuario($cdFinal);

                foreach ($lista as $l) {

                    $objO->inativar($l->ID_OCORRENCIA_ITEN_USUARIO, $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $this->dados_globais['stamp']);
                }
            }

            flashdata('alert-success', 'Operação realizada com sucesso!');

            if( $this->input->post('url_anterior') && $this->input->post('url_anterior') != null ){
                redirect( $this->input->post('url_anterior') );
            }
            else {

                if( $codigo == $this->nativesession->get('usuario_cd') ){
                    redirect($this->router->class.'/editar/'.$codigo);
                }
                else {
                    redirect($this->router->class.'/listar');
                }

            }

        }
    }


    public function ajax_consultar_cadastro()
    {

        if( $this->input->post() ){
            $string = mb_strtoupper( $this->input->post('info') );

            $obj = new Usuario();
            if( $this->input->post('usuario') != 0 ){
                echo $obj->consultar_usuario_existente($string, $this->input->post('usuario'), $this->nativesession->get('usuario_grupo_empresarial'));
            }
            else {
                echo $obj->consultar_usuario_existente($string, null, $this->nativesession->get('usuario_grupo_empresarial'));
            }
        }

    }


    public function ajax_consultar_cadastro_cpf()
    {

        if( $this->input->post() ){
            $string = limpar_campo( $this->input->post('info') );

            $obj = new Usuario();

            if( $this->input->post('usuario') != '0' ){//Não retirar aspas, neste caso.
                echo $obj->consultar_cpf_existente($string, $this->input->post('usuario'), $this->nativesession->get('usuario_grupo_empresarial'));
            }
            else {
                echo $obj->consultar_cpf_existente($string, null, $this->nativesession->get('usuario_grupo_empresarial'));
            }
        }

    }


    public function buscar_login_usuario()
    {

        $obj  = new Log_Usuario();
        $data['logs'] = $obj->buscar_por_usuario($this->input->post('usuario'));

        $this->load->view($this->router->class.'/lista_login', $data);

    }


    public function recuperar_senha()
    {
        if( $this->input->post() )
        {   
            $grupo      = $this->input->post('codigo_grupo_login');
            $usuario    = mb_strtoupper($this->input->post('usuario'));
            $cpf        = limpar_campo($this->input->post('cpf'));
            $metodo     = $this->input->post('metodo');

            $obj        = new Usuario();
            $usu        = $obj->buscar_dados_recuperar_senha($grupo, $usuario, $cpf);

            if( isset($usu->CD_USUARIO) ){

                $this->nativesession->set('usuario_grupo_empresarial', $grupo);

                $rand = rand(111111, 999999);

                $obj->atualizar_codigo_recuperar_senha($usu->CD_USUARIO_CADASTRO, $rand);

                switch( $metodo ){
                    case 'SMS':

                        $msg  = "ELO Gestão: Seu código de login é $rand";

                        $obj2 = new Retorno_Cliente_SMS_Enviada();
                        $obj2->envio_sms_manual(conectar_oracle(), 1, 'ELO.AUTOMACAO', null, null, null, null, null, null, null, null, '55'.$usu->NR_TELEFONE_CEL_PARTICULAR, $msg);

                    break;
                    case 'EMAIL':

                        $msg  = "ELO Gestão: Seu código de login é <b>$rand</b> <br><br>";
                        $msg .= 'Ignore esta mensagem caso não tenha solicitado.';

                        if( !empty($usu->TX_EMAIL) ){
                            
                            $obj = new Empresa();
                            $emp = $obj->buscar_por_id(1);//Pegando sempre a empresa 1 de cada grupo
    
                            enviar_email_elo('Elo', $emp->TX_USUARIO_AUT_EMAIL, $emp->TX_PROTOCOL_AUT_EMAIL, $emp->TX_ENDERECO_AUT_EMAIL, $emp->TX_PORTA_AUT_EMAIL, $emp->TX_AUTENTICACAO_SMTP, $emp->TX_SENHA_AUT_EMAIL, 'ELO - Seu código de acesso', $msg, $usu->TX_EMAIL );
                        }
                        
                    break;
                }

                echo "S;";
            }
            else {
                echo 'N; Usuário não encontrado.';
            }
        }
    }


    public function verificar_codigo()
    {
        if( $this->input->post() )
        {
            $codigo = $this->input->post('numero');

            $obj                = new Usuario();
            $data['usuario']    = $obj->buscar_por_codigo_senha($codigo);

            if( isset($data['usuario']->CD_USUARIO) ){

                $obj->atualizar_trocar_senha($data['usuario']->CD_USUARIO, 'S');

                $obj3       = new Empresa();
                $empresa    = $obj3->buscar_por_id($data['usuario']->CD_EMPRESA);

                if ($empresa->AO_POSSUI_UNIDADE_NEGOCIO == 'S') {
                    $objEUsuario = new Empresa_Usuario();
                    $unidadeNegocio = $objEUsuario->listar_unidade_negocio($data['usuario']->CD_USUARIO, $empresa->CD_EMPRESA);
                } else {
                    $unidadeNegocio = null;
                }

                $this->nativesession->set('usuario_grupo_empresarial', $empresa->CD_GRUPO_EMPRESARIAL);

                $imagem = file_exists("assets/upload/{$data['usuario']->CD_GRUPO_EMPRESARIAL}/usuarios/{$data['usuario']->CD_USUARIO}.jpg") ? base_url("assets/upload/{$this->nativesession->get('usuario_grupo_empresarial')}/usuarios/" . buscar_thumb($data['usuario']->CD_USUARIO . '.jpg')) : base_url('assets/img/avatar.jpg');
                
                login_usuario($data['usuario']->CD_USUARIO, $data['usuario']->DS_USUARIO, $empresa->NO_EMPRESA, $empresa->CD_EMPRESA, $imagem, buscar_permissoes($data['usuario']->CODPERFIL), $data['usuario']->CODPERFIL, $empresa->TX_CAMINHO_GRAVACAO_GED, $empresa->CD_GRUPO_EMPRESARIAL, $data['usuario']->CD_USUARIO_CADASTRO, $empresa->AO_POSSUI_VENDA_TITULO_CAP, $data['usuario']->AO_OBSERVADOR_OCORRENCIAS, $data['usuario']->AO_ACEITA_NOTIFICACOES_POPUP, $empresa->AO_POSSUI_UNIDADE_NEGOCIO, $unidadeNegocio, false, $empresa->TX_CAMINHO_MODELO_DOCTOS, $empresa->TP_PLANO_ASSIST_FUNERAL, $empresa->TX_LOGO, $empresa->TP_AMBIENTE_INSTALACAO_ELO, $data['usuario']->TP_AREA_PREFERENCIA_USUARIO, $empresa->AO_REC_ATEND_DIR_PLANO_GER_OS, $empresa->TP_METODO_INTEGRACAO_GED, $data['usuario']->AO_ADMINISTRADOR, $data['usuario']->AO_USUARIO_REC_NOTIF_SMS_RESP, $empresa->AO_POSSUI_PROD_COM_EST_UNIFIC, $empresa->URL_SERVIDOR_PAINEIS, $empresa->AO_OBRIGA_INF_LOC_VENDA_PLFUN, $empresa->AO_VENDA_CONS_PLANO_TAB_SEG, $empresa->TP_PASTA_CONTRATO_GED, $empresa->NO_FANTASIA, $empresa->NR_MAX_IMPRESSOES_TICKETS, $data['usuario']->AO_CONCEDE_DESCONTO_VENDAS, $data['usuario']->TX_EMAIL, $empresa->TP_RAMO_EMPRESARIAL_ATIVIDADE, $empresa->CD_EMPRESA_CLINICA);

                $url = site_url('usuarios/trocar_senha_usuario/'.$data['usuario']->CD_USUARIO);

                echo "S;$url";

            }
            else {
                echo 'N;';
            }
        }
    }


    public function cadastrar_link_util_ajax() {

        if( $this->input->post() ) {

            $titulo = $this->input->post('titulo');
            $link   = $this->input->post('link');
            $obj    = new Link_Usuario();

            if( !empty($titulo) && !empty($link)){

                $resultado = explode(";", $obj->verificar_link(conectar_oracle(), $this->nativesession->get('usuario_cd_empresa'), $this->nativesession->get('usuario_cd'), $link));

                if ( $resultado[0] == 'N' ) {

                    $codigo = buscar_sequencia_oracle('SEQ_AUTO_ID_USUA_SIST_FAV');
                    $titulo = strip_tags(mb_strtoupper($titulo));
                    $link   = prep_url(mb_strtolower($link));

                    $historico = "Código - $codigo #Título - $titulo #Link - $link ";

                    $obj->salvar($codigo, $this->nativesession->get('usuario_cd'), $titulo, $link);

                    $log = new Log();
                    $log->salvar($this->dados_globais['stamp'], $this->nativesession->get('usuario_cd'), 10, $obj->table, uri_string(), $historico, $this->nativesession->get('usuario_cd_empresa'));

                    echo "S;";
                }

            }

        }

    }


}