/** * @param \Core_Dto_Search $dto * @return string * @todo ao subir imagem para artefato com imagem pendente de migração, sinalizar no registro que foi realizado e bloquear ação. */ public function saveImage(\Core_Dto_Search $dto) { $entityManager = $this->getEntityManager(); $entityManager->beginTransaction(); try { #Consulta última imagem do artefato se houver $rsImagemAtiva = $this->_getRepository('app:ArtefatoImagem')->findBy(array('sqArtefato' => $dto->getId(), 'stAtivo' => TRUE)); $artefatoImagemEntity = new ArtefatoImagemEntity(); #Request information... $this->_fillRequestInformation($artefatoImagemEntity, $dto, $entityManager); #Session information... $this->_fillSessionInformation($artefatoImagemEntity, $entityManager); #Temporary file information $mufService = $this->getServiceLocator()->getService('MoveFileUpload'); $pathTemporary = $mufService->getOriginPath(); $filenameTemporary = $dto->getFilenameTemporary(); $this->_fillFileInfromation($artefatoImagemEntity, $pathTemporary . $filenameTemporary); #Atualiza imagem anterior com st_ativo FALSE if (count($rsImagemAtiva)) { foreach ($rsImagemAtiva as $entImagem) { $entImagem->setStAtivo(FALSE); $entityManager->persist($entImagem); $entityManager->flush($entImagem); } } #Saving entity... $entityManager->persist($artefatoImagemEntity); $entityManager->flush($artefatoImagemEntity); #Saving history... $haService = $this->getServiceLocator()->getService('HistoricoArtefato'); $sqOcorrencia = \Core_Configuration::getSgdoceSqOcorrenciaIncluirImagem(); $strMessage = $haService->getMessage('MH019', $artefatoImagemEntity->getDtOperacao()->toString('dd/MM/YYYY HH:mm:ss')); $sqArtefato = $artefatoImagemEntity->getSqArtefato()->getSqArtefato(); $haService->registrar($sqArtefato, $sqOcorrencia, $strMessage); #Moving file... $filename = $this->_getFilename($artefatoImagemEntity); $mufService->setDestinationPath($this->_getPath($artefatoImagemEntity)); $mufService->move($filenameTemporary, $filename); #se inconsistente define imagem como confirmada. $dtoSearch = \Core_Dto::factoryFromData(array('sqArtefato' => $sqArtefato), 'search'); $isMigracao = $this->getServiceLocator()->getService("Artefato")->isMigracao($dtoSearch); $isInconsistente = $this->getServiceLocator()->getService("Artefato")->isInconsistent($dtoSearch); if ($isMigracao && $isInconsistente) { $this->getServiceLocator()->getService('DocumentoMigracao')->setHasImage($sqArtefato); } $entityManager->commit(); } catch (\Exception $exp) { $entityManager->rollback(); throw $exp; } }
/** * Insere a imagem processada no sistema novo * * @param ArtefatoEntity $entArtefato * @param string $fullFilename */ private function _doInsertImagem(ArtefatoEntity $entArtefato, $fullFilename) { //fecha a conexão com banco $this->_closeConnection(); self::_debug("Iniciando a insersão da imagem no banco de dados"); self::_debug("Gerando hash do arquivo: {$fullFilename}"); $hash = hash_file(ArtefatoImagemService::HASH_ALGORITHM, $fullFilename); self::_debug("Hash gerado: {$hash}"); $newFilename = md5($hash); self::_debug("Nome do Arquivo: {$newFilename}"); $sqOcorrencia = \Core_Configuration::getSgdoceSqOcorrenciaIncluirImagem(); $artefatoImagemEntity = $this->_newEntity('app:ArtefatoImagem'); $entHistoricoArtefato = $this->_newEntity('app:HistoricoArtefato'); $entVwPessoa = NULL; $entVwUnidadeOrg = NULL; if ($this->_sqPessoa) { $entVwPessoa = $this->getEntityManager()->getPartialReference('app:VwPessoa', $this->_sqPessoa); } if ($this->_sqUnidadeOrg) { $entVwUnidadeOrg = $this->getEntityManager()->getPartialReference('app:VwUnidadeOrg', $this->_sqUnidadeOrg); } $entOocorrencia = $this->getEntityManager()->getPartialReference('app:Ocorrencia', $sqOcorrencia); $objZendDate = \Zend_Date::now(); $strMessage = $this->getServiceLocator()->getService('HistoricoArtefato')->getMessage('MH021', $objZendDate->get(\Zend_Date::DATETIME_MEDIUM)); //ARTEFATO_IMAGEM $artefatoImagemEntity->setSqArtefato($entArtefato)->setNuBytes(filesize($fullFilename))->setNuQtdePaginas($this->_pageCount)->setDtOperacao($objZendDate)->setTxHash($hash)->setNoArquivo($newFilename)->setSqPessoa($entVwPessoa)->setStAtivo(TRUE)->setSqUnidadeOrg($entVwUnidadeOrg); $this->getEntityManager()->persist($artefatoImagemEntity); $this->getEntityManager()->flush($artefatoImagemEntity); //HISTORICO_ARTEFATO $entHistoricoArtefato->setSqOcorrencia($entOocorrencia)->setSqUnidadeOrg($entVwUnidadeOrg)->setSqPessoa($entVwPessoa)->setDtOcorrencia($objZendDate)->setTxDescricaoOperacao($strMessage)->setSqArtefato($entArtefato); $this->getEntityManager()->persist($entHistoricoArtefato); $this->getEntityManager()->flush($entHistoricoArtefato); self::_debug("Insersão da imagem no banco de dados e historico concluído"); self::_debug("Copiando PDF para diretório final"); #MOVENDO ARQUIVO PARA DIRETORIO DE DESTINO... $mufService = $this->getServiceLocator()->getService('MoveFileUpload'); $filenameTemporary = pathinfo($fullFilename, PATHINFO_BASENAME); self::_debug("[{$filenameTemporary}] {$fullFilename}"); $destination = $this->_getDestinationPath($artefatoImagemEntity); self::_debug("copiando para {$destination}"); $mufService->setDestinationPath($destination); $newFilenamePDF = $newFilename . $this->_extension[self::ARQUIVO_PDF]; $mufService->move($filenameTemporary, $newFilenamePDF); self::_debug("{$newFilenamePDF} copiado com sucesso"); self::_debug("Cópia finalizada"); }