/** * Método que retorna todos os liovros usados por uma determinada turma * @param Turma $turma * @return ResultSetHydrator Um objeto contendo o resultado da consulta */ public function deTurma(Turma $turma) { $select = new Select(); $this->tableGatway->defineColuna("fk_turma", new ResultSetMap(Column::INTEGER)); $this->tableGatway->defineColuna("ano", new ResultSetMap(Column::INTEGER)); return $this->tableGatway->selectObj($select->distinct("volume")->join("apostilas.livro_turmas_vin", array("pk_livro" => "apostilas.livro_turmas_vin.fk_livro"))->join("apostilas.livro_cat", array("pk_livro_cat" => "fk_livro_cat"))->where(array("fk_turma" => $turma->getId(), "ano" => $turma->getAno()))->order("volume")); }
/** * Método que retorna a série em que o aluno estuda * @param Aluno $aluno O aluno usado como filtro * @return Serie A série em que o aluno informado estuda */ public function deAluno(Aluno $aluno) { $select = new Select(); $serie = $this->tableGatway->selectObj($select->distinct("pk_serie")->join("public.turma", array("fk_serie" => "pk_serie"))->join("public.usuario_aluno", array("pk_turma" => "fk_turma"))->join("public.ensinos", array("ensino" => "pk_ensino"))->join("public.curso", array("pk_curso" => "fk_curso"))->where(array("fk_usuario" => $aluno->getId(), "ano" => \GGE\Lib\Controller\Loader::data("config", "site", "ano_letivo")))->limit(1)); if (!$serie->rowCount()) { throw new Exception("Não foi encontrada nenhuma série para o aluno informado"); } return $serie->fetch(); }
/** * 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 anexos referentes aos conteúdo concluídos no dia da execução do método. * @param Turma $turma A classe referente a aula * @return array Um array de anexos contendo somente os anexos do com objetivo Pós-Aula */ public function anexosPosHoje(Turma $turma) { if (!is_int($turma->getId())) { throw new TurmaException("A turma informada é inválida", 1); } if (!$turma->getId()) { throw new TurmaException("A turma informada é inválida", 2); } if (!Data::validar($turma->getAno(), "Y")) { throw new TurmaException("A turma informada é inválida", 3); } if (!$turma->getStatus()) { throw new TurmaException("A turma informada esta desativada no sistema"); } $hoje = date("Y-m-d"); $select = new Select(); $select->distinct("pk_anexo")->join("apostilas.anexos_vin", array("fk_anexo" => "pk_anexo"))->join("apostilas.acompanhamento", array("apostilas.acompanhamento.fk_conteudo" => "apostilas.anexos_vin.fk_conteudo"))->join("apostilas.capitulo", array("pk_capitulo" => "fk_capitulo"))->join("public.materia_vin", array("pk_materia_vin" => "fk_materia_vin"))->join("public.materia", array("pk_materia" => "fk_materia"))->where("posicao=" . Anexos::ANEXO_POS . " and data_aula='{$hoje}' " . "and apostilas.acompanhamento.status=" . Conteudos::STATUS_ACOMPANAHMENTO_CONCLUIDO); return $this->tablegateway->selectObj($select); }
/** * Método que retorna os ensinos associados ao professor informado * * @param Professor $professor O professor usado como filtro * @param Filtros $filtros Objeto do sistema de filtros * * @return ResultSetHydrator */ public function deProfessor(Professor $professor, Filtros $filtros) { $where = "public.turma.ano={$this->anoLetivo} " . "and public.usuario_professor.fk_usuario={$professor->getId()}"; $selectTemp = $this->select()->join("public.grade", array("fk_turma" => "pk_turma"))->join("public.usuario_professor", array("pk_usuario_professor" => "public.grade.fk_usuario_professor")); if ($filtros->issetVar("unidade")) { $where .= "and pk_unidade={$filtros->get("unidade")} "; } $select = new Select(array("ensinos" => $selectTemp->where($where)->order("nome_ensino"))); return $this->tg->selectObj($select->distinct("pk_ensino")); }
/** * Método que retorna os conteúdos do livro informado com o seu andamento * @param Livro $livro O livro alvo da busca * @param Disciplina $disciplina A disciplina referente ao conteúdo * @throws \GGE\Lib\Base\Exception */ public function deLivroComAcompanhamento(Livro $livro, Disciplina $disciplina) { $select = new Select(); return $this->tableGatway->selectObj($select->distinct("sequencial_topico")->columns("*, apostilas.acompanhamento.status as topico_status, " . "data_aula as topico_data_aula ")->join("apostilas.capitulo", array("pk_capitulo" => "fk_capitulo"))->join("public.materia_vin", array("fk_materia_vin" => "pk_materia_vin"))->join("public.materia", array("pk_materia" => "fk_materia"))->join("public.materia_mae", array("pk_materia_mae" => "fk_materia_mae"))->join("public.area", array("pk_area" => "fk_area"))->join("apostilas.acompanhamento", array("pk_conteudo" => "fk_conteudo"))->where("fk_livro={$livro->getId()} " . "and pk_materia={$disciplina->getId()} " . "and (status=" . \Kernel\Modelo\Livro\Topico::STATUS_EM_ANDAMENTO . " " . "or status=" . \Kernel\Modelo\Livro\Topico::STATUS_CONCLUIDO . ") " . "and id=(select max(id) from apostilas.acompanhamento " . "where fk_conteudo=pk_conteudo and status!=" . \Kernel\Modelo\Livro\Topico::STATUS_REVISADO . ") " . "and extract(year from data_aula)=" . Loader::data("config", "site", "ano_letivo"))->order("sequencial_topico")); }
/** * Método que lista todas as mensagens para o aluno informado * A consulta busca apenas por turmas pois foi definido assim no projeto * @param Usuario $destinatario O aluno de destino da mensagem * @param FiltrosSistema $filtrosSistema * @return ResultSetHydrator */ public function listarTodas(Usuario $destinatario, FiltrosSistema $filtrosSistema = null) { $select = new Select(); return $this->tableGatway->selectObj($select->distinct("agendas_semanais.mensagem_alunos.id")->join("agendas_semanais.mensagem_alunos_destinatarios", array("agendas_semanais.mensagem_alunos.id" => "mensagem"))->join("public.turma", array("pk_turma" => "pk_destinatario"))->join("public.usuario_aluno", array("fk_turma" => "pk_turma"))->where(array("fk_usuario" => $destinatario->getId()))->order("agendas_semanais.mensagem_alunos.id", Order::DSC)->limit(3)); }
/** * Método que lista todos os anexos relacionados ao tópico informado * @param Topico $topico O tópico usado como filtro * @return ResultSetHydrator Um objeto contendo os dados da resposta da consulta * @throws LivroException */ public function deTopicoProfessor(Topico $topico, \Kernel\Modelo\Perfis\Professor $professor) { if (!$topico->getId()) { throw new LivroException("O tópico informado não é válido"); } $this->tablegateway->defineColuna("fk_conteudo", new ResultSetMap(Column::INTEGER)); $select = new Select(); return $this->tablegateway->selectObj($select->distinct("pk_anexo")->join("apostilas.anexos_vin", array("pk_anexo" => "fk_anexo"))->join("public.usuario_tipo_vin", array("fk_usuario" => "anexos_usuario_insert", "fk_tipo_usuario" => "anexos_tipo_usuario_insert"))->join("public.usuario", array("fk_usuario" => "pk_usuario"))->where(array("fk_conteudo" => $topico->getId(), "anexos_usuario_insert" => $professor->getId(), "anexos_tipo_usuario_insert" => \Kernel\Modelo\Perfil::PROFESSOR))); }
/** * Método que retorna todas as mensagens já enviadas. * A busca acontece apenas por turma pois foi definido assim no projeto * @param Aluno $aluno Se informado, exibe todas as mensagens enviadas por este usuário * @param int $limit O limite de mensagens a serem exibidas */ public function listarMensagens(Aluno $aluno, $limit = 15) { $tableGatway = new TableGatway(new Mensagens(), "transf.area_transf"); $select = new Select(); return $tableGatway->selectObj($select->distinct("pk_area_transferencia")->join("transf.area_transf_tipo", array("pk_area_transf_tipo" => "fk_area_transf_tipo"))->join("transf.area_transferencia_dest", array("fk_area_transferencia" => "pk_area_transferencia"))->join("public.usuario", array("pk_usuario" => "fk_usuario_remetente"))->join("public.turma", array("pk_turma" => "transf.area_transferencia_dest.fk_turma"))->join("public.usuario_aluno", array("fk_turma" => "pk_turma"))->where("public.usuario_aluno.fk_usuario={$aluno->getId()}")->order("pk_area_transferencia", Order::DSC)->limit($limit)); }