/**
  * método que adiciona a clausula where
  * @param query
  * @return query
  */
 public function addWhere(\Doctrine\ORM\QueryBuilder &$query, \Core_Dto_Search $search, $nuCpfCnpjPassaporte)
 {
     $sqPessoa = $search->getSqPessoaCorporativo() ?: $search->getSqPessoa();
     if ($sqPessoa) {
         $query->andWhere('p.sqPessoa = :sqPessoa')->setParameter('sqPessoa', $sqPessoa);
     }
     switch ($search->getSqTipoPessoa()) {
         case \Core_Configuration::getSgdoceTipoPessoaPessoaFisica():
             $passaporte = $this->getDocumento();
             $query->leftJoin('p.sqPessoaFisica', 'pf');
             //passar cpf ou passaporte , passa parametro
             if ($nuCpfCnpjPassaporte != '') {
                 if ($search->getSqNacionalidade() == '1') {
                     $query->andWhere('pf.nuCpf = :nuCpf')->setParameter('nuCpf', $nuCpfCnpjPassaporte);
                 } else {
                     $query->leftJoin("p.sqPessoaDocumento", "d", "WITH", "d.sqAtributoTipoDocumento = :sqAtributoTipoDocumento")->setParameter("sqAtributoTipoDocumento", $passaporte['sqAtributoTipoDocumento'])->andWhere('pf.sqNacionalidade <> :sqNacionalidade')->setParameter('sqNacionalidade', '1')->andWhere('d.txValor = :txValor')->setParameter('txValor', $nuCpfCnpjPassaporte);
                 }
             }
             break;
         case \Core_Configuration::getSgdoceTipoPessoaPessoaJuridica():
             $query->leftJoin('p.sqPessoaJuridica', 'pj');
             if ($nuCpfCnpjPassaporte != '') {
                 $query->andWhere('pj.nuCnpj = :nuCnpj')->setParameter('nuCnpj', $nuCpfCnpjPassaporte);
             }
             break;
         case \Core_Configuration::getSgdoceTipoPessoaMinisterioPublico():
             $query->leftJoin('p.sqUnidadeOrgInterna', 'ui');
             $query->leftJoin('p.sqRppn', 'rpn');
             break;
         case \Core_Configuration::getSgdoceTipoPessoaOutrosOrgaos():
             $query->leftJoin('p.sqUnidadeOrgExterna', 'ue');
             break;
     }
 }
Beispiel #2
0
 /**
  * método que retorna os dados da pessoa
  * @param dto Search
  * @return array
  */
 public function getPessoaDados(\Core_Dto_Search $search)
 {
     $filter = new \Zend_Filter_Digits();
     $select = 'p';
     $nuCpfCnpjPassaporte = '';
     if ($search->getNuCpfCnpjPassaporte()) {
         $nuCpfCnpjPassaporte = $filter->filter($search->getNuCpfCnpjPassaporte());
     }
     switch ($search->getSqTipoPessoa()) {
         case \Core_Configuration::getSgdoceTipoPessoaPessoaFisica():
             if ($search->getSqNacionalidade() == \Sgdoce_Constants::NACIONALIDADE_BRASILEIRA) {
                 $select = 'p,pf';
             } else {
                 if ($nuCpfCnpjPassaporte != '') {
                     $select = 'p,pf,d';
                 } else {
                     $select = 'p,pf';
                 }
             }
             break;
         case \Core_Configuration::getSgdoceTipoPessoaPessoaJuridica():
             $select = 'p,pj';
             break;
         case \Core_Configuration::getSgdoceTipoPessoaMinisterioPublico():
         case \Core_Configuration::getSgdoceTipoPessoaOutrosOrgaos():
             $select = 'p';
             break;
     }
     $query = $this->_em->createQueryBuilder()->select($select)->from($this->_enName, 'p');
     $this->addWhere($query, $search, $nuCpfCnpjPassaporte);
     $result = $query->getQuery()->execute();
     return $result ? $result[0] : $result;
 }