/**
  * Método que verifica se existem questões suficientes para a 
  * realização dos minetestes por capítulo.
  * Método intimamente ligado ao modelo de mine teste do estudo online.
  * 
  * @return boolean Retorna TRUE caso tenha o número mímino de questões 
  * para realizar o teste ou FALSE caso não tenha
  */
 public function temParaCapitulo(Capitulo $capitulo)
 {
     $teste = new TesteCapitulo();
     $query = "SELECT count(pk_questao) as total 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 fk_capitulo={$capitulo->getId()}";
     $prepare = $this->tg->getPDO()->prepare($query);
     $prepare->execute();
     $stdClass = $prepare->fetchObject();
     return $stdClass->total >= $teste->getMaxQuestoes();
 }
Beispiel #2
0
 /**
  * Retorna a série associada ao capítulo informado
  * @param Capitulo $capitulo O capítulo usado como filtro
  * @return Serie Um objeto contendo os dados da série
  * @throws UnidadeException
  */
 public function deCapitulo(Capitulo $capitulo)
 {
     if (!$capitulo->getId()) {
         throw new LivroException("O capitulo informado é inválido");
     }
     $this->tg->defineColuna("pk_capitulo", new ResultSetMap(Column::INTEGER));
     $resultset = $this->tg->selectObj($this->select()->join("apostilas.livro", array("fk_serie" => "pk_serie"))->join("apostilas.capitulo", array("fk_livro" => "pk_livro"))->where(array("pk_capitulo" => $capitulo->getId()))->limit(1));
     if (!$resultset->rowCount()) {
         throw new UnidadeException("A série informada não foi encontrada");
     }
     return $resultset->fetch();
 }
Beispiel #3
0
 /**
  * Retorna a série associada ao capítulo informado
  * @param \Kernel\Modelo\Livro\Capitulo $capitulo O capítulo usado como filtro
  * @return \Kernel\Modelo\Unidade\Serie Um objeto contendo os dados da série
  * @throws \Kernel\Exception\UnidadeException
  */
 public function deCapitulo(\Kernel\Modelo\Livro\Capitulo $capitulo)
 {
     if (!$capitulo->getId()) {
         throw new \Kernel\Exception\LivroException("O capitulo informado é inválido");
     }
     $this->tableGatway->defineColuna("pk_capitulo", new \GGE\Lib\Sql\ResultSetMap(\GGE\Lib\Sql\Column::INTEGER));
     $select = new \GGE\Lib\Sql\Querys\Select();
     $resultset = $this->tableGatway->selectObj($select->join("apostilas.livro", array("pk_serie" => "fk_serie"))->join("apostilas.capitulo", array("pk_livro" => "fk_livro"))->where(array("pk_capitulo" => $capitulo->getId()))->limit(1));
     if (!$resultset->rowCount()) {
         throw new \Kernel\Exception\UnidadeException("A série informada não foi encontrada");
     }
     return $resultset->fetch();
 }
 /**
  * Método que retorna todos os anexos cadastrados relacionados a um determinado capítulo.
  *
  * @param Capitulo $capitulo O capítulo usado como filtro
  *
  * @return ResultSetHydrator Um objeto contendo a resposta da consulta
  */
 public function deCapitulo(Capitulo $capitulo)
 {
     $this->tg->defineColuna('fk_capitulo', $this->colInt);
     return $this->tg->selectObj($this->select()->distinct('pk_anexo')->join('apostilas.anexos_vin', array('fk_anexo' => 'pk_anexo'))->where(array('fk_capitulo' => $capitulo->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())));
 }
Beispiel #6
0
 /**
  * Metodo que associa o código do anexo ao código da série, conteúdo e/ou capítulo
  * @param int O código do anexo a ser vinculado
  * @param Anexos $anexo O anexo a ser viinculado
  * @param \Kernel\Modelo\Unidade\Serie $serie A série referente ao anexo
  * @param Topico|Capitulo $voidConteudo O tópico ou capítulo referente ao anexo
  * @return boolean Retorna TRUE em caso de sucesso ou FALSE em caso de falha
  * @throws \PDOException
  */
 public function insertVinculo(Anexos $anexo, \Kernel\Modelo\Unidade\Serie $serie, $voidConteudo)
 {
     if (!$anexo->getId()) {
         throw new Exception("Nãp foi possível associar o anexo informado ao livro");
     }
     if ($voidConteudo instanceof Topico) {
         $query = "INSERT INTO apostilas.anexos_vin (fk_anexo, fk_conteudo, fk_serie)\n                values (:fk_anexo, :fk_conteudo, :fk_serie)";
         $prepare = $this->tablegateway->getPDO()->prepare($query);
         $prepare->bindParam(':fk_conteudo', $voidConteudo->getId(), PDO::PARAM_INT);
     } elseif ($voidConteudo instanceof Capitulo) {
         $query = "INSERT INTO apostilas.anexos_vin (fk_anexo, fk_serie, fk_capitulo)\n                values (:fk_anexo, :fk_serie, :fk_capitulo)";
         $prepare = $this->tablegateway->getPDO()->prepare($query);
         $prepare->bindParam(':fk_capitulo', $voidConteudo->getId(), PDO::PARAM_INT);
     } else {
         $this->tablegateway->getPDO()->rollBack();
         throw new LivroException("Erro ao associar o anexo ao conteúdo");
     }
     $prepare->bindParam(':fk_anexo', $anexo->getId(), PDO::PARAM_INT);
     $prepare->bindParam(':fk_serie', $serie->getId(), PDO::PARAM_INT);
     return $prepare->execute();
 }