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