/** * Método especialmente criado para o método "distribuicao_de_atendimentos_por_familiares " * * @param Coordenador $coordenador * * @return \PDOStatement */ public function deCoordenadorDistr(Coordenador $coordenador) { $query = "SELECT pk_usuario as pk_responsavel, nome, pk_aluno FROM \n (SELECT distinct on(pk_usuario) alunos.pk_usuario as pk_aluno, alunos.pk_turma FROM \n (SELECT fk_usuario as pk_usuario, pk_turma FROM public.usuario_aluno \n\tINNER JOIN public.turma on public.turma.pk_turma=public.usuario_aluno.fk_turma\n ) as alunos \n INNER JOIN public.turma_vin on public.turma_vin.fk_turma=pk_turma \n INNER JOIN public.coordenacao on public.coordenacao.pk_coordenacao=public.turma_vin.fk_coordenacao \n INNER JOIN public.coordenacao_vin on public.coordenacao_vin.fk_coordenacao=pk_coordenacao \n INNER JOIN public.usuario_tipo_vin on public.usuario_tipo_vin.pk_usuario_tipo_vin=public.coordenacao_vin.fk_usuario_tipo_vin \n WHERE fk_usuario={$coordenador->getId()}\n ) as alunos_de_coordenador \nINNER JOIN public.usuario_aluno on public.usuario_aluno.fk_usuario=pk_aluno \nINNER JOIN public.usuario_responsavel_vin on public.usuario_responsavel_vin.fk_usuario_aluno=pk_usuario_aluno \nINNER JOIN public.usuario_responsavel on public.usuario_responsavel.pk_usuario_responsavel=fk_usuario_responsavel \nINNER JOIN public.usuario on pk_usuario=public.usuario_responsavel.fk_usuario\norder by nome"; $prepare = $this->tg->getPDO()->prepare($query); $prepare->execute(); return $prepare; }
/** * Método que retorna os atendimentos a familiares * feitos pelo coordenador informado * * @param Coordenador $coordenador O autor dos atendimentos * @param Filtros $filtros Objeto do sistema de filtros * * @return ResultSetHydrator */ public function deCoordenadorAtenFamilia(Coordenador $coordenador, Filtros $filtros) { $where = "{$this->tabela}.fk_usuario_inc={$coordenador->getId()} " . "and pk_afa_subtipo_anotacao=" . Subtipo::SUB_TIPO_CONVERSA_FAMILIA; $select = $this->select(); $this->filtrosPeriodo($where, $filtros); $this->filtrosUEST($select, $where, $filtros, "public.usuario_aluno.fk_turma"); return $this->tg->selectObj($select->where($where)->distinct("pk_afa_conceito_aluno")->order("pk_afa_conceito_aluno", Order::DSC)); }
/** * Método que lista os atendimentos feitos pelo coordenador * * @param Coordenador $coordenador O coordenador autor dos atendimentos * @param Filtros $filtros Objeto do sistema de filtros * * @return ResultSetHydrator */ public function deCoordenador(Coordenador $coordenador, Filtros $filtros) { $where = "{$this->tabela}.fk_usuario_inc={$coordenador->getId()}"; $select = $this->select()->join("public.grade", array("fk_usuario_professor" => "{$this->tabela}.fk_usuario_professor")); $this->filtrosPeriodo($where, $filtros); $this->filtrosUEST($select, $where, $filtros); return $this->tg->selectObj($select->distinct(array("pk_fap_registro"))->where($where)->order(array("pk_fap_registro"), Order::DSC)); }
/** * Método que retorna todos os professores associados ao coordenador informado * * @param Coordenador $coordenador O coordenador usado como filtro * @param Filtros $filtros Objeto do sistema de filtros * * @return ResultSetHydrator Um objeto contendo a resposta da consulta */ public function deCoordenador(Coordenador $coordenador, Filtros $filtros) { $where = ""; $select = $this->select()->join("public.grade", array("fk_usuario_professor" => "pk_usuario_professor"))->join("public.materia_vin", array("pk_materia_vin" => "public.grade.fk_materia_vin")); $this->filtrosUEST($select, $where, $filtros); $this->filtrosAGD($select, $where, $filtros); $selOrdem = new Select(array("professores" => $select->order("nome")->where($where))); return $this->tg->selectObj($selOrdem->distinct(array("pk_usuario"))->join("public.grade", array("fk_usuario_professor" => "pk_usuario_professor"))->join("public.turma_vin", array("fk_turma" => "public.grade.fk_turma"))->join("public.coordenacao", array("pk_coordenacao" => "public.turma_vin.fk_coordenacao"))->join("public.coordenacao_vin", array("fk_coordenacao" => "pk_coordenacao"))->join("public.usuario_tipo_vin", array("pk_usuario_tipo_vin" => "public.coordenacao_vin.fk_usuario_tipo_vin"))->where("fk_usuario={$coordenador->getId()}")); }
/** * Método que retorna todos os professores associados a um determinado coordenador * @param \Kernel\Modelo\Perfis\Coordenador $coordenador O coordenador de filtro * @param \FiltrosSistema $filtros Objeto do sistema de filtros * @return \GGE\Lib\Sql\ResultSetHydrator Objeto contendo os professores relacionado ao coordenador * @throws \Kernel\Exception\UsuarioException */ public function deCoordenador(\Kernel\Modelo\Perfis\Coordenador $coordenador, \FiltrosSistema $filtros) { if (!$coordenador->getId()) { throw new \Kernel\Exception\UsuarioException("O coordenador informado é inválido"); } $professor = new \Kernel\Modelo\Perfis\Professor(); $select = new \GGE\Lib\Sql\Querys\Select(); return $this->gatWayUsuario->selectObj($select->join($professor->getPerfil()->getTabela(), array("pk_usuario" => "{$professor->getPerfil()->getTabela()}.fk_usuario"))->join("public.grade", array("public.grade.fk_usuario_professor" => "pk_usuario_professor"))->join("public.turma", array("pk_turma" => "public.grade.fk_turma"))->join("public.turma_vin", array("public.turma_vin.fk_turma" => "pk_turma"))->join("public.coordenacao", array("pk_coordenacao" => "public.turma_vin.fk_coordenacao"))->join("public.coordenacao_vin", array("public.coordenacao_vin.fk_coordenacao" => "pk_coordenacao"))->join("public.usuario_tipo_vin", array("pk_usuario_tipo_vin" => "fk_usuario_tipo_vin"))->where("public.usuario_tipo_vin.fk_usuario={$coordenador->getId()}")->limit(1)); }
/** * Método que lista apenas os ensinos associados ao coordenador informado * * @param Coordenador $coordenador O coordenador usado como filtro * @param Filtros $filtros Objeto do sistema de filtros * * @return ResultSetHydrator Um objeto contendo todos os dados da consulta */ public function deCoordenador(Coordenador $coordenador, Filtros $filtros) { $where = "public.turma.ano={$this->anoLetivo} "; $selectTemp = $this->select(); if ($filtros->issetVar("unidade")) { $where .= "and pk_unidade={$filtros->get("unidade")} "; } $select = new Select(array("ensinos" => $selectTemp->columns(array("pk_turma"))->where($where)->order("nome_ensino"))); return $this->tg->selectObj($select->join("public.turma_vin", array("fk_turma" => "pk_turma"))->join("public.coordenacao", array("pk_coordenacao" => "public.turma_vin.fk_coordenacao"))->join("public.coordenacao_vin", array("fk_coordenacao" => "pk_coordenacao"))->join("public.usuario_tipo_vin", array("pk_usuario_tipo_vin" => "public.coordenacao_vin.fk_usuario_tipo_vin"))->where("fk_usuario={$coordenador->getId()}")->distinct("pk_ensino")); }
/** * Método que retorna todos os registros do coordenador informado * * @param Coordenador $coordenador O coordenador autor do registro * @param Filtros $filtros Objeto do sistema de filtros * * @return ResultSetHydrator Um objeto contendo todos os registros retornados */ public function deCoordenador(Coordenador $coordenador, Filtros $filtros) { $where = "fk_usuario_inc={$coordenador->getId()} "; $this->filtrosPeriodo($where, $filtros); $this->filtrosTipoSub($where, $filtros); if ($filtros->issetGet("professor")) { $where .= "and public.usuario_professor.fk_usuario={$filtros->get("professor")} "; } $select = new Select(array("fap" => $this->select()->where($where)->distinct("pk_fap_registro"))); return $this->tg->selectObj($select->order("fap_registro_data_evento", Order::DSC)); }
/** * 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")); }
/** * Construtro * * @param int $id Caso seja informado, inicializa o coordenador com o código informado */ public function __construct($id = 0) { parent::__construct($id); $this->chamados = 0; $this->logDocentes = 0; $this->logAlunos = 0; $this->logProjetos = 0; $this->qtAcoes = 0; $this->atenProfessores = 0; $this->atenFamiliares = 0; $this->atenAlunos = 0; $this->fezAvaliacao = false; }
/** * Método que lista todas as turmas associadas ao coordenador informado * * @param Coordenador $coordenador O coordenador usado como filtros * @param Filtros $filtros Objeto do sistema de filtros * * @return ResultSetHydrator Um objeto contendo as turmas encontradas */ public function deCoordenador(Coordenador $coordenador, Filtros $filtros) { $where = "public.turma.ano={$this->anoLetivo} " . "and public.turma.status=" . Status::ATIVO; //Filtrando if ($filtros->issetGet("unidade")) { $where .= " and pk_unidade={$filtros->get("unidade")}"; } if ($filtros->issetGet("ensino")) { $where .= " and pk_ensino={$filtros->get("ensino")}"; } if ($filtros->issetGet("serie")) { $where .= " and pk_serie={$filtros->get("serie")}"; } //Retornando a consulta $select = new Select(array("turmas" => $this->select()->distinct("pk_turma")->where($where))); return $this->tg->selectObj($select->join("public.turma_vin", array("fk_turma" => "pk_turma"))->join("public.coordenacao", array("pk_coordenacao" => "public.turma_vin.fk_coordenacao"))->join("public.coordenacao_vin", array("fk_coordenacao" => "pk_coordenacao"))->join("public.usuario_tipo_vin", array("pk_usuario_tipo_vin" => "public.coordenacao_vin.fk_usuario_tipo_vin"))->where("fk_usuario={$coordenador->getId()}")->order("turma_nome")); }
/** * Método que lista as equipes(grupos de disciplinas) * relacionadas ao coordenador informado * * @param Coordenador $coordenador * @param Filtros $filtros */ public function deCoordenador(Coordenador $coordenador, Filtros $filtros) { $select = new Select(array("grupos" => $this->listarTodosBase($filtros)->order("materia_mae_nome"))); //Retornando a resposta da consulta return $this->tg->selectObj($select->join("public.turma_vin", array("fk_turma" => "pk_turma"))->join("public.coordenacao", array("pk_coordenacao" => "public.turma_vin.fk_coordenacao"))->join("public.coordenacao_vin", array("fk_coordenacao" => "pk_coordenacao"))->join("public.usuario_tipo_vin", array("pk_usuario_tipo_vin" => "public.coordenacao_vin.fk_usuario_tipo_vin"))->where("fk_usuario={$coordenador->getId()}")->distinct("pk_materia_mae")); }
/** * Método que retorna todas as unidades associadas ao coordenador informado * @param \Kernel\Modelo\Perfis\Coordenador $coordenador * @return ResultSetHydrator Um objeto contendo a resposta da consulta */ public function deCoordenador(\Kernel\Modelo\Perfis\Coordenador $coordenador) { $query = "select distinct on(pk_unidade) * " . "from {$this->tableGatway->getTabela()} " . "inner join public.coordenacao on pk_unidade=fk_unidade " . "inner join public.coordenacao_vin on pk_coordenacao=fk_coordenacao " . "inner join public.usuario_tipo_vin on pk_usuario_tipo_vin=fk_usuario_tipo_vin " . "inner join public.usuario_coordenador on " . "public.usuario_coordenador.fk_usuario=public.usuario_tipo_vin.fk_usuario " . "where public.usuario_tipo_vin.fk_usuario={$coordenador->getId()} " . "and public.usuario_coordenador.status=" . Status::ATIVO . " " . "and ano=" . Loader::data("config", "site", "ano_letivo"); return $this->tableGatway->querySelect($query); }
/** * Método que retorna apenas os coordenadores com funções distintas * * @param Filtros $filtros Objeto do sistema de filtros * * @return ResultSetHydrator Um objeto contendo a resposta da consulta */ public function listarFuncoes(Filtros $filtros) { $coordenador = new Coordenador(); $select = new Select(array("tipos" => $this->listarTodosBase($filtros->dontUseVar("funcao_coordenador"))->distinct("public.usuario_coordenador.tipo"))); return $this->tg->selectObj($select->order("{$coordenador->getColunaBase()}tipo")); }
/** * Método que retorna um determinado aluno se este estiver associado ao coordenador informado. * * @param Coordenador $coordenador O coordenador usado como filtro * @param Aluno $aluno Objeto contendo o indice do aluno e um modelo para aresposta * * @throws UsuarioException * * @return Aluno Um objeto contendo todos os dados do aluno */ public function getDeCoordenador(Coordenador $coordenador, Aluno $aluno) { $select = new Select(array("aluno" => $this->select()->columns(array("pk_turma" => "public.usuario_aluno.fk_turma"))->where("pk_usuario={$aluno->getId()} " . "and public.usuario_aluno.ano_mat='{$this->anoLetivo}' " . "and public.usuario_aluno.status=" . Status::ATIVO))); $resultset = $this->tg->selectObj($select->join('public.turma_vin', array('fk_turma' => 'pk_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'))->where("public.usuario_tipo_vin.fk_usuario={$coordenador->getId()}")->limit(1)); if (!$resultset->rowCount()) { throw new UsuarioException('O aluno não foi encontrado ou não ' . 'esta associado ao coordenador logado'); } return $resultset->fetch($aluno); }
/** * Método que lista todas as áreas da natureza relacionadas ao coordenador informado * * @param Coordenador $coordenador O coordenador usado como filtros * @param Filtros $filtros Objeto do sistema de filtros * * @return ResultSetHydrator Um objeto contendo a resposta da requisição */ public function deCoordenador(Coordenador $coordenador, Filtros $filtros) { $selectAreas = new Select(array("areas" => $this->listarTodosBase($filtros)->order("area_nome"))); return $this->tg->selectObj($selectAreas->join("public.turma_vin", array("fk_turma" => "pk_turma"))->join("public.coordenacao", array("pk_coordenacao" => "public.turma_vin.fk_coordenacao"))->join("public.coordenacao_vin", array("fk_coordenacao" => "pk_coordenacao"))->join("public.usuario_tipo_vin", array("pk_usuario_tipo_vin" => "public.coordenacao_vin.fk_usuario_tipo_vin"))->where("fk_usuario={$coordenador->getId()}")->distinct("pk_area")); }
/** * Metodo que lista todos os registros do aluno informado feitos pelo coordenador informado. * * @param Aluno $aluno O aluno usado como filtro * @param Filtros $filtros Objeto do sistema de filtros * * @return ResultSetHydrator Um objeto contendo a resposta da consulta * * @throws RegistrosException */ public function deAlunoCoordenador(Coordenador $coordenador, Aluno $aluno, Filtros $filtros) { if (!$aluno->getId()) { throw new RegistrosException('O aluno informado não é válido'); } $where = "public.usuario_aluno.fk_usuario={$aluno->getId()} " . "and {$this->tabela}.fk_usuario_coordenador={$coordenador->getIdEspecifico()} "; //Aplicando os filtros //-Pertiodo if ($filtros->issetVar('de')) { $where .= "and data_evento>='{$filtros->read('de')->format(Date::FORMAT_SQL_DATE)}' "; } if ($filtros->issetVar('ate')) { $where .= "and data_evento<='{$filtros->read('ate')->format(Date::FORMAT_SQL_DATE)}' "; } //-Tipo e subtipo if (!$filtros->issetVar(array('tipo_afa', 'subtipo_afa'))) { //Este trecho bloqueia a exibição de qualquer outro tipo de anotação $where .= 'and (pk_afa_tipo_anotacao=' . Tipo::TIPO_POSITIVO . ' '; $where .= 'or pk_afa_tipo_anotacao=' . Tipo::TIPO_NEGATIVO . ') '; } else { $this->filtrosTipoSub($where, $filtros); } // $select = new Select(array('afa' => $this->select()->distinct('pk_afa_conceito_aluno')->join("public.usuario_aluno", array("pk_usuario_aluno" => "{$this->tg->getTabela()}.fk_usuario_aluno"))->where($where))); return $this->tg->selectObj($select->order('afa.pk_afa_conceito_aluno', Order::DSC)); }
/** * Método que retorna todas as unidades associadas ao coordenador informado. * * @param Coordenador $coordenador * * @return ResultSetHydrator Um objeto contendo a resposta da consulta */ public function deCoordenador(Coordenador $coordenador) { return $this->tg->selectObj($this->select()->join('public.coordenacao', array('fk_unidade' => 'pk_unidade'))->join('public.coordenacao_vin', array('fk_coordenacao' => 'pk_coordenacao'))->join('public.usuario_tipo_vin', array('pk_usuario_tipo_vin' => 'fk_usuario_tipo_vin'))->join('public.usuario_coordenador', array('fk_usuario' => 'public.usuario_tipo_vin.fk_usuario'))->where(" public.usuario_tipo_vin.fk_usuario={$coordenador->getId()}" . ' and public.usuario_coordenador.status=' . Status::ATIVO . ' and ano=' . $this->anoLetivo)->distinct('pk_unidade')); }