/** * Join para obter Pessoas por Nome * @param PessoaFisicaValueObject $voPessoaFisica */ public function findByCpf(PessoaFisicaValueObject $voPessoaFisica) { try { /* * SELECT * * FROM pessoa as ps * INNER JOIN pessoa_fisica as pf USING (sq_pessoa) * WHERE nu_cpf = '69905231153' * */ # obtem a entidade com base na anotacao $ePessoa = $this->getEntity(array('pe' => $this->annotation()->load()->class)); # cria entidade pessoa_fisica $ePessoaFisica = $this->getEntity(array('pf' => $voPessoaFisica)); # cria objeto de consulta baseando-se em email $query = $this->getQuery($ePessoa)->join($ePessoaFisica, $ePessoa->column('sqPessoa')->equals($ePessoaFisica->column('sqPessoa')))->where($ePessoaFisica->column('nuCpf')->equals($voPessoaFisica->getNuCpf())); # executa query return $this->execute($query); } catch (IllegalArgumentException $iae) { throw new PersistException(self::INVALID_PARAMETER); } catch (\Exception $exp) { throw new PersistException(self::UNEXPECTED_EXCEPTION); } }
/** * Obtem Emails por CPF * @param PessoaFisicaValueObject $voPessoaFisica */ public function findByCpf(PessoaFisicaValueObject $voPessoaFisica) { try { /* * SELECT tx_email * FROM email AS em * INNER JOIN pessoa_fisica AS pf USING (sq_pessoa) * WHERE nu_cpf = ?; * */ # obtem a entidade com base na anotacao $eEmail = $this->getEntity(array('em' => $this->annotation()->load()->class)); # cria entidade pessoa_fisica $ePessoaFisica = $this->getEntity(array('pf' => $voPessoaFisica)); # cria objeto de consulta baseando-se em email $query = $this->getQuery($eEmail)->join($ePessoaFisica, $eEmail->column('sqPessoa')->equals($ePessoaFisica->column('sqPessoa')))->where($ePessoaFisica->column('nuCpf')->equals($voPessoaFisica->getNuCpf())); # executa query return $this->execute($query); } catch (IllegalArgumentException $iae) { throw new PersistException('Um ou mais paramentros informados para na montagem da query foi avaliado como inválido'); } catch (\Exception $exp) { throw new PersistException('Um erro inesperado ocorreu ao tentar executar a recuperação dos dados'); } }
/** * @example PessoaFisicaBusiness::updatePessoaFisica * @code * <?php * # cria filtro usado pelo Pessoa Fisica * $pessoaVO = ValueObjectAbstract::factory('fullnamespace'); * $pessoaFisicaVO = ValueObjectAbstract::factory('fullnamespace'); * # outra forma de utilizar * # $pessoaVO = PessoaValueObject::factory(); * # $pessoaFisicaVO = PessoaFisicaValueObject::factory(); * $pessoaFisicaVO->setNuCpf('12345678909'); * * # efetua pesquisa * $pessoaBusiness = PessoaFisicaBusiness::factory(); * $pessoaBusiness->updatePessoaFisica($pessoaVO, $pessoaFisicaVO); * ?> * @endcode * * @param PessoaValueObject $voPessoa * @param PessoaFisicaValueObject $voPessoaFisica * @throws BusinessException */ public function updatePessoaFisica(PessoaValueObject $voPessoa, PessoaFisicaValueObject $voPessoaFisica) { try { $voPessoaFisicaClone = clone $voPessoaFisica; # retira a máscara do CPF $voPessoaFisica->setNuCpf(preg_replace("/\\D+/", "", $voPessoaFisica->getNuCpf())); # efetua validação $this->_validatePessoaFisica($voPessoa, $voPessoaFisica); $sqPessoa = $voPessoa->getSqPessoa(); BusinessException::throwsExceptionIfParamIsNull($sqPessoa, self::REQUIRED_SQ_PESSOA); $voTmp = PessoaBusiness::factory(NULL, 'libcorp')->find($voPessoa->getSqPessoa()); $voPessoa->copySaveObjectData($voTmp); PessoaBusiness::factory(NULL, 'libcorp')->update($voPessoa); # Salva PessoaFisica $voPessoaTmp = self::factory(NULL, 'libcorp')->find($voPessoa->getSqPessoa()); $voPessoaFisica->copySaveObjectData($voPessoaTmp); # anula nacionalidade if (0 === $voPessoaFisicaClone->getSqNacionalidade()) { $voPessoaFisica->setSqNacionalidade(NULL); } # anula naturalidade if (0 === $voPessoaFisicaClone->getSqNaturalidade()) { $voPessoaFisica->setSqNaturalidade(NULL); } $this->getModelPersist('libcorp')->update($voPessoaFisica); return $voPessoaFisica; } catch (ModelException $mExcp) { throw new BusinessException($mExcp->getMessage(), $mExcp->getCode()); } }