/** * Método que retorna questões associadas ao capítulo informado e diferentes * das informadas * @param Model $model O capítulo associado as questões * @param array $questoes As questões já definidas * @return ResultSetHydrator Um objeto contendo o resultado da consulta */ public function questoesAdicionais(ConteudoInterno $model, array $questoes) { if ($model instanceof Capitulo) { $tipoTeste = new TesteCapitulo(); $fk = "fk_capitulo"; } else { $tipoTeste = new TesteTopico(); $fk = "fk_conteudo"; } $limit = $tipoTeste->getMaxQuestoes() - count($questoes); $where = " {$fk}={$model->getId()} "; foreach ($questoes as $questao) { $where .= "and pk_questao!={$questao->getId()} "; } $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 {$where} limit {$limit}"; return $this->tg->querySelect($query); }
/** * Construtor. */ public function __construct() { parent::__construct(); $this->resumo = ''; $this->capitulo = new Capitulo(); $this->paginaInicial = 0; $this->paginaFinal = 0; $this->videoAula = new Youtube(); }
/** * Metodo que retorna um teste relacionado ao aluno e ao capítulo ou * tópico informado. O capítulo é obtido por meio do tópico informado. * * @param Aluno $aluno O aluno alvo da busca * @param Model $model O capítulo relacionado a questão * * @return TesteCapitulo|bool Um objeto contendo os dados do teste * ou FALSE caso não seja encontrado * * @throws TesteException */ protected function deAlunoTopCap(Aluno $aluno, ConteudoInterno $model) { if (!$aluno->getId() || !$model->getId()) { throw new TesteException('O aluno ou capítulo informado é inválido'); } if ($model instanceof Capitulo) { $fk = "pk_capitulo"; } else { $fk = "pk_conteudo"; } $resultset = $this->tg->selectObj($this->select()->distinct("pk_{$this->tabela}")->where(array("{$this->tabela}_pk_usuario" => $aluno->getId(), "{$this->tabela}_{$fk}" => $model->getId(), "{$this->tabela}_ano" => $this->anoLetivo))); if (!$resultset->rowCount()) { $return = false; } else { $teste = $resultset->fetch(); $sqlQuestao = new SqlQuestao(); $teste->setQuestoes($sqlQuestao->deTeste($teste)->fetchAll()); $return = $teste; } return $return; }
/** * Construtor */ public function __construct() { parent::__construct(); $this->livro = new Livro(); $this->disciplina = new Disciplina(); }