/**
  * Método que verifica a existência de um grau de acesso do artefato
  * @param \Sgdoce\Model\Entity\Artefato $artefato
  * @param \Sgdoce\Model\Entity\GrauAcesso $grauAcesso
  * @return boolean
  */
 public function hasGrauAcessoArtefato(\Sgdoce\Model\Entity\Artefato $artefato, \Sgdoce\Model\Entity\GrauAcesso $grauAcesso)
 {
     $return = FALSE;
     $queryBuilder = $this->_em->createQueryBuilder()->select('gaa')->from('app:GrauAcessoArtefato', 'gaa')->andWhere('gaa.sqArtefato = :sqArtefato')->setParameter(':sqArtefato', $artefato->getSqArtefato())->andWhere('gaa.stAtivo = TRUE');
     $result = $queryBuilder->getQuery()->execute();
     if (count($result) > 0) {
         if ($result[0]->getSqGrauAcesso()->getSqGrauAcesso() != $grauAcesso->getSqGrauAcesso()) {
             $queryBuilder = $this->_em->createQueryBuilder()->update('app:GrauAcessoArtefato', 'gaa')->set('gaa.stAtivo', "FALSE")->andWhere('gaa.sqGrauAcessoArtefato = :sqGrauAcessoArtefato')->setParameter(':sqGrauAcessoArtefato', $result[0]->getSqGrauAcessoArtefato());
             $queryBuilder->getQuery()->execute();
             $return = TRUE;
         }
     } else {
         $return = TRUE;
     }
     return $return;
 }
 /**
  * Metódo que realiza o save do Historico Artefato
  *
  * @param \Sgdoce\Model\Entity\Artefato $entArtefato
  * @param \Sgdoce\Model\Entity\VwUnidadeOrg $entVwUnidOrg
  * @param \Sgdoce\Model\Entity\VwPessoa $entVwPessoa
  * @param int $entOcorrencia
  * @param string $message
  *
  * @return \Sgdoce\Model\Entity\HistoricoArtefato
  */
 protected function _save($entArtefato, $entVwUnidOrg, $entVwPessoa, $entOcorrencia, $message)
 {
     $entHistoricoArtefato = $this->_newEntity('app:HistoricoArtefato');
     if (!$entArtefato->getSqArtefato() instanceof \Sgdoce\Model\Entity\Artefato) {
         $entArtefato = $this->getEntityManager()->getPartialReference('app:Artefato', $entArtefato->getSqArtefato());
     }
     $entOcorrencia = $this->getEntityManager()->getPartialReference('app:Ocorrencia', $entOcorrencia->getSqOcorrencia());
     $entVwUnidOrg = $this->getEntityManager()->getPartialReference('app:VwUnidadeOrg', $entVwUnidOrg->getSqUnidadeOrg());
     $entVwPessoa = $this->getEntityManager()->getPartialReference('app:VwPessoa', $entVwPessoa->getSqPessoa());
     $objZendDate = new \Zend_Date();
     $entHistoricoArtefato->setSqArtefato($entArtefato);
     $entHistoricoArtefato->setSqUnidadeOrg($entVwUnidOrg);
     $entHistoricoArtefato->setSqPessoa($entVwPessoa);
     $entHistoricoArtefato->setSqOcorrencia($entOcorrencia);
     $entHistoricoArtefato->setDtOcorrencia($objZendDate);
     $entHistoricoArtefato->setTxDescricaoOperacao($message);
     $this->getEntityManager()->getUnitOfWork()->detach($entHistoricoArtefato);
     $this->getEntityManager()->persist($entHistoricoArtefato);
     $this->getEntityManager()->flush($entHistoricoArtefato);
     return $entHistoricoArtefato;
 }
Example #3
0
 /**
  * @param  array  $data
  * @param  int    $selected
  * @param  array  $config
  * @return string
  */
 public function nuArtefato(Artefato $entArtefato, $sqTipoArtefato = null)
 {
     $return = NULL;
     $coAmbitoProcesso = Processo::T_TIPO_AMBITO_PROCESSO_FEDERAL;
     if (is_null($sqTipoArtefato)) {
         $sqTipoArtefato = $entArtefato->getSqTipoArtefatoAssunto()->getSqTipoArtefato()->getSqTipoArtefato();
     }
     // PROCESSO
     if ($sqTipoArtefato == \Core_Configuration::getSgdoceTipoArtefatoProcesso()) {
         $nuArtefato = $entArtefato->getNuArtefato();
         if (method_exists($entArtefato, 'getSqArtefatoProcesso') && $entArtefato->getSqArtefatoProcesso()) {
             $coAmbitoProcesso = $entArtefato->getSqArtefatoProcesso()->getCoAmbitoProcesso();
         }
         // SE AMBITO FEDERAL APLICA MÁSCARA
         if ($coAmbitoProcesso == Processo::T_TIPO_AMBITO_PROCESSO_FEDERAL) {
             $nuArtefato = $this->mask($nuArtefato);
         }
         return $nuArtefato;
     } else {
         return $entArtefato->getNuDigital()->getNuEtiqueta(TRUE);
     }
     return $return;
 }
 /**
  *
  * @param \Sgdoce\Model\Entity\Artefato $entityArtefato
  * @return \Arquivo\Service\ArquivamentoSetorial
  */
 private function _processTramite(\Sgdoce\Model\Entity\Artefato $entityArtefato)
 {
     $sqArtefato = $entityArtefato->getSqArtefato();
     $entityUltimoTramite = $this->_getRepository('app:VwUltimoTramiteArtefato')->find($sqArtefato);
     $sqPessoaLogada = (int) \Core_Integration_Sica_User::getPersonId();
     $sqUnidadeLogada = (int) \Core_Integration_Sica_User::getUserUnit();
     $serviceTramite = $this->getServiceLocator()->getService('TramiteArtefato');
     $dtoSearchArtefato = \Core_Dto::factoryFromData(array('sqArtefato' => $sqArtefato), 'search');
     /**
      * Se não tem ultimo Tramite é porque o artefato ainda não foi corrigido.
      * Verificar, mesmo assim, se tem tramite pois a view de ultimo tramite faz join
      * que pode não retornar registro caso documento não tenha sido corrido
      */
     if (!$entityUltimoTramite) {
         $objZendDate = \Zend_Date::now();
         $dataTramite = array('sqArtefato' => $sqArtefato, 'sqPessoaDestino' => $sqUnidadeLogada, 'sqPessoaDestinoInterno' => $sqPessoaLogada, 'sqUnidadeOrgTramite' => $sqUnidadeLogada, 'sqStatusTramite' => \Core_Configuration::getSgdoceStatusTramiteRecebido(), 'dtTramite' => $objZendDate, 'sqPessoaTramite' => $sqPessoaLogada, 'inImpresso' => TRUE, 'nuTramite' => $serviceTramite->getNextTramiteNumber($dtoSearchArtefato));
         $entityDtoTramite = $serviceTramite->montaEntidateTramite($dataTramite);
         $entityPessoaRecebimento = $this->getEntityManager()->getPartialReference('app:VwPessoa', $sqPessoaLogada);
         $entityDtoTramite->getEntity()->setSqPessoaRecebimento($entityPessoaRecebimento);
         $objZendDateRecebimento = clone $objZendDate;
         $entityDtoTramite->getEntity()->setDtRecebimento($objZendDateRecebimento->addSecond(1));
         $entityTramite = $serviceTramite->save($entityDtoTramite);
     } else {
         $sqPessoaRecebimento = $entityUltimoTramite->getSqPessoaRecebimento()->getSqPessoa();
         $sqPessoaDestino = $entityUltimoTramite->getSqPessoaDestino()->getSqPessoa();
         /**
          * caso o ultimo tramite do artefato não for da pessoa logada
          * deve-se registrar um tramite para pessoa logada (SGI) para que este
          * possa encaminhar para quem solicitou a desanexação
          */
         if ($sqPessoaRecebimento != $sqPessoaLogada || $sqPessoaDestino != $sqUnidadeLogada) {
             $dtoSearchArtefato = \Core_Dto::factoryFromData(array('sqArtefato' => $sqArtefato), 'search');
             $objZendDate = \Zend_Date::now();
             $dataTramite = array('sqArtefato' => $sqArtefato, 'sqPessoaDestino' => $sqUnidadeLogada, 'sqPessoaDestinoInterno' => $sqPessoaLogada, 'sqUnidadeOrgTramite' => $sqUnidadeLogada, 'sqStatusTramite' => \Core_Configuration::getSgdoceStatusTramiteRecebido(), 'dtTramite' => $objZendDate, 'sqPessoaTramite' => $sqPessoaLogada, 'inImpresso' => TRUE, 'nuTramite' => $serviceTramite->getNextTramiteNumber($dtoSearchArtefato));
             $entityDtoTramite = $serviceTramite->montaEntidateTramite($dataTramite);
             $entityPessoaRecebimento = $this->getEntityManager()->getPartialReference('app:VwPessoa', $sqPessoaLogada);
             $entityDtoTramite->getEntity()->setSqPessoaRecebimento($entityPessoaRecebimento);
             $objZendDateRecebimento = clone $objZendDate;
             $entityDtoTramite->getEntity()->setDtRecebimento($objZendDateRecebimento->addSecond(1));
             $entityTramite = $serviceTramite->save($entityDtoTramite);
         }
     }
     return $this;
 }
Example #5
0
 public function formataProcessoAmbitoFederal(\Sgdoce\Model\Entity\Artefato $entityArtefato)
 {
     $maskNumberFilter = new \Core_Filter_MaskNumber();
     $nuProcesso = $entityArtefato->getNuArtefato();
     if (self::T_TIPO_AMBITO_PROCESSO_FEDERAL == $entityArtefato->getSqArtefatoProcesso()->getCoAmbitoProcesso()) {
         $mask = null;
         switch (strlen($nuProcesso)) {
             case 21:
                 $mask = self::T_MASK_21_DIGITS;
                 break;
             case 17:
                 $mask = self::T_MASK_17_DIGITS;
                 break;
             case 15:
                 $mask = self::T_MASK_15_DIGITS;
                 break;
         }
         if (!is_null($mask)) {
             $maskNumberFilter->setMask($mask);
             $nuProcesso = $maskNumberFilter->filter($nuProcesso);
         }
     }
     return $nuProcesso;
 }
Example #6
0
 /**
  * realiza a persistencia de grau de acesso ao artefato
  * @param \Sgdoce\Model\Entity\Artefato $entity
  * @param \Core_Dto_Search $dto
  * @return NULL
  */
 public function persistPessoaAssinanteArtefato($entity, \Core_Dto_Search $dto)
 {
     // verificando se existe registro em PessoaAssinanteArtefato
     $criteria = array('sqArtefato' => $entity->getSqArtefato());
     $sqPessoaSgdoce = $this->_getRepository('app:PessoaSgdoce')->findBy(array('sqPessoaCorporativo' => $dto->getAssinatura()));
     // verificando se existe Pessoa cadastrada no PessoaSgdoce
     if (!count($sqPessoaSgdoce)) {
         $entPessoaFisica = $this->_getRepository('app:VwPessoaFisica')->find($dto->getAssinatura());
         $sqPessoaSgdoce = $this->addPessoaSgdoce($dto->getAssinatura(), $entPessoaFisica->getNoPessoaFisica(), $entPessoaFisica->getNuCpf());
     } else {
         $sqPessoaSgdoce = $sqPessoaSgdoce[0];
     }
     $pessoaUnidadeOrg = $this->getServiceLocator()->getService('Documento')->hasPessoaUnidadeOrg($sqPessoaSgdoce);
     $resPessoaAssinante = $this->_getRepository('app:PessoaAssinanteArtefato')->findOneBy($criteria);
     // verificando se existe registro
     if (count($resPessoaAssinante)) {
         // atualizando PessoaAssinanteArtefato
         $resPessoaAssinante->setSqPessoaUnidadeOrg($pessoaUnidadeOrg);
     } else {
         // Preparando Entidade para salvar
         $resPessoaAssinante = $this->_newEntity('app:PessoaAssinanteArtefato');
         $resPessoaAssinante->setSqArtefato($this->_getRepository('app:Artefato')->find($entity->getSqArtefato()));
         $resPessoaAssinante->setSqPessoaUnidadeOrg($pessoaUnidadeOrg);
     }
     // salvando PessoaAssinanteArtefato
     $this->getEntityManager()->persist($resPessoaAssinante);
     $this->getEntityManager()->flush($resPessoaAssinante);
 }
Example #7
0
 private function _checkCanReturn(\Sgdoce\Model\Entity\Artefato $entityArtefato)
 {
     $sqTipoHistoricoArquivo = $this->_getRepository('app:CaixaHistorico')->getLastHistorico($entityArtefato->getSqArtefato());
     if (!is_null($sqTipoHistoricoArquivo)) {
         if ($sqTipoHistoricoArquivo != \Core_Configuration::getSgdoceTipoHistoricoArquivoEmprestado()) {
             $entityTipoArtefato = $entityArtefato->getSqTipoArtefatoAssunto()->getSqTipoArtefato();
             $noTipoArtefato = $entityTipoArtefato->getNoTipoArtefato();
             if ($entityTipoArtefato->getSqTipoArtefato() == \Core_Configuration::getSgdoceTipoArtefatoProcesso()) {
                 $nuArtefato = $this->getServiceLocator()->getService('Processo')->formataProcessoAmbitoFederal($entityArtefato);
             } else {
                 $nuArtefato = $entityArtefato->getNuDigital()->getNuEtiqueta();
             }
             throw new \Core_Exception_ServiceLayer_Verification("O {$noTipoArtefato} <b>{$nuArtefato}</b> não esta emprestado. Logo, não pode ser devolvido");
         }
     }
     return $this;
 }
Example #8
0
 private function _processaAnexoSIC(\Sgdoce\Model\Entity\Artefato $entity, $dto)
 {
     $i = 0;
     $nuDigital = $entity->getNuDigital()->getNuEtiqueta();
     while ($i < $dto->getUploader_count()) {
         $methodTmpName = "getUploader_{$i}_tmpname";
         $methodName = "getUploader_{$i}_name";
         $methodStatus = "getUploader_{$i}_status";
         if ('done' === $dto->{$methodStatus}()) {
             $tmpFileName = $dto->{$methodTmpName}();
             $realFileName = $dto->{$methodName}();
             $mufService = $this->getServiceLocator()->getService('MoveFileUpload');
             $moved = $mufService->setDestinationPath("upload/sic/{$nuDigital}")->move($tmpFileName);
             if ($moved) {
                 $mufService->unlinkOrigemFile($tmpFileName);
             }
         }
         $fileExtension = pathinfo($realFileName, PATHINFO_EXTENSION);
         $entityCheck = $this->_getRepository('app:AnexoSic')->findOneBy(array('noArquivoReal' => $realFileName, 'sqArtefato' => $entity->getSqArtefato()));
         if (!is_null($entityCheck)) {
             throw new \Core_Exception_ServiceLayer_Verification("Este SIC já possui um anexo com o nome '{$realFileName}'");
         }
         $entityAnexoSic = $this->_newEntity('app:AnexoSic');
         $entityAnexoSic->setSqArtefato($entity)->setTxCaminhoArquivo($mufService->getDestinationPath($tmpFileName))->setNoArquivoReal($realFileName)->setDtCadastro(\Zend_Date::now())->setTxExtensaoArquivo($fileExtension);
         $this->getEntityManager()->persist($entityAnexoSic);
         $this->getEntityManager()->flush($entityAnexoSic);
         $i++;
     }
     return $this;
 }
Example #9
0
 /**
  * Recupera dados do último tramite para setar as propriedades _sqPessoa e _sqUnidadeOrg
  * utilizadas para persistir a imagem
  *
  * @param ArtefatoEntity $entArtefato
  * @return \Migracao\Service\MigrationImage
  * @throws \Exception
  */
 private function _fillLastTramiteInformation(ArtefatoEntity $entArtefato)
 {
     $entTramite = $this->_getRepository('app:VwUltimoTramiteArtefato')->find($entArtefato->getSqArtefato());
     $sqUnidadeOrg = TRUE;
     $sqPessoa = TRUE;
     if (!$entTramite) {
         $sqUnidadeOrg = FALSE;
         $sqPessoa = FALSE;
     } else {
         //determina a unidade
         if (!$entTramite->getSqPessoaDestino() || !$entTramite->getSqPessoaDestino()->getSqPessoa()) {
             $sqUnidadeOrg = FALSE;
         }
         //determina a pessoa
         if (!$entTramite->getSqPessoaRecebimento() || !$entTramite->getSqPessoaRecebimento()->getSqPessoa()) {
             $sqPessoa = FALSE;
         }
     }
     $this->_sqPessoa = !$sqPessoa ? NULL : $entTramite->getSqPessoaRecebimento()->getSqPessoa();
     $this->_sqUnidadeOrg = !$sqUnidadeOrg ? NULL : $entTramite->getSqPessoaDestino()->getSqPessoa();
     return $this;
 }
Example #10
0
 private function _formatDigitalNumber(\Sgdoce\Model\Entity\Artefato $entityArtefato)
 {
     $nuDigital = $entityArtefato->getNuDigital()->getNuEtiqueta();
     if (strlen($nuDigital) < 7) {
         $nuDigital = str_pad($nuDigital, 7, '0', STR_PAD_LEFT);
     }
     return $nuDigital;
 }
Example #11
0
 public function _rule_desapensar(EntityArtefato $parent, EntityArtefato $child)
 {
     $entityArtefatoVinculo = $this->findOneBy(array('sqArtefatoPai' => $parent->getSqArtefato(), 'sqArtefatoFilho' => $child->getSqArtefato()));
     if (!$entityArtefatoVinculo instanceof \Sgdoce\Model\Entity\ArtefatoVinculo) {
         throw new \Core_Exception_ServiceLayer("Não foi possível recuperar a informação do vinculo. Tente novamente mais tarde");
     }
     $entityUltimoTramiteParent = $this->_getRepository('app:VwUltimoTramiteArtefato')->find($parent->getSqArtefato());
     $dtTramiteParent = $entityUltimoTramiteParent->getDtTramite();
     $dtVinculo = $entityArtefatoVinculo->getDtVinculo();
     // Se o artefato pai estiver na área de trabalho do usuário, poderá prosseguir com a operação.
     $isInMyDashboard = $this->getServiceLocator()->getService('Artefato')->inMyDashboard($parent->getSqArtefato());
     if (!$isInMyDashboard) {
         /* Returns -1 if earlier, 0 if equal and 1 if later.
          *
          * se dtTramiteParent > dtVinculo não pode desfazer
          */
         if ($dtTramiteParent->compare($dtVinculo) !== -1 && !\Zend_Registry::get('isUserSgi')) {
             throw new \Core_Exception_ServiceLayer_Verification("A data do vinculo é anterior à data do último trâmite. Este vinculo só pode ser desfeito pelo SGI");
         }
     }
 }
Example #12
0
 /**
  *
  * @param \Sgdoce\Model\Entity\Artefato $entityArtefato
  * @return \Arquivo\Service\CaixaArtefato
  * @throws \Core_Exception_ServiceLayer_Verification
  */
 private function _checkArtefatoEmprestado(\Sgdoce\Model\Entity\Artefato $entityArtefato)
 {
     $entityVwUltimoHistoricoCaixaArquivo = $this->_getRepository('app:VwUltimoHistoricoCaixaArquivo')->findOneBy(array('sqArtefato' => $entityArtefato->getSqArtefato()));
     if ($entityVwUltimoHistoricoCaixaArquivo->getEmprestimo()) {
         throw new \Core_Exception_ServiceLayer_Verification('mensagem para quando o artefato estiver emprestado');
     }
     return $this;
 }