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