private function atendimentosUsuario(UsuarioSessao $usuario, $servicos, $maxResults = 0, $where = '') { $builder = $this->builder()->where("e.status = :status AND su.unidade = :unidade AND s.id IN (:servicos)"); if (!empty($where)) { $builder->andWhere($where); } $this->applyOrders($builder, $usuario->getUnidade()); $query = $builder->getQuery()->setParameter('status', AtendimentoService::SENHA_EMITIDA)->setParameter('unidade', $usuario->getUnidade()->getId())->setParameter('servicos', $servicos); if ($maxResults > 0) { $query->setMaxResults($maxResults); } return $query->getResult(); }
/** * Verifica se o usuário tem acesso a um determinado módulo. * * Quando for um módulo de unidade, basta verificar se existe uma permissão * para a lotação do usuário no grupo da unidade. * * Já quando o módulo for global, verifica se existe alguma lotação para o * módulo, independente do grupo (unidade). * * @param Novosga\Model\Util\UsuarioSessao $usuario * @param Novosga\Model\Modulo $modulo */ public function hasAccess(UsuarioSessao $usuario, Modulo $modulo) { if ($modulo->isGlobal()) { // para modulos globais return $usuario->hasPermissao($modulo); } else { if (!$usuario->getUnidade()) { throw new Exception(_('Para acessar esse módulo primeiro é necessário escolher uma unidade.')); } // verificando se existe permissao para a lotacao atual do usuario $lotacao = $usuario->getLotacao(); return $usuario->hasPermissao($modulo, $lotacao->getCargo()); } }