/** * 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 todas as materias com aulas amanhã * @param Turma $turma A turma a ser consultada * @return array Um array contendo as matérias com aulas amanhã */ public function turmaAulasAmanha(Turma $turma) { $tableGatway = new TableGatway(new Disciplina(), "public.turma"); $ano = Loader::data("config", "site", "ano_letivo"); $dia = date("N", strtotime("+1 day")); $query = "select distinct on(fk_materia) * " . "from public.turma " . "inner join public.grade_horario on fk_turma=public.turma.pk_turma " . "inner join public.grade on pk_grade_horario=fk_grade_horario " . "inner join public.materia_vin on pk_materia_vin=fk_materia_vin " . "inner join public.materia on pk_materia=fk_materia " . "where public.turma.ano={$ano} " . "and dia={$dia} " . "and pk_turma={$turma->getId()}"; return $tableGatway->querySelect($query); }
/** * Método que retorna todos os livros usados por uma determinada turma * @param Turma $turma * @return ResultSetHydrator Um objeto contendo o resultado da consulta */ public function deTurma(Turma $turma) { $this->tg->defineColuna("fk_turma", $this->colInt); $resultset = $this->tg->selectObj($this->select()->distinct("volume")->join("apostilas.livro_turmas_vin", array("fk_livro" => "pk_livro"))->where(array("fk_turma" => $turma->getId(), "ano" => $this->anoLetivo))->order("volume")); if (!$resultset->rowCount()) { throw new LivroException("Não foram encontrados livros associados a turma"); } return $resultset; }
/** * Método que gera o modelo de turma para a resposta * * @param Turma $turma * * @return stdClass */ private function modelo($turma) { $tmp = false; if ($turma instanceof Turma) { $tmp = new stdClass(); $tmp->id = $turma->getId(); $tmp->nome = $turma->getNome(); } return $tmp; }
/** * Método que retorna o próximo conteúdo não dado da matéria para a turma * @param Turma $turma A turma a ser consultada * @param stdClass $conteudo O ultimo conteúdo concluído * @return array Um array contendo objetos do tipo anexos referentes aos próximos conteudos */ public function anexosPre(Turma $turma, $conteudo) { //Lendo o conteúdo seguinte $query = "select apostilas.conteudo.* " . "from apostilas.conteudo " . "inner join apostilas.capitulo on pk_capitulo=fk_capitulo " . "inner join public.materia_vin on pk_materia_vin=fk_materia_vin " . "inner join public.turma on public.turma.fk_serie=public.materia_vin.fk_serie " . "where pk_conteudo>{$conteudo->fk_conteudo} " . "and pk_turma={$turma->getId()} " . "and fk_materia={$conteudo->fk_materia} " . "order by pk_conteudo limit 1"; $prepare = $this->tablegateway->getPDO()->query($query); $prepare->execute(); if (!$prepare->rowCount()) { return array(); } $conteudo = $prepare->fetchObject(); $query = "select distinct on(pk_anexo) " . "* " . "from {$this->tablegateway->getTabela()} " . "inner join {$this->tablegateway->getTabela()}_vin on fk_anexo=pk_anexo " . "inner join apostilas.capitulo on pk_capitulo=fk_capitulo " . "inner join public.materia_vin on pk_materia_vin=fk_materia_vin " . "inner join public.materia on pk_materia=fk_materia " . "where posicao=" . Anexos::ANEXO_PRE . " " . "and fk_conteudo={$conteudo->pk_conteudo} "; return $this->tablegateway->querySelect($query)->fetchAll(); }
/** * Método que lista as questões associadas ao capítulo e que * nenhum aluno da turma informada tenha respondido * @param Model $model O capitulo ou tópico a ser usado como filtro * @param Turma $turma A turma a ser excluída da resposta * @return ResultSetHydrator Um objeto contendo a resposta da consulta */ public function semTurma(ConteudoInterno $model, Turma $turma) { if ($model instanceof Capitulo) { $tipoTeste = new TesteCapitulo(); $fk = "fk_capitulo"; } else { $tipoTeste = new TesteTopico(); $fk = "pk_conteudo"; } $tabela = $tipoTeste->getTabela(); $tb = substr($tabela, strrpos($tabela, '.') + 1); $query = "SELECT distinct on(pk_questao)* FROM testes.questao " . "inner join testes.questao_vin_topico on " . "pk_questao=questao_vin_topico_pk_questao " . "inner join apostilas.conteudo on " . "pk_conteudo=questao_vin_topico_pk_conteudo " . "where " . "pk_questao not in (select {$tb}_questao_pk_questao " . "from testes.{$tb}_questao " . "inner join testes.{$tb} " . "on pk_{$tb}={$tb}_questao_pk_{$tb} " . "inner join public.usuario_aluno " . "on fk_usuario={$tb}_pk_usuario " . "WHERE fk_turma={$turma->getId()} " . "and ano_mat='{$this->anoLetivo}' " . "and status=" . Status::ATIVO . " " . "and {$tb}_ano={$this->anoLetivo}) " . "and {$fk}={$model->getId()} " . "limit {$tipoTeste->getMaxQuestoes()}"; return $this->tg->querySelect($query); }
/** * Método que lista todos os alunos de uma determinada turma * @param Turma $turma * @return ResultSetHydrator */ public function deTurma(Turma $turma) { $this->gatWayUsuario->defineColuna("fk_turma", new ResultSetMap(Column::INTEGER)); $select = new Select(); return $this->gatWayUsuario->selectObj($select->join("public.usuario_aluno", array("pk_usuario" => "fk_usuario"))->where(array("fk_turma" => $turma->getId()))); }
/** * Método que retorna os tópicos de um capítulo com o acompanhamento * @param Capitulo $capitulo * @param Turma $turma */ public function deCapituloTurma(Capitulo $capitulo, Turma $turma) { $queryAcomp = "select apostilas.acompanhamento.status||','||" . "apostilas.acompanhamento.data_aula " . "from apostilas.acompanhamento " . "WHERE fk_conteudo=pk_conteudo and fk_turma={$turma->getId()} " . "and extract(year from data_aula)={$this->anoLetivo} " . "order by fk_aula desc " . "limit 1"; return $this->tg->selectObj($this->select()->distinct("pk_conteudo")->columnsReset()->columns("*, ({$queryAcomp}) as topico_acompanhamento")->where(array("pk_capitulo" => $capitulo->getId()))); }
/** * Método que verifica se houve aula da matéria no dia informado * @param Turma $turma A turma a ser buscada * @param stdClass $materia A matéria a ser buscada * @param int $dia O dia a ser verificado */ public function houveAulaMateria(Turma $turma, \Kernel\Modelo\Disciplina\Disciplina $materia, $dia) { $query = "select * from public.grade_horario " . "inner join public.grade on pk_grade_horario=fk_grade_horario " . "inner join public.materia_vin on pk_materia_vin=fk_materia_vin " . "where public.grade_horario.fk_turma={$turma->getId()} " . "and dia={$dia} and fk_materia={$materia->getId()} " . "limit 1"; return (bool) $this->tableGatway->querySelect($query)->rowCount(); }
/** * Método que lista todos os alunos de uma determinada turma. * * @param Turma $turma * * @return ResultSetHydrator */ public function deTurma(Turma $turma) { $this->tg->defineColuna('fk_turma', new ResultSetMap(Column::INTEGER)); return $this->tg->selectObj($this->select()->where(array('fk_turma' => $turma->getId()))); }