✏️ 正在编辑: Usuario.php
路径:
/srv/systems_dir/yuppiecred/application/models/Usuario.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php use \Modules\Gatekeeper\Service\Gatekeeper as Gatekeeper; class Model_Usuario extends Model_Pessoa { private $_id; private $_grupoId; private $_empresaId; private $_nome; private $_email; private $_login; private $_senha; private $_corretorId; private $_funcionarioId; private $_horaInicio; private $_horaFim; private $_dias; private $_receberEmailCopia; private $_emailCopia; private $baterPonto; private $_ip; private $_assuntosChamado; private $_assuntosProposta; private $_ramalNumero; private $_discadorId; private $desativado; private $_assuntosSimulacao; public function getId() { return $this->_id; } public function setId($id) { $this->_id = $id; } public function getGrupoId() { return $this->_grupoId; } public function setGrupoId($grupoId) { $this->_grupoId = $grupoId; } public function getNome() { return $this->_nome; } public function setNome($nome) { $this->_nome = $nome; } public function getEmail() { return $this->_email; } public function setEmail($email) { $this->_email = strtolower($email); } public function getLogin() { return $this->_login; } public function setLogin($login) { $this->_login = $login; } public function getSenha() { return $this->_senha; } public function setSenha($senha) { $this->_senha = $senha; } function getIp() { return $this->_ip; } function setIp($ip) { $this->_ip = $ip; } public function getEmpresaId() { return $this->_empresaId; } public function setEmpresaId($empresaId) { $this->_empresaId = $empresaId; } public function getCorretorId() { return $this->_corretorId; } public function setCorretorId($corretorId) { $this->_corretorId = $corretorId; } public function getFuncionarioId() { return $this->_funcionarioId; } public function setFuncionarioId($funcionarioId) { $this->_funcionarioId = $funcionarioId; } public function getHoraInicio() { return $this->_horaInicio; } public function setHoraInicio($horaInicio) { if( Zend_Date::isDate($horaInicio, 'HH:mm') ){ $this->_horaInicio = $horaInicio; } } public function getHoraFim() { return $this->_horaFim; } public function setHoraFim($horaFim) { if( Zend_Date::isDate($horaFim, 'HH:mm') ){ $this->_horaFim = $horaFim; } } public function getDias() { return $this->_dias; } public function setDias($dias) { $this->_dias = is_array($dias) ? implode(',', $dias) : $dias; } public function getBaterPonto() { return $this->baterPonto; } public function setBaterPonto($baterPonto) { $this->baterPonto = $baterPonto; } public function getReceberEmailCopia() { return $this->_receberEmailCopia; } public function setReceberEmailCopia($receberEmailCopia) { $this->_receberEmailCopia = $receberEmailCopia; } function getEmailCopia() { return $this->_emailCopia; } function setEmailCopia($emailCopia) { $this->_emailCopia = $emailCopia; } function getAssuntosChamado() { return $this->_assuntosChamado; } function setAssuntosChamado($assuntosChamado) { $this->_assuntosChamado = implode(',', $assuntosChamado); } function getAssuntosProposta() { return $this->_assuntosProposta; } function setAssuntosProposta($assuntosProposta) { $this->_assuntosProposta = implode(',', $assuntosProposta); } public function getRamalNumero() { return $this->_ramalNumero; } public function setRamalNumero($ramalNumero) { $this->_ramalNumero = $ramalNumero; } public function getDiscadorId() { return $this->_discadorId; } public function setDiscadorId($discadorId): void { $this->_discadorId = $discadorId; } /** * @param string|null $desativado */ public function setDesativado(?string $desativado = "0") { $this->desativado = $desativado; } /** * @return string|null */ public function getDesativado(): ?string { return $this->desativado; } function getAssuntosSimulacao() { return $this->_assuntosSimulacao; } function setAssuntosSimulacao($assuntosSimulacao) { $this->_assuntosSimulacao = implode(',', $assuntosSimulacao); } public function __construct($options = null) { if( is_array($options) ){ $this->setOptions($options); } } public function setOptions(array $options) { $methods = get_class_methods($this); foreach ( $options as $key => $value ) { $explode = explode("_", $key); $methodName = ''; foreach ( $explode as $v ) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'set' . ucfirst($key); if( in_array($method, $methods) ){ $this->$method($value); } } return $this; } public function _toArray() { $dbtable = new Model_DbTable_Usuario(); $info = $dbtable->info(); $methods = get_class_methods($this); $data = array(); foreach ( $info['cols'] as $key ) { $col = $key; $explode = explode("_", $key); $methodName = ''; foreach ( $explode as $v ) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'get' . ucfirst($key); if( in_array($method, $methods) ){ $data[$col] = $this->$method(); } } return $data; } public function salvar() { $dbtable = new Model_DbTable_Usuario(); if ($this->getId() > 0) { $dbtable->update($this->_toArray(), 'id = ' . $this->getId()); return $this->getId(); } Gatekeeper::limiteUsuarios(); return $dbtable->insert($this->_toArray()); } /** * Exclui o registro passado por parâmetro * @param int $id * @return int The number of rows deleted */ public function excluir($id) { if( $id > 0 ){ $dbtable = new Model_DbTable_Usuario(); return $dbtable->delete("id = " . $id); } return null; } /** * Retorna uma lista * @param string $where * @param string $order * @param int $count * @param int $offset * @return array */ public function listar($fields = null, $order = array( "grupo ASC", "login ASC" )) { $params = array(); $where = null; if (Yuppie_Auth::getIdentity()->grupo == "Corretor") { $dbtable = new Model_DbTable_GrupoUsuario(); $fields['grupos'] = $dbtable->exibirGruposCorretor(); $params[] = "parent_corretor = " . Yuppie_Auth::getIdentity()->id; } if (isset($fields['empresa_id']) && !empty($fields['empresa_id'])) { $params[] = "u.empresa_id = " . $fields['empresa_id']; } if (isset($fields['corretor_id']) && !empty($fields['corretor_id'])) { $params[] = "corretor_id = " . $fields['corretor_id']; } if (isset($fields['grupo_id']) && !empty($fields['grupo_id'])) { $params[] = "u.grupo_id = " . $fields['grupo_id']; } if (isset($fields['grupo']) && !empty($fields['grupo'])) { $params[] = "grupo = '" . $fields['grupo'] . "'"; } if (isset($fields['login']) && !empty($fields['login'])) { $params[] = "u.login LIKE '%" . $fields['login'] . "%'"; } if (!empty($fields['assuntos_chamado'])) { $params[] = "assuntos_chamado LIKE '%" . $fields['assuntos_chamado'] . "%'"; } if (isset($fields['grupos']) && !empty($fields['grupos'])) { $grupos = implode(", ", $fields['grupos']); if (count($grupos) > 0) { $params[] = '(grupo_id IN (' . $grupos . '))'; } } if (isset($fields['desativado']) && $fields['desativado'] !== "") { $params[] = 'u.desativado = ' . $fields['desativado']; } if (!empty($fields['rota_id'])) { $params[] = 'r.id = ' . $fields['rota_id']; } if (count($params) > 0) { $where = implode(' AND ', $params); } $dbtable = new Model_DbTable_Usuario(); return $dbtable->fetchAll($where, $order); } /** * Retorna um fetchRow do item passado por parâmetro * @param int $id * @return Zend_Db_Table_Row_Abstract | null */ public function exibir($id) { $dbtable = new Model_DbTable_Usuario(); return $dbtable->fetchRow("id = " . $id); } public function getUsuariosFormalizacao() { $dbtable = new Model_DbTable_Usuario(); return $dbtable->fetchAllView("grupo LIKE 'Formalizacao%'", 'nome ASC'); } public function checkOperadorCorretor($idCorretor) { $dbtable = new Model_DbTable_Usuario(); $result = $dbtable->fetchRow("corretor_id = {$idCorretor}"); if( $result ){ return true; } return false; } public function ultimoAtendimentoCallcenter() { $dbtable = new Model_DbTable_Usuario(); $select = $dbtable->getAdapter()->select()->from('tb_usuarios', array( 'nome', 'id' => 'tb_usuarios.id' )) ->joinInner(array( 'atendimentos' => 'tb_callcenter_base' ) , 'atendimentos.usuario_ultimo_atendimento = tb_usuarios.id', array( '' )) ->group('tb_usuarios.nome'); return $dbtable->getAdapter()->fetchAll($select); } public function findByCpf($cpf) { $cpf = str_replace(array('.','-') , '', $cpf); $select = $this->getAdapter()->select()->from('tb_usuarios') ->where('excluido = 0') ->where('cpf = ?', $cpf); return $this->getAdapter()->fetchRow($select); } /** * Metodo responsavel por atualizar o numero do ramal e libera o status ativo * @param $numeroRamal * @return string */ public function atualizarNumeroRamalParaDiscador($numeroRamal) : Array { $dbtable = new Model_DbTable_Usuario(); if ( $numeroRamal ) { $ramal = $dbtable->selectNumeroRamal('ramal_numero', $numeroRamal); } if ( $ramal ) { return [ 'status' => false, 'mensagem' => "Ramal alocado para outro operador, entre em contato com seu supervisor!" ]; } $usuarioId = Yuppie_Auth::getIdentity()->id; $dbtable->update([ 'ramal_numero' => $numeroRamal, 'ramal_status' => 'DISPONIVEL' ], "id = $usuarioId"); self::_atualizarDadosZendSession([ 'ramal_numero' => $numeroRamal, 'ramal_status' => 'DISPONIVEL' ]); return [ 'status' => true, 'mensagem' => "Ramal atualizado!" ]; } public function getNumeroRamal() { $dbtable = new Model_DbTable_Usuario(); return $dbtable->selectNumeroRamal('id', Yuppie_Auth::getIdentity()->id); } private static function _atualizarDadosZendSession(array $dadosAtualizados) : void { $user = Yuppie_Auth::getIdentity(); foreach ($dadosAtualizados as $key => $value) { $user->$key = $value; } Yuppie_Auth::writeStorage($user); } public static function alteraStatusRamal($acao, $pausaId, $motivo = null) : Array { if (!$class = Core_Discador_Factory::load()) return []; $dbtable = new Model_DbTable_Usuario(); $usuarioId = Yuppie_Auth::getIdentity()->id; $usuario = $dbtable->fetchRow(['id = ?' => Yuppie_Auth::getIdentity()->id])->toArray(); $retornoSonax = $class->atendentePausaOuRetorno($acao, $usuario['discador_id'], $motivo); if ($retornoSonax['status']) { $dbtable->update([ 'ramal_status' => $pausaId ], ['id = ?' => $usuarioId]); } return $retornoSonax; } public static function getRamalOperador() { return (new Model_DbTable_Usuario)->selectRamalOperador()['ramal_numero']; } public function autenticarRetornoPausa($parametros) { $autenticado = $this->autenticarUsuarioRetornoPausa($parametros, "tb_gerente_rota"); if ($autenticado) $grupo = "Supervisor"; if (!$autenticado) { $autenticado = $this->autenticarUsuarioRetornoPausa($parametros, "vw_usuarios"); } if (!$autenticado) { return [ 'msg' => 'Usuário Inválido.', 'valido' => false ]; } if (!isset($grupo)) { $grupoId = (new Model_DbTable_Usuario())->fetchRow(['login = ?' => $parametros['usuario']])->grupo_id; $grupo = (new Model_GrupoUsuario())->exibir($grupoId)->nome; } if (!self::checarPermissaoRetornoPausa($grupo)) { return [ 'msg' => 'Informe os dados corretamente.', 'valido' => false ]; } return [ 'msg' => 'Retorno autorizado.', 'valido' => true ]; } public static function checarPermissaoRetornoPausa($grupo) { $permissao = (new Model_DbTable_Permissao())->getPermissaoByResourceAndGrupo('autorizar-retorno-pausa', $grupo); if ($permissao['allow'] != 0) return true; return false; } public function autenticarUsuarioRetornoPausa($dados, $table) { if (empty($dados['usuario']) || empty($dados['senha'])) { return false; } $adapter = new Zend_Auth_Adapter_DbTable(null, $table, 'login', 'senha', 'MD5(?)'); $adapter->getDbSelect()->where("excluido<>1"); $adapter->setIdentity($dados['usuario']); $adapter->setCredential($dados['senha']); $result = $adapter->authenticate(); return $result->isValid(); } public function verificarTempoRetorno() { if (Yuppie_Auth::getIdentity() != 'Callcenter') { return false; } $pausaOperadores = new Model_DbTable_CallcenterPausaOperador(); $pausa = $pausaOperadores->fetchRow([ 'operador = ?' => Yuppie_Auth::getIdentity()->nome, 'data_hora_acao >= ?' => Zend_Date::now()->get('yyyy-MM-dd'), 'acao = ?' => 'pausar', ], 'data_hora_acao DESC'); $motivoPausas = new Model_DbTable_CallcenterMotivoPausa(); $tempoPausa = $motivoPausas->fetchRow([ 'descricao = ?' => $pausa->motivo_acao, 'logout_discador <> 0' ])->tempo_limite_pausa; $tempoPercorrido = strtotime(Zend_Date::now()->get("yyyy-MM-dd HH:mm:ss")) - strtotime($pausa->data_hora_acao); if ($tempoPercorrido < $tempoPausa) return true; } /** * @param int $usuario * @return array|null */ public static function getJornadaTrabalho(int $usuario): ?array { return (new Model_DbTable_Usuario())->findJornadaTrabalho($usuario); } /** * Faz o reset do campo secret_gauth * @params int $id */ public function resetGauth(int $id) { if (!$id) { return; } return (new Model_DbTable_Usuario())->update(['secret_gauth' => null], "id = " . $id); } public function saveSecretGauth(string $secret, int $usuarioId) { if (empty($secret) || !$usuarioId) { return; } return (new Model_DbTable_Usuario())->update(['secret_gauth' => $secret], "id = " . $usuarioId); } }
💾 保存文件
← 返回文件管理器