Ejemplo n.º 1
0
 /**
  * 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);
 }