/**
  * 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);
 }
Exemple #2
0
 /**
  * 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;
 }
Exemple #4
0
 /**
  * Construtor
  */
 public function __construct()
 {
     parent::__construct();
     $this->livro = new Livro();
     $this->disciplina = new Disciplina();
 }