/** * 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; }
/** * @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; }
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; }
/** * 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); }
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; }
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; }
/** * 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; }
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; }
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"); } } }
/** * * @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; }