コード例 #1
0
ファイル: Pessoa.php プロジェクト: sgdoc/sgdoce-codigo
 /**
  * Adiciona parametros para realizar o filtro da grid
  * @param \Doctrine\ORM\QueryBuilder $query
  * @param \Core_Dto_Abstract $dto
  */
 public function addWhere(\Doctrine\ORM\QueryBuilder $query, \Core_Dto_Abstract $dto)
 {
     $inputs = array('tp.sqTipoPessoa' => $dto->getSqTipoPessoa(), 'pf.nuCpf' => $dto->getNuCpf(), 'pj.nuCnpj' => $dto->getNuCnpj(), 'p.stRegistroAtivo' => $dto->getStRegistroAtivo());
     switch ($dto->getSqTipoPessoa()) {
         case srvPessoa::SQ_TIPO_PESSOA_FISICA:
             $inputs['p.noPessoa'] = $dto->getNoPessoaFisica();
             break;
         case srvPessoa::SQ_TIPO_PESSOA_JURIDICA:
             $inputs['p.noPessoa'] = $dto->getNoPessoaJuridica();
             $inputs['nj.sqNaturezaJuridicaPai'] = $dto->getSqNaturezaJuridicaPai();
             $inputs['nj.sqNaturezaJuridica'] = $dto->getSqNaturezaJuridica();
             break;
         default:
             $inputs['p.noPessoa'] = $dto->getNoPessoaSemClass();
             break;
     }
     $countParams = 0;
     foreach ($inputs as $field => $value) {
         if ($value != '') {
             if (strstr($field, 'sq') || strstr($field, 'nu') || strstr($field, 'st')) {
                 if ($field == 'tp.sqTipoPessoa' && $value == srvPessoa::SEM_CLASSIFICACAO) {
                     $query->andWhere($this->_em->createQueryBuilder()->expr()->in('tp.sqTipoPessoa', ':expre'))->setParameter('expre', array(srvPessoa::SQ_TIPO_PESSOA_FISICA, srvPessoa::SQ_TIPO_PESSOA_JURIDICA));
                 } else {
                     $query->andWhere($field . ' = ?' . $countParams)->setParameter($countParams, \Zend_Filter::filterStatic($value, 'Digits'));
                 }
             } else {
                 $expre = $query->expr()->lower($query->expr()->trim($field));
                 $value = "%" . mb_strtolower(trim($value), 'UTF-8') . "%";
                 $query->andWhere($query->expr()->like('clear_accentuation(' . $expre . ')', $query->expr()->literal($this->translate($value))));
                 if ($dto->getSqTipoPessoa() == srvPessoa::SEM_CLASSIFICACAO || $dto->getSqTipoPessoa() == srvPessoa::SQ_TIPO_PESSOA_JURIDICA) {
                     $expre = $query->expr()->lower($query->expr()->trim('pj.noFantasia'));
                     $query->orWhere($query->expr()->like('clear_accentuation(' . $expre . ')', $query->expr()->literal($this->translate($value))));
                 }
             }
             $countParams++;
         }
     }
 }