objBanco)) { $this->objBanco = BancoSip::getInstance(); } return $this->objBanco; } /** * Retorna o ID do sistema * * @return int */ protected function getNumIdSistema($strSigla = 'SIP'){ $objDTO = new SistemaDTO(); $objDTO->setStrSigla($strSigla); $objDTO->setNumMaxRegistrosRetorno(1); $objDTO->retNumIdSistema(); $objRN = new SistemaRN(); $objDTO = $objRN->consultar($objDTO); return (empty($objDTO)) ? '0' : $objDTO->getNumIdSistema(); } /** * * @return int Código do Menu */ protected function getNumIdMenu($strMenu = 'Principal', $numIdSistema = 0){ $objDTO = new MenuDTO(); $objDTO->setNumIdSistema($numIdSistema); $objDTO->setStrNome($strMenu); $objDTO->setNumMaxRegistrosRetorno(1); $objDTO->retNumIdMenu(); $objRN = new MenuRN(); $objDTO = $objRN->consultar($objDTO); if(empty($objDTO)){ throw new InfraException('Menu '.$strMenu.' não encontrado.'); } return $objDTO->getNumIdMenu(); } /** * * @return int Código do Recurso gerado */ protected function criarRecurso($strNome = '', $strDescricao = null, $numIdSistema = 0){ $objDTO = new RecursoDTO(); $objDTO->setNumIdSistema($numIdSistema); $objDTO->setStrNome($strNome); $objDTO->setNumMaxRegistrosRetorno(1); $objDTO->retNumIdRecurso(); $objBD = new RecursoBD($this->getObjInfraIBanco()); $objDTO = $objBD->consultar($objDTO); if(empty($objDTO)){ $objDTO = new RecursoDTO(); $objDTO->setNumIdRecurso(null); $objDTO->setStrDescricao($strDescricao); $objDTO->setNumIdSistema($numIdSistema); $objDTO->setStrNome($strNome); $objDTO->setStrCaminho('controlador.php?acao='.$strNome); $objDTO->setStrSinAtivo('S'); $objDTO = $objBD->cadastrar($objDTO); } $this->arrRecurso[] = $objDTO->getNumIdRecurso(); return $objDTO->getNumIdRecurso(); } /** * Cria um menu * * @return int */ protected function criarMenu($strRotulo = '', $numSequencia = 10, $numIdItemMenuPai = null, $numIdMenu = null, $numIdRecurso = null, $numIdSistema = 0){ $objDTO = new ItemMenuDTO(); $objDTO->setNumIdItemMenuPai($numIdItemMenuPai); $objDTO->setNumIdSistema($numIdSistema); $objDTO->setStrRotulo($strRotulo); $objDTO->setNumIdRecurso($numIdRecurso); $objDTO->setNumMaxRegistrosRetorno(1); $objDTO->retNumIdItemMenu(); $objBD = new ItemMenuBD($this->inicializarObjInfraIBanco()); $objDTO = $objBD->consultar($objDTO); if(empty($objDTO)){ $objDTO = new ItemMenuDTO(); $objDTO->setNumIdMenu($numIdMenu); $objDTO->setNumIdMenuPai($numIdMenu); $objDTO->setNumIdItemMenu(null); $objDTO->setNumIdItemMenuPai($numIdItemMenuPai); $objDTO->setNumIdSistema($numIdSistema); $objDTO->setNumIdRecurso($numIdRecurso); $objDTO->setStrRotulo($strRotulo); $objDTO->setStrDescricao(null); $objDTO->setNumSequencia($numSequencia); $objDTO->setStrSinNovaJanela('N'); $objDTO->setStrSinAtivo('S'); $objDTO = $objBD->cadastrar($objDTO); } if(!empty($numIdRecurso)) { $this->arrMenu[] = array($objDTO->getNumIdItemMenu(), $numIdMenu, $numIdRecurso); } return $objDTO->getNumIdItemMenu(); } public function addRecursosToPerfil($numIdPerfil, $numIdSistema){ if(!empty($this->arrRecurso)) { $objDTO = new RelPerfilRecursoDTO(); $objBD = new RelPerfilRecursoBD($this->inicializarObjInfraIBanco()); foreach($this->arrRecurso as $numIdRecurso) { $objDTO->setNumIdSistema($numIdSistema); $objDTO->setNumIdPerfil($numIdPerfil); $objDTO->setNumIdRecurso($numIdRecurso); if($objBD->contar($objDTO) == 0) { $objBD->cadastrar($objDTO); } } } } public function addMenusToPerfil($numIdPerfil, $numIdSistema){ if(!empty($this->arrMenu)) { $objDTO = new RelPerfilItemMenuDTO(); $objBD = new RelPerfilItemMenuBD($this->inicializarObjInfraIBanco()); foreach($this->arrMenu as $array) { list($numIdItemMenu, $numIdMenu, $numIdRecurso) = $array; $objDTO->setNumIdPerfil($numIdPerfil); $objDTO->setNumIdSistema($numIdSistema); $objDTO->setNumIdRecurso($numIdRecurso); $objDTO->setNumIdMenu($numIdMenu); $objDTO->setNumIdItemMenu($numIdItemMenu); if($objBD->contar($objDTO) == 0) { $objBD->cadastrar($objDTO); } } } } public function atribuirPerfil($numIdSistema){ $objDTO = new PerfilDTO(); $objBD = new PerfilBD($this->inicializarObjInfraIBanco()); $objRN = $this; // Vincula a um perfil os recursos e menus adicionados nos métodos criarMenu e criarReturso $fnCadastrar = function($strNome, $numIdSistema) use($objDTO, $objBD, $objRN) { $objDTO->unSetTodos(); $objDTO->setNumIdSistema($numIdSistema); $objDTO->setStrNome($strNome, InfraDTO::$OPER_LIKE); $objDTO->setNumMaxRegistrosRetorno(1); $objDTO->retNumIdPerfil(); $objPerfilDTO = $objBD->consultar($objDTO); if(!empty($objPerfilDTO)) { $objRN->addRecursosToPerfil($objPerfilDTO->getNumIdPerfil(), $numIdSistema); $objRN->addMenusToPerfil($objPerfilDTO->getNumIdPerfil(), $numIdSistema); } }; //$fnCadastrar('ADMINISTRADOR', $numIdSistema); //$fnCadastrar('BASICO', $numIdSistema); } /** * Instala/Atualiza os módulo PEN para versão 1.0 */ protected function instalarV001(){ $numIdSistema = $this->getNumIdSistema('SEI'); $numIdMenu = $this->getNumIdMenu('Principal', $numIdSistema); //---------------------------------------------------------------------- // Expedir procedimento //---------------------------------------------------------------------- $this->criarRecurso('pen_procedimento_expedir', 'Expedir Procedimento', $numIdSistema); $this->criarRecurso('apensados_selecionar_expedir_procedimento', 'Processos Apensados', $numIdSistema); $numIdRecurso = $this->criarRecurso('pen_procedimento_expedido_listar', 'Processos Expedidos', $numIdSistema); $this->criarMenu('Processos Expedidos', 55, null, $numIdMenu, $numIdRecurso, $numIdSistema); //---------------------------------------------------------------------- // Mapeamento de documentos enviados //---------------------------------------------------------------------- $this->criarRecurso('pen_map_tipo_documento_envio_visualizar', 'Visualização de mapeamento de documentos enviados', $numIdSistema); // Acha o menu existente de Tipos de Documento $objItemMenuDTO = new ItemMenuDTO(); $objItemMenuDTO->setNumIdSistema($numIdSistema); $objItemMenuDTO->setNumIdMenu($numIdMenu); $objItemMenuDTO->setStrRotulo('Tipos de Documento'); $objItemMenuDTO->setNumMaxRegistrosRetorno(1); $objItemMenuDTO->retNumIdItemMenu(); $objItemMenuBD = new ItemMenuBD($this->inicializarObjInfraIBanco()); $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO); if(empty($objItemMenuDTO)) { throw new InfraException('Menu "Tipo de Documentos" não foi localizado'); } $numIdItemMenuPai = $objItemMenuDTO->getNumIdItemMenu(); // Gera o submenu Mapeamento $_numIdItemMenuPai = $this->criarMenu('Mapeamento', 50, $numIdItemMenuPai, $numIdMenu, null, $numIdSistema); // Gera o submenu Mapeamento > Envio $numIdItemMenuPai = $this->criarMenu('Envio', 10, $_numIdItemMenuPai, $numIdMenu, null, $numIdSistema); // Gera o submenu Mapeamento > Envio > Cadastrar $numIdRecurso = $this->criarRecurso('pen_map_tipo_documento_envio_cadastrar', 'Cadastro de mapeamento de documentos enviados', $numIdSistema); $this->criarMenu('Cadastrar', 10, $numIdItemMenuPai, $numIdMenu, $numIdRecurso, $numIdSistema); // Gera o submenu Mapeamento > Envio > Listar $numIdRecurso = $this->criarRecurso('pen_map_tipo_documento_envio_listar', 'Listagem de mapeamento de documentos enviados', $numIdSistema); $this->criarMenu('Listar', 20, $numIdItemMenuPai, $numIdMenu, $numIdRecurso, $numIdSistema); // Gera o submenu Mapeamento > Recebimento $numIdItemMenuPai = $this->criarMenu('Recebimento', 20, $_numIdItemMenuPai, $numIdMenu, null, $numIdSistema); // Gera o submenu Mapeamento > Recebimento > Cadastrar $numIdRecurso = $this->criarRecurso('pen_map_tipo_documento_recebimento_cadastrar', 'Cadastro de mapeamento de documentos recebidos', $numIdSistema); $this->criarMenu('Cadastrar', 10, $numIdItemMenuPai, $numIdMenu, $numIdRecurso, $numIdSistema); // Gera o submenu Mapeamento > Recebimento > Listar $numIdRecurso = $this->criarRecurso('pen_map_tipo_documento_recebimento_listar', 'Listagem de mapeamento de documentos recebidos', $numIdSistema); $this->criarMenu('Listar', 20, $numIdItemMenuPai, $numIdMenu, $numIdRecurso, $numIdSistema); //Atribui as permissões aos recursos e menus $this->atribuirPerfil($numIdSistema); } protected function instalarV002(){ } protected function instalarV003R003S003IW001(){ $objBD = new ItemMenuBD($this->inicializarObjInfraIBanco()); //---------------------------------------------------------------------- // Achar o root $numIdSistema = $this->getNumIdSistema('SEI'); $numIdMenu = $this->getNumIdMenu('Principal', $numIdSistema); $objDTO = new ItemMenuDTO(); $objDTO->setNumIdSistema($numIdSistema); $objDTO->setNumIdMenu($numIdMenu); $objDTO->setStrRotulo('Administração'); $objDTO->setNumMaxRegistrosRetorno(1); $objDTO->retNumIdItemMenu(); $objDTO = $objBD->consultar($objDTO); if(empty($objDTO)) { throw new InfraException('Menu "Administração" não foi localizado'); } $numIdItemMenuRoot = $objDTO->getNumIdItemMenu(); //---------------------------------------------------------------------- // Acha o nodo do mapeamento $objItemMenuDTO = new ItemMenuDTO(); $objItemMenuDTO->setNumIdSistema($numIdSistema); $objItemMenuDTO->setNumIdMenu($numIdMenu); $objItemMenuDTO->setStrRotulo('Mapeamento'); $objItemMenuDTO->setNumSequencia(50); $objItemMenuDTO->setNumMaxRegistrosRetorno(1); $objItemMenuDTO->retTodos(); $objItemMenuDTO = $objBD->consultar($objItemMenuDTO); if(!empty($objItemMenuDTO)) { $numIdItemMenuMapeamento = $objItemMenuDTO->getNumIdItemMenu(); $objDTO = new ItemMenuDTO(); $objDTO->setNumIdSistema($numIdSistema); $objDTO->setNumIdMenu($numIdMenu); $objDTO->setNumIdItemMenuPai($numIdItemMenuMapeamento); $objDTO->retTodos(); $arrObjDTO = $objBD->listar($objDTO); if(!empty($arrObjDTO)) { $numIdItemMenuPai = $this->criarMenu('Processo Eletrônico Nacional', 0, $numIdItemMenuRoot, $numIdMenu, null, $numIdSistema); $numIdItemMenuPai = $this->criarMenu('Mapeamento de Tipos de Documento', 10, $numIdItemMenuPai, $numIdMenu, null, $numIdSistema); foreach($arrObjDTO as $objDTO) { $objDTO->setNumIdItemMenuPai($numIdItemMenuPai); $objBD->alterar($objDTO); } $objBD->excluir($objItemMenuDTO); } } } }