/** * @param \Core_Dto_Search $dto * Perfil do Usuário ex. SGI = \Core_Configuration::getSicaeTipoPerfilAdministrador() * @return QueryBuilder */ public function listUsuarioPorPerfil($dto) { $sqPerfil = null; $sql = "SELECT DISTINCT\n u.sq_usuario,\n u.sq_pessoa,\n u.st_ativo,\n pe.no_pessoa,\n p.no_perfil,\n p.in_perfil_externo\n FROM sicae.vw_usuario u\n JOIN sicae.vw_usuario_perfil up USING(sq_usuario)\n JOIN sicae.vw_perfil p USING(sq_perfil)\n JOIN corporativo.vw_pessoa pe USING(sq_pessoa)\n WHERE u.st_ativo = TRUE\n AND p.sq_perfil = :sqPerfil\n ORDER BY pe.no_pessoa"; $rsm = new \Doctrine\ORM\Query\ResultSetMapping(); $rsm->addScalarResult('sq_usuario', 'sqUsuario'); $rsm->addScalarResult('sq_pessoa', 'sqPessoa'); $rsm->addScalarResult('st_ativo', 'stAtivo'); $rsm->addScalarResult('no_pessoa', 'noPessoa'); $rsm->addScalarResult('no_perfil', 'noPerfil'); $rsm->addScalarResult('in_perfil_externo', 'inPerfilExterno'); $nativeQuery = $this->_em->createNativeQuery($sql, $rsm); $nativeQuery->setParameter('sqPerfil', $dto->getSqPerfil()); return $nativeQuery->useResultCache(TRUE, NULL, __METHOD__)->getArrayResult(); }
public function findUsers(\Core_Dto_Search $dto) { $tipoTelefoneInstituicional = \Core_Configuration::getCorpTipoTelefoneInstitucional(); $tipoEmailInstituicional = \Core_Configuration::getCorpTipoEmailInstitucional(); $queryBuilder = $this->_em->createQueryBuilder(); $queryBuilder->select('pf.nuCpf, p.noPessoa, e.txEmail, t.nuTelefone, t.nuDdd, u.stAtivo, s.sqSistema, ' . 's.noSistema, s.sgSistema, pl.noPerfil, un.noPessoa noUnidade')->from($this->_entityName, 'u')->innerJoin('u.sqPessoa', 'p')->innerJoin('p.sqPessoaFisica', 'pf')->leftJoin('p.telefone', 't', 'WITH', $queryBuilder->expr()->eq('t.sqTipoTelefone', ':tipoTelefone'))->leftJoin('p.email', 'e', 'WITH', $queryBuilder->expr()->eq('e.sqTipoEmail', ':tipoEmail'))->leftJoin('u.sqUsuarioPerfil', 'up')->leftJoin('up.sqPerfil', 'pl')->leftJoin('pl.sqSistema', 's')->leftJoin('up.sqUnidadeOrgPessoa', 'un')->setParameter('tipoTelefone', $tipoTelefoneInstituicional, 'integer')->setParameter('tipoEmail', $tipoEmailInstituicional, 'integer')->orderBy('p.noPessoa, s.sgSistema, s.noSistema')->addOrderBy('pl.noPerfil, un.noPessoa'); if ($dto->hasNuCpf()) { $cpf = \Zend_Filter::filterStatic($dto->getNuCpf(), 'Digits'); $queryBuilder->andWhere($queryBuilder->expr()->eq('pf.nuCpf', ':cpf'))->setParameter('cpf', $cpf); } if ($dto->hasNoPessoa()) { $queryBuilder->andWhere($queryBuilder->expr()->like($queryBuilder->expr()->lower('p.noPessoa'), ':pessoa'))->setParameter('pessoa', '%' . mb_strtolower($dto->getNoPessoa(), 'utf-8') . '%'); } if ($dto->hasSqUnidadeOrg() && $dto->getSqUnidadeOrg()) { $queryBuilder->andWhere($queryBuilder->expr()->eq('un.sqUnidadeOrgPessoa', ':unidade'))->setParameter('unidade', $dto->getSqUnidadeOrg()); } if ($dto->hasSqSistema()) { $queryBuilder->andWhere($queryBuilder->expr()->eq('s.sqSistema', ':sistema'))->setParameter('sistema', $dto->getSqSistema()); } if ($dto->hasSqPerfil()) { $queryBuilder->andWhere($queryBuilder->expr()->eq('pl.sqPerfil', ':perfil'))->setParameter('perfil', $dto->getSqPerfil()); } if ($dto->hasStAtivo()) { $queryBuilder->andWhere($queryBuilder->expr()->eq('u.stAtivo', ':ativo'))->setParameter('ativo', $dto->getStAtivo()); } return $queryBuilder->getQuery()->getArrayResult(); }