/** * Método que retorna os responsaveis associados ao coordenador informado * * @param Coordenador $coordenador O coordenador usado como filtro * @param Filtros $filtros Objeto do sistema de filtros * * @return ResultSetHydrator Retorna um objeto contendo a resposta da consulta */ public function deCoordenador(Coordenador $coordenador, Filtros $filtros) { $sqlFuncUsuario = new SqlFuncaoUsuario(); $sqlPerfil = new SqlPerfil(); $where = "public.usuario_tipo_vin.fk_usuario={$coordenador->getId()}"; $selAlunos = new Select("public.usuario_aluno"); $selAlunos->columns(array("pk_aluno" => "public.usuario_aluno.fk_usuario"))->join("public.turma_vin", array("fk_turma" => "public.usuario_aluno.fk_turma"))->join("public.coordenacao", array("pk_coordenacao" => "fk_coordenacao"))->join("public.coordenacao_vin", array("fk_coordenacao" => "pk_coordenacao"))->join("public.usuario_tipo_vin", array("pk_usuario_tipo_vin" => "fk_usuario_tipo_vin")); $this->filtrosUEST($selAlunos, $where, $filtros, "public.turma_vin.fk_turma"); $select = new Select(array("alunos" => $selAlunos->where($where))); //Retornando a consulta return $this->tg->selectObj($select->import($this->select(), array("colunas"))->join("public.usuario_aluno", array("fk_usuario" => "pk_aluno"))->join("public.usuario_responsavel_vin", array("fk_usuario_aluno" => "pk_usuario_aluno"))->join("public.usuario_responsavel", array("pk_usuario_responsavel" => "fk_usuario_responsavel"))->join("public.usuario", array("pk_usuario" => "public.usuario_responsavel.fk_usuario"))->join('public.funcao_usuario', array('pk_funcao_usuario' => "{$this->tg->getTabela()}.fk_funcao_usuario"), Join::LEFT_JOIN)->import($sqlFuncUsuario->select())->join('public.usuario_tipo_vin', array('fk_usuario' => 'pk_usuario'))->join('public.tipo_usuario', array('pk_tipo_usuario' => 'public.usuario_tipo_vin.fk_tipo_usuario'))->import($sqlPerfil->select())->distinct("public.usuario.pk_usuario")); }