示例#1
0
 /**
  * @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;
     }
 }
示例#2
0
 /**
  * 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");
 }