/** * 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 para cadastrar pessoa na entidade pessoa sgdoce caso necessario * @param \Core_Dto_Search $dto */ public function validarPessoa($dto) { $criteria = array('sqPessoaCorporativo' => $dto->getSqPessoaCorporativo()); $pessoaSgdoce = $this->_getRepository('app:PessoaSgdoce')->findBy($criteria); if (!$pessoaSgdoce) { $criteria = array('sqPessoa' => $dto->getSqPessoaCorporativo()); $pessoa = $this->_getRepository('app:VwPessoa')->findBy($criteria); $pessoa = $pessoa[0]; $sqTipoPessoa = $this->_getRepository('app:VwTipoPessoa')->find($pessoa->getSqTipoPessoa()); $sqPessoaCorp = $this->_getRepository('app:VwPessoa')->find($pessoa->getSqPessoa()); $entity = new \Sgdoce\Model\Entity\PessoaSgdoce(); $entity->setNoPessoa($pessoa->getNoPessoa()); $entity->setSqTipoPessoa($sqTipoPessoa); $entity->setNoPessoa($pessoa->getNoPessoa()); $entity->setSqPessoaCorporativo($sqPessoaCorp); if ($sqPessoaCorp->getSqTipoPessoa() == \Core_Configuration::getSgdoceTipoPessoaPessoaFisica()) { $pessoa = $this->_getRepository('app:VwPessoaFisica')->find($pessoa->getSqPessoa()); $entity->setNuCpfCnpjPassaporte($pessoa->getNuCpf()); } if ($sqPessoaCorp->getSqTipoPessoa() == \Core_Configuration::getSgdoceTipoPessoaPessoaJuridica()) { $pessoa = $this->_getRepository('app:VwPessoaJuridica')->find($pessoa->getSqPessoa()); $entity->setNuCpfCnpjPassaporte($pessoa->getNuCnpj()); } $this->getEntityManager()->persist($entity); $this->getEntityManager()->flush(); } }
public function getDadosPessoa(\Core_Dto_Search $search) { $sqTipoPessoa = $search->getSqTipoPessoa(); $rsm = new \Doctrine\ORM\Query\ResultSetMapping($this->_em); $rsm->addScalarResult('sq_pessoa', 'sqPessoa', 'integer'); $rsm->addScalarResult('no_pessoa', 'noPessoa', 'string'); $query = $this->_em->createNativeQuery(NULL, $rsm); $filter = new \Zend_Filter_Digits(); if ($sqTipoPessoa == \Core_Configuration::getSgdoceTipoPessoaPessoaFisica()) { $rsm->addScalarResult('nu_cpf', 'nuCpf', 'string'); $sql = "SELECT\n p.sq_pessoa,\n p.no_pessoa,\n pf.nu_cpf\n FROM corporativo.vw_pessoa p\n JOIN corporativo.vw_pessoa_fisica pf on pf.sq_pessoa = p.sq_pessoa"; if ($search->getNuCpfCnpjPassaporte()) { $sql .= " WHERE pf.nu_cpf = :nuCpf"; $query->setParameter('nuCpf', $filter->filter($search->getNuCpfCnpjPassaporte()), 'string'); } elseif ($search->getSqPessoaCorporativo()) { $sql .= " WHERE p.sq_pessoa = :sqPessoa"; $query->setParameter('sqPessoa', $search->getSqPessoaCorporativo(), 'integer'); } $query->setSQL($sql); } if ($sqTipoPessoa == \Core_Configuration::getSgdoceTipoPessoaPessoaJuridica()) { $rsm->addScalarResult('nu_cnpj', 'nuCnpj', 'string'); $sql = 'SELECT p.sq_pessoa, p.no_pessoa, pj.nu_cnpj FROM corporativo.vw_pessoa p JOIN corporativo.vw_pessoa_juridica pj on pj.sq_pessoa = p.sq_pessoa'; if ($search->getNuCpfCnpjPassaporte()) { $sql .= ' WHERE pj.nu_cnpj = :nuCnpj'; $query->setParameter('nuCnpj', $filter->filter($search->getNuCpfCnpjPassaporte()), 'string'); } elseif ($search->getSqPessoaCorporativo()) { $sql .= " WHERE p.sq_pessoa = :sqPessoa"; $query->setParameter('sqPessoa', $search->getSqPessoaCorporativo(), 'integer'); } $query->setSQL($sql); } $result = $query->getResult(); return !empty($result) ? current($result) : array(); }
/** * método que pesquisa assinatura para preencher autocomplete * @param string $term * @return multitype:NULL */ public function searchVwUnidadeOrg(\Core_Dto_Search $dto) { $queryBuilder = $this->_em->createQueryBuilder(); $queryBuilder->select('uo')->from('app:VwUnidadeOrg', 'uo')->where('uo.sqUnidadeOrg = :sqPessoa')->setParameter('sqPessoa', $dto->getSqPessoaCorporativo()); $res = $queryBuilder->getQuery()->getArrayResult(); if (count($res)) { $out = array(); foreach ($res as $item) { $out['sqTipoPessoa'] = $item['sqTipoPessoa']; } return $out; } else { return $res; } }