/** * Método que lista e filtra os coordenadores cadastrados(Método temporário até que seja feito um ACL correto) * @param FiltrosSistema $filtrosSistema * @param Kernel_Models_Usuario|NULL $usuario Objeto que permite sobrescrever o controle de acesso e listar * as turmas de um determinado usuário * @return PDOStatement */ public function listarTodos(FiltrosSistema $filtrosSistema = NULL, Kernel_Models_Usuario $usuario = NULL) { $where = $inner = ""; $inner .= "inner join public.coordenacao_vin on fk_usuario_tipo_vin=pk_usuario_tipo_vin "; $inner .= "inner join public.coordenacao on pk_coordenacao=fk_coordenacao "; $inner .= "inner join public.turma_vin on public.turma_vin.fk_coordenacao=pk_coordenacao "; if ($filtrosSistema instanceof FiltrosSistema) { $inner .= "inner join public.turma on public.turma_vin.fk_turma=pk_turma "; // $where .= $filtrosSistema->validar(array("unidade")) ? "and public.coordenacao.fk_unidade=" . $filtrosSistema->getUnidade() . " " : ""; $where .= $filtrosSistema->validar(array("serie")) ? "and public.turma.fk_serie=" . $filtrosSistema->getSerie() . " " : ""; $where .= $filtrosSistema->validar(array("turma")) ? "and public.turma_vin.fk_turma=" . $filtrosSistema->getTurma() . " " : ""; $where .= $filtrosSistema->validar(array("funcao")) ? "and fk_funcao_usuario=" . $filtrosSistema->getFuncao() . " " : ""; } //Controlle de acesso if (is_null($usuario)) { $id = $this->usuarioLogado->get_idUsuario(); $tipo = $this->usuarioLogado->get_tipoUsuarioAtivo()->get_idTipoUsuario(); } else { //Sobreescrevendo o controle de acesso $id = $usuario->getId(); $tipo = $usuario->getTipo(); } switch ($tipo) { case Kernel_Models_TiposUsuario::TIPO_RESPONSAVEL: //Responsável $and = 0; foreach ($this->usuarioLogado->get_tipoUsuarioAtivo()->get_personalizacoes() as $row) { foreach ($row->get_dependentes() as $aluno) { $where .= !$and++ ? "and " : ""; $where .= "pk_usuario_aluno=" . $aluno->get_dep_pk_usuario_aluno() . " or "; } } if (substr($where, -4) == " or ") { $where = substr($where, 0, -4) . " "; } $inner .= "inner join public.usuario_aluno on " . "public.usuario_aluno.fk_turma=public.turma_vin.fk_turma "; break; default: break; } $query = "select distinct on(pk_usuario) * from public.usuario " . "left join public.funcao_usuario on fk_funcao_usuario=pk_funcao_usuario "; $query .= "inner join public.usuario_tipo_vin on fk_usuario=pk_usuario "; $query .= "inner join public.tipo_usuario on pk_tipo_usuario=fk_tipo_usuario " . "{$inner} "; $query .= "where fk_tipo_usuario=" . $this->getTipo() . " " . $where; return $this->queryStatement($query); }
/** * Método que lista todos os usuários cadastrados * @param FiltrosSistema $filtrosSistema * @param int $tipo Define a filtragem por tipo * @return PDOStatement|boolean Retorna um objeto do tipo PDOStatement ou FALSE em caso de erro */ public function listarTodos(FiltrosSistema $filtrosSistema = NULL) { $query = "select * from public.usuario " . "left join public.funcao_usuario on fk_funcao_usuario=pk_funcao_usuario "; if ($this->getTipo()) { $query .= "inner join public.usuario_tipo_vin on fk_usuario=pk_usuario "; $query .= "inner join public.tipo_usuario on pk_tipo_usuario=fk_tipo_usuario "; $query .= "where fk_tipo_usuario=" . $this->getTipo(); } //Filtrando os usuários if ($filtrosSistema instanceof FiltrosSistema) { $query .= $filtrosSistema->validar(array("funcao")) ? "and fk_funcao_usuario=" . $filtrosSistema->getFuncao() . " " : ""; } return $this->queryStatement($query); }