Beispiel #1
0
 /**
  * Obtém os dados da pessoa
  * @return array
  */
 public function searchPessoaInterna(\Core_Dto_Abstract $dto, $limit = NULL)
 {
     $search = mb_strtolower($dto->getQuery(), 'UTF-8');
     $queryBuilder = $this->_em->createQueryBuilder();
     $where = NULL;
     if ($dto->getProcedencia() == 'interna' && !is_null($dto->getSqPessoaOrigem())) {
         $where = $queryBuilder->andWhere('vf.sqUnidadeExercicio = :unidadeExercicio');
         if ($dto->getTipoPessoa() == \Core_Configuration::getCorpTipoPessoaFisica()) {
             $pessoaOrigem = $this->getEntityManager()->getRepository('app:VwProfissional')->find($dto->getSqPessoaOrigem());
             $queryBuilder->setParameter('unidadeExercicio', $pessoaOrigem->getSqUnidadeExercicio()->getSqUnidadeOrg());
         } else {
             if ($dto->getTipoPessoa() == \Core_Configuration::getCorpTipoPessoaUnidadeOrg()) {
                 $queryBuilder->setParameter('unidadeExercicio', $dto->getSqPessoaOrigem());
             }
         }
     }
     $field = $queryBuilder->expr()->lower($queryBuilder->expr()->trim('p.noPessoa'));
     $query = $queryBuilder->select('p.sqPessoa,p.noPessoa')->distinct()->from('app:VwProfissional', 'vf')->innerJoin('vf.sqPessoa', 'p')->andWhere($queryBuilder->expr()->like('clear_accentuation(' . $field . ')', $queryBuilder->expr()->literal($this->removeAccent('%' . $search . '%'))));
     if ($where) {
         $where;
     }
     if ($limit) {
         $query->setMaxResults($limit);
     }
     $query->orderBy('p.noPessoa');
     $res = $query->getQuery()->execute();
     $out = array();
     foreach ($res as $item) {
         $out[$item['sqPessoa']] = $item['noPessoa'];
     }
     return $out;
 }