/** * Método que lista todas as unidades de acordo com o usuário logado * * @param Filtros $filtros Objeto do sistema de filtros * @param Usuario $usrFiltros Caso seja informado, usa este usuário para a filtragem * * @return ResultSetHydrator Um objeto contendo a resposta da consulta */ public function listar(Filtros $filtros, Usuario $usrFiltros = null) { $sqlUnidade = new SqlUnidade(); //Definindo o usuário para a filtragem if ($usrFiltros instanceof Usuario) { $usuario = $usrFiltros; } else { $usuario = $this->usuarioLogado; } //Fazendo a consulta de acordo com o usuário logado switch ($usuario->getPerfil()->getId()) { case Perfil::ALUNO: //Lista as unidades do aluno logado $aluno = new Aluno($usuario->getId()); return $sqlUnidade->deAluno($aluno); case Perfil::RESPONSAVEL: //Lista as unidades do responsável logado $responsavel = new Responsavel($usuario->getId()); return $sqlUnidade->deResponsavel($responsavel); case Perfil::PROFESSOR: //Lista de unidades do professor logado $professor = new Professor($usuario->getId()); return $sqlUnidade->deProfessor($professor); case Perfil::COORDENADOR: //Listando as unidades do coordenador logado $coordenador = new Coordenador($usuario->getId()); return $sqlUnidade->deCoordenador($coordenador); default: //Lista todas as unidades, independente de tipo de usuário return $sqlUnidade->listarTodos(new Filtros()); } }