bancoSEI)) { $this->bancoSEI->fecharConexao(); } } /** * Invés de aproveitar o singleton do BancoSEI criamos uma nova instância para * não ser afetada pelo transation * * @return Infra[Driver] */ protected function inicializarObjInfraIBanco() { if(empty($this->bancoSEI)) { $this->bancoSEI = new BancoSEI(); $this->bancoSEI->abrirConexao(); } return $this->bancoSEI; } public function setOpts($dblIdProcedimento = 0, $dblIdTramit = 0, $numTarefa){ $this->dblIdProcedimento = $dblIdProcedimento; $this->dblIdTramit = $dblIdTramit; $this->numTarefa = $numTarefa; $this->isSetOpts = true; } /** * Adiciona um novo andamento à um procedimento que esta sendo expedido para outra unidade * * @param string $strMensagem * @param string $strSituacao Tipo ENUM(S,N) * @return null */ public function cadastrar($strMensagem = 'Não informado', $strSituacao = 'N'){ if($this->isSetOpts === false) { throw new InfraException('Log do cadastro de procedimento não foi configurado'); } $objInfraIBanco = $this->inicializarObjInfraIBanco(); $objInfraIBanco->abrirTransacao(); $hash = md5($this->dblIdProcedimento.$strMensagem); $objProcedimentoAndamentoDTO = new ProcedimentoAndamentoDTO(); $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao); $objProcedimentoAndamentoDTO->setDthData(date('d/m/Y H:i:s')); $objProcedimentoAndamentoDTO->setDblIdProcedimento($this->dblIdProcedimento); $objProcedimentoAndamentoDTO->setDblIdTramite($this->dblIdTramit); $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao); $objProcedimentoAndamentoDTO->setStrMensagem($strMensagem); $objProcedimentoAndamentoDTO->setStrHash($hash); $objProcedimentoAndamentoDTO->setNumTarefa($this->numTarefa); $objProcedimentoAndamentoBD = new ProcedimentoAndamentoBD($objInfraIBanco); $objProcedimentoAndamentoBD->cadastrar($objProcedimentoAndamentoDTO); $objInfraIBanco->confirmarTransacao(); } }