public function comboProfile(\Core_Dto_Mapping $dto, $inFuncionalidade = TRUE) { $queryBuilder = $this->_em->createQueryBuilder(); $queryBuilder->select('p.sqPerfil', 'p.noPerfil')->from('app:Perfil', 'p')->innerJoin('p.sqSistema', 's')->where('p.stRegistroAtivo = :stRegistroAtivo')->setParameter('stRegistroAtivo', 'TRUE'); if ($inFuncionalidade) { $queryBuilder->leftJoin('p.sqPerfilFuncionalidade', 'pf'); } if ($dto->getSqSistema() !== '') { $queryBuilder->andWhere('p.sqSistema = :sqSistema')->setParameter('sqSistema', $dto->getSqSistema()); } if ($dto->getInPerfilExterno() == '1') { $queryBuilder->andWhere($queryBuilder->expr()->eq('p.inPerfilExterno', ':perfilExterno')); $queryBuilder->setParameter('perfilExterno', 'TRUE'); } else { if ($dto->getInPerfilExterno() == '0') { $queryBuilder->andWhere($queryBuilder->expr()->eq('p.inPerfilExterno', ':perfilExterno')); $queryBuilder->setParameter('perfilExterno', 'FALSE'); } } return $queryBuilder->getQuery()->getArrayResult(); }
public function countPerfil(\Core_Dto_Mapping $mapping) { $queryBuilder = $this->_em->createQueryBuilder(); $queryBuilder->select('COUNT(up.sqPerfil)')->from($this->_entityName, 'up')->where($queryBuilder->expr()->eq('up.sqUsuario', ':usuario'))->setParameter('usuario', $mapping->getUsuario()); return $queryBuilder->getQuery()->getSingleScalarResult(); }
protected function interessadoInterno(\Core_Dto_Mapping $dto) { $pessoa = new \Sgdoce\Model\Entity\Pessoa(); $pessoaFuncao = new \Sgdoce\Model\Entity\PessoaFuncao(); $artefato = new \Sgdoce\Model\Entity\Artefato(); $tipoPessoa = new \Sgdoce\Model\Entity\VwTipoPessoa(); $artefato->setSqArtefato($dto->getSqArtefato()); if ($dto->getUnidFuncionario() == 'funcionario') { $vwPessoa = $this->getServiceLocator()->getService('VwPessoa')->find($dto->getFuncIcmbio()); $tipoPessoa->setSqTipoPessoa(\Core_Configuration::getSgdocTipoPessoaPessoaFisica()); // $estadoCivil = new VwEstadoCivil(); // $estadoCivil->setSqEstadoCivil($vwPessoa->getSqPessoaFisica()->getSqEstadoCivil()); // $pessoa->setSqEstadoCivil($estadoCivil); $pessoa->setNoProfissao($vwPessoa->getSqPessoaFisica()->getNoProfissao()); // $pessoa->setNoMae($wvPessoa->getSqPessoaFisica()->getNoMae()); } else { $vwPessoa = $this->getServiceLocator()->getService('VwPessoa')->find($dto->getUnidIcmbio()); $tipoPessoa->setSqTipoPessoa(\Core_Configuration::getSgdocTipoPessoaMinisterioPublico()); } $pessoaFuncao->setSqPessoaFuncao(\Core_Configuration::getSgdocPessoaFuncaoInteressado()); $pessoa->setSqArtefato($artefato); $pessoa->setSqPessoaFuncao($pessoaFuncao); $pessoa->setNoPessoa($vwPessoa->getNoPessoa()); $pessoa->setSqTipoPessoa($tipoPessoa); if ($vwPessoa->getSqTelefone()->count()) { $pessoa->setNuTelefone($vwPessoa->getSqTelefone()->first()->getNuTelefone()); } if ($vwPessoa->getSqEndereco()->count()) { $pessoa->setCoCep($vwPessoa->getSqEndereco()->first()->getSqCep()); $pessoa->setTxEndereco($vwPessoa->getSqEndereco()->first()->getTxEndereco()); $pessoa->setNuNumeroEndereco($vwPessoa->getSqEndereco()->first()->getNuEndereco()); $pessoa->setTxComplemento($vwPessoa->getSqEndereco()->first()->getTxComplemento()); $pessoa->setNoBairro($vwPessoa->getSqEndereco()->first()->getNoBairro()); // $municipio = new VwMunicipio(); // $municipio->setSqMunicipio($vwPessoa->getSqEndereco()->first()->getSqMunicipio()); // $pessoa->setSqMunicipioEndereco($municipio); } if ($vwPessoa->getSqEmail()->count()) { $pessoa->setTxEnderecoEletronico($vwPessoa->getSqEmail()->first()->getTxEmail()); } $pessoa->setSqPessoaCorporativo($vwPessoa); $qtdNuHistorico = $this->getServiceLocator()->getService('pessoa')->getNextNuHistoricoPessoaByEntity($pessoa); $pessoa->setNuHistoricoPessoa($qtdNuHistorico); //@todo rever sequencial $unidade = \Core_Integration_Sica_User::get(); $unidade = $this->getServiceLocator()->getService('UnidadeOrg')->find($unidade->sqUnidadeOrg); $pessoa->setNoUnidadeOrg($unidade->getNoUnidadeOrg()); $metadata = $this->getEntityManager()->getClassMetadata(get_class($pessoa)); $uow = $this->getEntityManager()->getUnitOfWork(); foreach ($metadata->associationMappings as $field => $prop) { $value = $metadata->reflFields[$field]->getValue($pessoa); if (is_object($value)) { $metadataAssoc = $this->getEntityManager()->getClassMetadata(get_class($value)); $idsFk = $metadataAssoc->getIdentifierValues($value); if ($idsFk) { $uow->registerManaged($value, $idsFk, array()); $uow->removeFromIdentityMap($value); } } } $eManger = $this->getEntityManager(); $eManger->persist($pessoa); $eManger->flush(); }
public function deleteProfile(\Core_Dto_Mapping $mapping) { $criteria = array('sqUsuarioExterno' => $mapping->getUsuario(), 'sqPerfil' => $mapping->getPerfil()); $perfis = $this->_getRepository('app:UsuarioExternoPerfil')->findBy($criteria); foreach ($perfis as $perfil) { $this->getEntityManager()->remove($perfil); $this->getEntityManager()->flush(); } if (!$this->getServiceLocator()->getService('UsuarioExternoPerfil')->findBy(array('sqUsuarioExterno' => $mapping->getUsuario()))) { $entity = $this->find($mapping->getUsuario()); $entity->setStRegistroAtivo(\Core_Configuration::getSicaeUsuarioExtStRegistroInativo()); $this->getEntityManager()->persist($entity); $this->getEntityManager()->flush($entity); } }
public function toggleStatus(\Core_Dto_Mapping $dto) { return $this->_getRepository()->toggleStatus($dto->getId(), $dto->getStatus()); }
public function deleteProfile(\Core_Dto_Mapping $mapping) { $criteria = array('sqUsuario' => $mapping->getUsuario(), 'sqUnidadeOrgPessoa' => $mapping->getUnidade(), 'sqPerfil' => $mapping->getPerfil()); $perfis = $this->_getRepository('app:UsuarioPerfil')->findBy($criteria); foreach ($perfis as $perfil) { $this->getEntityManager()->remove($perfil); $this->getEntityManager()->flush(); } if (!$this->getServiceLocator()->getService('UsuarioPerfil')->findBy(array('sqUsuario' => $mapping->getUsuario()))) { $entity = $this->find($mapping->getUsuario()); $this->getEntityManager()->persist($entity); $this->getEntityManager()->flush($entity); } }
/** * método para persistencia - Grau de Acesso * @param \Core_Dto_Search $dto */ public function alterarArtefato($dto) { $sqTipoDocumento = $this->_getRepository('app:TipoDocumento')->find($dto->getSqTipoDocumento()); $criteria = array('sqAssunto' => $dto->getSqAssunto(), 'sqTipoArtefato' => \Core_Configuration::getSgdoceTipoArtefatoDossie()); $sqTipoArtefatoAssunto = $this->_getRepository('app:TipoArtefatoAssunto')->findBy($criteria); $entity = $this->_getRepository('app:Artefato')->find($dto->getSqArtefato()); $entity->setNuArtefato($dto->getNuArtefato()); $entity->setSqTipoDocumento($sqTipoDocumento); $entity->setTxAssuntoComplementar($dto->getTxAssuntoComplementar()); $entity->setSqTipoArtefatoAssunto($this->_getRepository('app:TipoArtefatoAssunto')->find($sqTipoArtefatoAssunto[0]->getSqTipoArtefatoAssunto())); $entityArtefatoDossie = $this->_getRepository('app:ArtefatoDossie')->find($dto->getSqArtefato()); if (!$entityArtefatoDossie) { $entityArtefatoDossie = new \Sgdoce\Model\Entity\ArtefatoDossie(); } $entityArtefatoDossie->setNoTitulo($dto->getNoTitulo()); $entityArtefatoDossie->setTxObservacao($dto->getTxObservacao()); $entityArtefatoDossie->setSqArtefato($entity); $this->getEntityManager()->persist($entityArtefatoDossie); $this->getEntityManager()->flush($entityArtefatoDossie); //Persistir PessoaAssinanteArtefato $this->persistPessoaAssinanteArtefato($entity, $dto); self::_salvaOrigem($entity, $dto); // RN - Caso não exista Grau de Acesso ao Artefato sera por default publico(1) if (!$dto->getSqGrauAcesso()) { $data = array('sqGrauAcesso' => \Core_Configuration::getSgdoceGrauAcessoPublico()); $dto = new \Core_Dto_Mapping($data, array_keys($data)); $sqGrauAcesso = $this->_getRepository('app:GrauAcesso')->find($dto->getSqGrauAcesso()); } else { $sqGrauAcesso = $this->_getRepository('app:GrauAcesso')->find($dto->getSqGrauAcesso()); } // realizando a persistencia do Grau de Acesso $test = $this->persistGrauAcessoArtefato($entity, $sqGrauAcesso); $this->getEntityManager()->persist($entity); $this->getEntityManager()->flush($entity); }
/** * Metódo que realiza o post Save. * @param Object $entity * @param Object $dto */ public function postSave($entity, $dto = NULL) { try { // RN - Caso não exista Grau de Acesso ao Artefato sera por default publico(1) if (!$dto->getSqGrauAcesso()) { $data = array('sqGrauAcesso' => \Core_Configuration::getSgdoceGrauAcessoPublico()); $dtoAcesso = new \Core_Dto_Mapping($data, array_keys($data)); $sqGrauAcesso = $this->_getRepository('app:GrauAcesso')->find($dtoAcesso->getSqGrauAcesso()); } else { $sqGrauAcesso = $this->_getRepository('app:GrauAcesso')->find($dto->getSqGrauAcesso()); } // realizando a persistencia do Grau de Acesso $this->getServiceLocator()->getService('Dossie')->persistGrauAcessoArtefato($entity, $sqGrauAcesso); $strMessage = NULL; if ($this->_firstTramite) { $strMessage = $this->getServiceLocator()->getService('HistoricoArtefato')->getMessage('MH005', $entity->getDtCadastro()->get(\Zend_Date::DATETIME_MEDIUM), \Core_Integration_Sica_User::getUserName()); $nuOcorrencia = \Core_Configuration::getSgdoceSqOcorrenciaCadastrar(); } else { $strMessage = $this->getServiceLocator()->getService('HistoricoArtefato')->getMessage('MH006', \Zend_Date::now()->get(\Zend_Date::DATETIME_MEDIUM), \Core_Integration_Sica_User::getUserName()); $nuOcorrencia = \Core_Configuration::getSgdoceSqOcorrenciaAlterar(); } $this->getServiceLocator()->getService('HistoricoArtefato')->registrar($entity->getSqArtefato(), $nuOcorrencia, $strMessage); // verificando atributo // noResponsavelAssinatura vem o sqPessoa selecionado no autocomplete if ($dto->getNoResponsavelAssinatura() != NULL) { /** * em caso de update de documento de origem externa ou com tipo de documento sem assinatura e que não tiver assinante * efetua a exclusão caso ja tenha sido preenchido * anteriormente */ if ($entity->getSqArtefato() && !$dto->getNoResponsavelAssinatura()) { $this->_checkExcluirAssinante($entity, $dto); } else { $sqPessoaResponsavelAssinatura = $dto->getNoResponsavelAssinatura_hidden() ? $dto->getNoResponsavelAssinatura_hidden() : $dto->getNoResponsavelAssinatura(); $noPessoaResponsavelAssinatura = $dto->getNoResponsavelAssinatura_autocomplete() ? $dto->getNoResponsavelAssinatura_autocomplete() : $dto->getNoResponsavelAssinatura(); if (!is_numeric($sqPessoaResponsavelAssinatura)) { throw new \Core_Exception_ServiceLayer_Verification('Ocorreu um erro na identificação do assintante do documento. ' . "Preencha o campo <b>Assinatura</b> novamente."); } $entityPessoa = $this->pessoaCorporativoSgdoce($sqPessoaResponsavelAssinatura, $noPessoaResponsavelAssinatura); $pessoaArtefato = $this->getServiceLocator()->getService('Artefato')->cadastrarPessoaArtefato($entity, $entityPessoa, \Core_Configuration::getSgdocePessoaFuncaoAssinatura()); $this->getEntityManager()->persist($pessoaArtefato); $this->getEntityManager()->flush($pessoaArtefato); // verificando se existe registro em PessoaAssinanteArtefato if ($dto->getProcedenciaInterno() != 'externo') { //só quando é unidade if ($dto->getSqPessoaOrigem() != '') { $sqPessoaOrigem = NULL; } else { $sqPessoaOrigem = $dto->getSqPessoaIcmbio(); } $pessoaUnidadeOrg = $this->hasPessoaUnidadeOrg($entityPessoa, $dto->getNoPessoaFuncaoAssinante(), $sqPessoaOrigem); $criteria = array('sqArtefato' => $entity->getSqArtefato()); $entPessoaAssinante = $this->_getRepository('app:PessoaAssinanteArtefato')->findOneBy($criteria); // verificando se existe registro if (count($entPessoaAssinante)) { // atualizando PessoaAssinanteArtefato $entPessoaAssinante->setSqPessoaUnidadeOrg($pessoaUnidadeOrg); if ($dto->getNoPessoaFuncaoAssinante() != $entPessoaAssinante->getNoCargoAssinante()) { $entPessoaAssinante->setNoCargoAssinante($dto->getNoPessoaFuncaoAssinante()); } } else { // Preparando Entidade para salvar /** @var PessoaAssinanteArtefato $resPessoaAssinante */ $entPessoaAssinante = $this->_newEntity('app:PessoaAssinanteArtefato'); // $entPessoaAssinante->setSqArtefato($this->_getRepository('app:Artefato')->find($entity->getSqArtefato())); $entPessoaAssinante->setSqArtefato($entity); $entPessoaAssinante->setSqPessoaUnidadeOrg($pessoaUnidadeOrg); $entPessoaAssinante->setNoCargoAssinante($dto->getNoPessoaFuncaoAssinante()); } // salvando PessoaAssinanteArtefato $this->getEntityManager()->persist($entPessoaAssinante); $this->getEntityManager()->flush($entPessoaAssinante); } } } else { /** * em caso de update de documento de origem externa e não tiver assinante efetua a exclusão caso ja tenha sido preenchido * anteriormente */ $this->_checkExcluirAssinante($entity, $dto); } //sqPrazo = 1 (data) e sqPrazo = 2 (dias) $entity->setDtPrazo($dto->getSqPrazo() == 2 ? NULL : $dto->getDtPrazo() != '' ? $dto->getDtPrazo() : NULL); $entity->setNuDiasPrazo($dto->getNuDiasPrazo() == '' ? NULL : $dto->getNuDiasPrazo()); //Tira os Espaços do 'enter' para salvar com 250 caracteres $txAssuntoComplementar = $this->getServiceLocator()->getService('MinutaEletronica')->fixNewlines($entity->getTxAssuntoComplementar()); $entity->setTxAssuntoComplementar(!$txAssuntoComplementar ? NULL : $txAssuntoComplementar); // salvando Origem e Destino self::salvaOrigemDestino($entity, $dto); if ($entity->getNuDigital() && !$entity->getNuDigital() instanceof \Sgdoce\Model\Entity\EtiquetaNupSiorg) { $entityEtiquetaNupSiorg = $this->getEntityManager()->getPartialReference('app:EtiquetaNupSiorg', $entity->getNuDigital()); $entity->setNuDigital($entityEtiquetaNupSiorg); } // persistindo informacao $this->getEntityManager()->persist($entity); $this->getEntityManager()->flush($entity); /* * ##### INTERESSADO ##### * * só é postado no create, em caso de edit os interessados são * manutenidos no proprio formulario * */ if ($dto->getDataInteressado()) { $dataIntessado = $dto->getDataInteressado(); foreach ($dataIntessado->getApi() as $method) { $line = $dataIntessado->{$method}(); //metodo foi copiado e adaptado de Artefato_PessoaController::addInteressadoAction() $add = $this->addInteressado(array('noPessoa' => $line->getNoPessoa(), 'unidFuncionario' => $line->getUnidFuncionario(), 'sqPessoaCorporativo' => $line->getSqPessoaCorporativo(), 'sqTipoPessoa' => $line->getSqTipoPessoa(), 'sqPessoaFuncao' => $line->getSqPessoaFuncao(), 'sqArtefato' => $entity->getSqArtefato())); if (!$add) { throw new \Core_Exception_ServiceLayer($line->getNoPessoa() . ' já é um interessado deste documento.'); } } } /* * ##### REFERÊNCIA (VINCULO) ##### * * só é postado no create, em caso de edit os vinculos são * manutenidos no proprio formulario * */ if ($dto->getDataVinculo()) { //só é postado no create $dataVinculo = $dto->getDataVinculo(); foreach ($dataVinculo->getApi() as $method) { $gridLine = $dataVinculo->{$method}(); //metodo foi copiado e adaptado de Artefato_DocumentoController::addDocumentoEletronicoAction() $add = $this->addVinculo(array('nuDigital' => $gridLine->getNuDigital(), 'nuArtefatoVinculacao' => $gridLine->getNuArtefatoVinculacao(), 'sqTipoArtefato' => $gridLine->getSqTipoArtefato(), 'sqArtefato' => $entity->getSqArtefato(), 'tipoVinculo' => \Core_Configuration::getSgdoceTipoVinculoArtefatoReferencia(), 'inOriginal' => $gridLine->getInOriginal())); if (!$add) { $msg = "A digital <b>{$gridLine->getNuDigital()}</b> já esta vinculada a este documento"; if ($gridLine->getSqTipoArtefato() == \Core_Configuration::getSgdoceTipoArtefatoProcesso()) { $msg = "O processo <b>{$gridLine->getNuArtefatoVinculacao()}</b> já esta vinculado a este documento"; } throw new \Core_Exception_ServiceLayer($msg); } } } #processar anexos para SIC if (true === (bool) $dto->getIsSic() && (int) $dto->getUploader_count() > 0) { $this->_processaAnexoSIC($entity, $dto); } if ($this->_firstTramite) { $this->getServiceLocator()->getService('TramiteArtefato')->insertFirstTramite($entity->getSqArtefato()); } } catch (\Exception $e) { $this->getEntityManager()->getConnection()->rollback(); throw $e; } }
/** * * @param \Core_Dto_Mapping $dto */ public function order(\Core_Dto_Mapping $dto) { $entity = $this->_getRepository()->find($dto->getSqMenu()); if ($entity->getSqMenuPai() !== NULL) { $sqMenuPai = $entity->getSqMenuPai()->getSqMenu(); } else { $sqMenuPai = NULL; } $criteria = array('sqMenuPai' => $sqMenuPai, 'sqSistema' => $dto->getSqSistema()); if ($dto->getDirecao() == 'up') { $criteria['nuOrdemApresent'] = $entity->getNuOrdemApresent() - 1; $entity->setNuOrdemApresent($entity->getNuOrdemApresent() - 1); $entity2 = current($this->_getRepository()->findBy($criteria)); if ($entity2) { $entity2->setNuOrdemApresent($entity2->getNuOrdemApresent() + 1); } } else { if ($dto->getDirecao() == 'down') { $criteria['nuOrdemApresent'] = $entity->getNuOrdemApresent() + 1; $entity->setNuOrdemApresent($entity->getNuOrdemApresent() + 1); $entity2 = current($this->_getRepository()->findBy($criteria)); if ($entity2) { $entity2->setNuOrdemApresent($entity2->getNuOrdemApresent() - 1); } } } $entityManager = $this->getEntityManager(); $entityManager->persist($entity); if ($entity2) { $entityManager->persist($entity2); } $entityManager->flush(); $menusDown = $this->_getRepository()->findMenuBySystemAndPai($dto->getSqSistema(), NULL, $entity->getSqMenuPai() !== NULL ? $entity->getSqMenuPai()->getSqMenu() : NULL); $indice = 1; if ($menusDown) { foreach ($menusDown as $menu) { $menu->setNuOrdemApresent($indice); $this->_getRepository()->updateNuOrdem($menu); $indice++; } } }
/** * Salva dados de endereço, telefone e email vindos do infoconv quando for cadastro de nova PJ * * @param integer $sqPessoa * @param \Core_Dto_Mapping $dto * @return \Principal\Service\PessoaJuridica */ private function _processAddressPhoneEmail($sqPessoa, \Core_Dto_Mapping $dto) { $infoconvAddress = $dto->getAddress_infoconv(); $infoconvPhone = $dto->getPhone_infoconv(); $infoconvEmail = $dto->getEmail_infoconv(); if ($infoconvAddress) { $infoconvAddress = json_decode(str_replace('\\', '', $infoconvAddress)); $addressMethod = 'libCorpSaveEndereco'; $addressRepository = 'app:Endereco'; $addressFilters = array('sqCep' => 'Digits'); $arrAddressValues = array(array('name' => 'sqPessoa', 'value' => $sqPessoa), array('name' => 'sqTipoEndereco', 'value' => \Core_Configuration::getCorpTipoEnderecoInstitucional())); $fnCropString = function ($str, $length) { if (mb_strlen($str, 'UTF-8') > $length) { $str = mb_substr($str, 0, $length, 'UTF-8'); } return $str; }; foreach ($infoconvAddress as $key => $value) { switch ($key) { case 'sqEstado': //infoconv retorno a sigla do estado if (!is_numeric($value)) { $arrEntEstado = $this->_getRepository('app:Estado')->findBySgEstado(trim($value)); if ($arrEntEstado) { $value = current($arrEntEstado)->getSqEstado(); } } break; case 'txComplemento': case 'noBairro': $value = $fnCropString($value, 100); break; case 'txEndereco': $value = $fnCropString($value, 200); break; case 'nuEndereco': $value = $fnCropString($value, 6); break; default: break; } $arrAddressValues[] = array('name' => $key, 'value' => $value); } //endforeach; //salva os dados do endereco $resultAddress = $this->saveFormWebService($addressRepository, $addressMethod, $arrAddressValues, $addressFilters); } if ($infoconvPhone) { $infoconvPhone = json_decode(str_replace('\\', '', $infoconvPhone)); $phoneMethod = 'libCorpSaveTelefone'; $phoneRepository = 'app:Telefone'; $phoneFilters = array('nuDdd' => 'Digits', 'nuTelefone' => 'Digits'); $arrPhoneValues = array(array('name' => 'sqPessoa', 'value' => $sqPessoa), array('name' => 'sqTipoTelefone', 'value' => \Core_Configuration::getCorpTipoTelefoneInstitucional())); foreach ($infoconvPhone as $key => $value) { $arrPhoneValues[] = array('name' => $key, 'value' => $value); } //endforeach; //salva os dados do telefone $resultPhone = $this->saveFormWebService($phoneRepository, $phoneMethod, $arrPhoneValues, $phoneFilters); } if ($infoconvEmail) { $infoconvEmail = json_decode(str_replace('\\', '', $infoconvEmail)); $emailMethod = 'libCorpSaveEmail'; $emailRepository = 'app:Email'; $arrEmailValues = array(array('name' => 'sqPessoa', 'value' => $sqPessoa), array('name' => 'sqTipoEmail', 'value' => \Core_Configuration::getCorpTipoEmailInstitucional())); $arrEmailValues[] = array('name' => 'txEmail', 'value' => $infoconvEmail); //salva os dados do email $resultEmail = $this->saveFormWebService($emailRepository, $emailMethod, $arrEmailValues); } return $this; }
/** * @param Core_Model_Entity_Abstract $entity * @param type $dto */ public function postInsert($entity, $dto = null, $artefatoProcesso = null, $digital = null) { $retorno = false; $this->getEntityManager()->beginTransaction(); try { // salva o artefato_processo $artefatoProcesso->setSqArtefato($entity); // Ao autuar um documento sempre vai abrir um volume, iniciando pela página um. // Adicionando um volume na linha 148 deste arquivo. $artefatoProcesso->setNuVolume(1); $artefatoProcesso->setNuPaginaProcesso(1); $this->getServiceLocator()->getService('ProcessoEletronico')->saveArtefatoProcesso($artefatoProcesso); $arrPesArtDto = array('entity' => 'Sgdoce\\Model\\Entity\\PessoaArtefato', 'mapping' => array('sqPessoaFuncao' => 'Sgdoce\\Model\\Entity\\PessoaFuncao', 'sqPessoaSgdoce' => 'Sgdoce\\Model\\Entity\\PessoaSgdoce', 'sqArtefato' => 'Sgdoce\\Model\\Entity\\Artefato')); $arrParams = array(); $arrParams['sqArtefato'] = $entity->getSqArtefato(); $arrParams['sqPessoaFuncao'] = \Core_Configuration::getSgdocePessoaFuncaoAutor(); $arrParams['sqPessoaSgdoce'] = current($this->getServiceLocator()->getService('PessoaSgdoce')->findBy(array('sqPessoaCorporativo' => \Core_Integration_Sica_User::getPersonId())))->getSqPessoaSgdoce(); $objPessoaArtefatoDto = \Core_Dto::factoryFromData($arrParams, 'entity', $arrPesArtDto); $this->getServiceLocator()->getService('PessoaArtefato')->savePessoaArtefato($objPessoaArtefatoDto); $this->_salvaOrigem($entity, $dto); // RN - Caso não exista Grau de Acesso ao Artefato sera por default publico(1) if (!$dto->getSqGrauAcesso()) { $data = array('sqGrauAcesso' => \Core_Configuration::getSgdoceGrauAcessoPublico()); $dtoAcesso = new \Core_Dto_Mapping($data, array_keys($data)); $sqGrauAcesso = $this->_getRepository('app:GrauAcesso')->find($dtoAcesso->getSqGrauAcesso()); } else { $sqGrauAcesso = $this->_getRepository('app:GrauAcesso')->find($dto->getSqGrauAcesso()); } // realizando a persistencia do Grau de Acesso $this->getServiceLocator()->getService('Dossie')->persistGrauAcessoArtefato($entity, $sqGrauAcesso); /* * ##### INTERESSADO ##### * * só é postado no create, em caso de edit os interessados são * manutenidos no proprio formulario * */ if ($dto->getDataInteressado()) { $dataIntessado = $dto->getDataInteressado(); foreach ($dataIntessado->getApi() as $method) { $line = $dataIntessado->{$method}(); //metodo foi copiado e adaptado de Artefato_PessoaController::addInteressadoAction() $add = $this->getServiceLocator()->getService('Documento')->addInteressado(array('noPessoa' => $line->getNoPessoa(), 'unidFuncionario' => $line->getUnidFuncionario(), 'sqPessoaCorporativo' => $line->getSqPessoaCorporativo(), 'sqTipoPessoa' => $line->getSqTipoPessoa(), 'sqPessoaFuncao' => $line->getSqPessoaFuncao(), 'sqArtefato' => $entity->getSqArtefato())); if (!$add) { throw new \Core_Exception_ServiceLayer($line->getNoPessoa() . ' já é um interessado deste documento.'); } } } /** * #### VOLUME #### */ $sqPessoaAbertura = \Core_Integration_Sica_User::getPersonId(); $sqUnidadeOrgAbertura = \Core_Integration_Sica_User::getUserUnit(); $entPessoaAbertura = $this->getEntityManager()->getPartialReference('app:VwPessoa', $sqPessoaAbertura); $entUnidadeOrgAbertura = $this->getEntityManager()->getPartialReference('app:VwUnidadeOrg', $sqUnidadeOrgAbertura); $entVolume = $this->_newEntity('app:ProcessoVolume'); $entVolume->setSqArtefato($entity); $entVolume->setNuVolume(1); $entVolume->setNuFolhaInicial(1); $entVolume->setDtAbertura(\Zend_Date::now()); $entVolume->setSqPessoaAbertura($entPessoaAbertura); $entVolume->setSqUnidadeOrgAbertura($entUnidadeOrgAbertura); $this->getEntityManager()->persist($entVolume); /* * ##### (PEÇA) ##### */ $this->getServiceLocator()->getService('ArtefatoVinculo')->inserirPeca(array('parent' => $entity, 'child' => $digital), \Core_Configuration::getSgdoceTipoVinculoArtefatoAutuacao()); // #HistoricoArtefato::save(); $nuDigital = $digital->getNuDigital()->getNuEtiqueta(); $dataAtual = new \Zend_Date(\Zend_Date::now()); $nuProcesso = $this->getServiceLocator()->getService("Processo")->formataProcessoAmbitoFederal($entity); $strMessage = $this->getServiceLocator()->getService('HistoricoArtefato')->getMessage('MH012', $dataAtual->get("dd/MM/yyyy HH:mm:ss"), $nuProcesso); $this->getServiceLocator()->getService('HistoricoArtefato')->registrar($entity->getSqArtefato(), \Core_Configuration::getSgdoceSqOcorrenciaCadastrar(), $strMessage); // insere tramite $this->getServiceLocator()->getService('TramiteArtefato')->insertFirstTramite($entity->getSqArtefato()); $this->getMessaging()->addSuccessMessage("Documento autuado gerando o processo " . $nuProcesso, "User"); $retorno = $this->getEntityManager()->commit(); } catch (\Exception $objException) { $this->getEntityManager()->rollback(); $this->getMessaging()->addErrorMessage("[" . $objException->getCode() . "] " . $objException->getMessage(), "User"); $retorno = $objException; } $this->getMessaging()->dispatchPackets(); return $retorno; }
public function getDataMail(\Core_Dto_Mapping $mapping, $perfis) { $tipoEmailInstituicional = \Core_Configuration::getCorpTipoEmailInstitucional(); $queryBuilder = $this->_em->createQueryBuilder(); $queryBuilder->select('p.noPessoa, e.txEmail')->from($this->_entityName, 'u')->innerJoin('u.sqPessoa', 'p')->innerJoin('p.email', 'e', 'WITH', $queryBuilder->expr()->eq('e.sqTipoEmail', ':tipoEmail'))->where($queryBuilder->expr()->eq('u.sqUsuario', ':usuario'))->setParameter('usuario', $mapping->getUsuario())->setParameter('tipoEmail', $tipoEmailInstituicional, 'integer'); $data['usuario'] = $queryBuilder->getQuery()->getSingleResult(); $queryBuilder = $this->_em->createQueryBuilder(); $arrPerfil = array(); foreach ($perfis as $value) { $arrPerfil[] = $value->getSqPerfil(); } $queryBuilder->select('p.noPerfil, s.sgSistema, s.noSistema')->from('app:UsuarioPerfil', 'up')->innerJoin('up.sqPerfil', 'p')->innerJoin('p.sqSistema', 's')->innerJoin('up.sqUnidadeOrgPessoa', 'u')->where($queryBuilder->expr()->eq('up.sqUsuario', ':usuario'))->setParameter('usuario', $mapping->getUsuario())->andWhere('u.sqUnidadeOrgPessoa = :sqUnidadeOrgPessoa')->setParameter('sqUnidadeOrgPessoa', $mapping->getUnidade())->andWhere($queryBuilder->expr()->in('p.sqPerfil', $arrPerfil)); $data['perfis'] = $queryBuilder->getQuery()->getArrayResult(); return $data; }