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(); }
/** * Método que clona a pessoa assinante * @param Sgdoce\Model\Entity\Artefato $artefato * @param Sgdoce\Model\Entity\Artefato $artefatoClone * @return Sgdoce\Model\Entity\Artefato $entityAssinanteClone */ private function savePessoaAssinanteArtefatoClone($artefato, $artefatoClone) { $criteria = array('sqArtefato' => $artefato->getSqArtefato()); $entityAssinanteArtefato = $this->_getRepository('app:PessoaAssinanteArtefato')->findBy($criteria); if (is_array($entityAssinanteArtefato)) { foreach ($entityAssinanteArtefato as $entityAssinante) { $entityAssinanteClone = clone $entityAssinante; $entityAssinanteClone->setSqArtefato($artefatoClone); $this->getEntityManager()->persist($entityAssinanteClone); $this->getEntityManager()->flush($entityAssinanteClone); } } return $entityAssinanteClone; }