Example #1
0
 /**
  * Método que lista todos os anexos relacionados ao tópico ou capitulo informado.
  * Método exclusivo para o estudo online
  *
  * @param Topico $topico O tópico usado como filtro
  *
  * @return ResultSetHydrator Um objeto contendo os dados da resposta da consulta
  *
  * @throws LivroException
  */
 public function deTopicoECapitulo(Topico $topico)
 {
     if (!$topico->getId()) {
         throw new LivroException('O tópico informado não é válido');
     }
     $this->tg->defineColuna('fk_conteudo', $this->colInt);
     return $this->tg->selectObj($this->select()->distinct('pk_anexo')->join('apostilas.anexos_vin', array('fk_anexo' => 'pk_anexo'))->where("fk_conteudo={$topico->getId()} " . "or fk_capitulo={$topico->getCapitulo()->getId()}"));
 }
Example #2
0
 /**
  * Método que verifica se existem questões suficientes para a 
  * realização dos minetestes por tópico.
  * 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 temParaTopico(Topico $topico)
 {
     $teste = new TesteTopico();
     $query = "SELECT count(pk_questao) as total FROM testes.questao " . "inner join testes.questao_vin_topico on pk_questao = questao_vin_topico_pk_questao " . "WHERE questao_vin_topico_pk_conteudo={$topico->getId()}";
     $prepare = $this->tg->getPDO()->prepare($query);
     $prepare->execute();
     $stdClass = $prepare->fetchObject();
     return $stdClass->total >= $teste->getMaxQuestoes();
 }
Example #3
0
 /**
  * Retorna a série associada ao topico informado
  * @param Topico $topico O tópico usado como filtro
  * @return Serie Um objeto contendo os dados da série
  * @throws UnidadeException
  */
 public function deTopico(Topico $topico)
 {
     if (!$topico->getId()) {
         throw new LivroException("O tópico informado é inválido");
     }
     $this->tg->defineColuna("pk_conteudo", 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"))->join("apostilas.conteudo", array("fk_capitulo" => "pk_capitulo"))->where(array("pk_conteudo" => $topico->getId()))->limit(1));
     if (!$resultset->rowCount()) {
         throw new UnidadeException("A série informada não foi encontrada");
     }
     return $resultset->fetch();
 }
Example #4
0
 /**
  * Retorna a série associada ao topico informado
  * @param \Kernel\Modelo\Livro\Topico $topico O tópico usado como filtro
  * @return \Kernel\Modelo\Unidade\Serie Um objeto contendo os dados da série
  * @throws \Kernel\Exception\UnidadeException
  */
 public function deTopico(\Kernel\Modelo\Livro\Topico $topico)
 {
     if (!$topico->getId()) {
         throw new \Kernel\Exception\LivroException("O tópico informado é inválido");
     }
     $this->tableGatway->defineColuna("pk_conteudo", 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"))->join("apostilas.conteudo", array("pk_capitulo" => "fk_capitulo"))->where(array("pk_conteudo" => $topico->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 um teste de acordo com o aluno e tópico informados.
  *
  * @param Aluno  $aluno  O aluno que realizou o teste
  * @param Topico $topico O tópico relacionado ao teste
  *
  * @return TesteCapitulo O teste
  */
 public function porAlunoTopico(Aluno $aluno, Topico $topico)
 {
     $capitulo = $topico->getCapitulo();
     return $this->deAlunoTopCap($aluno, $capitulo);
 }
Example #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();
 }
Example #7
0
 /**
  * Método que atualiza um tópico
  * @param Topico $topico O tópico a ser atualizado contendo os novos dados
  * @return boolean Retorna TRUE em caso de sucesso
  * @throws SqlException
  */
 public function update(Topico $topico)
 {
     if (!$topico->getId()) {
         throw new \Kernel\Exception\LivroException("O tópico informado é inválido");
     }
     $resultset = $this->tableGatway->update(array("pk_conteudo" => $topico->getId()), array("conteudo_nome" => $topico->getNome(), "fk_capitulo" => $topico->getCapitulo()->getId(), "topico" => $topico->getSequencial(), "total" => $topico->getTotal(), "paginas_trabalhadas" => $topico->getPaginasTrabalhadas(), "pagina_inicial" => $topico->getPaginaInicial(), "pagina_final" => $topico->getPaginaFinal(), "conteudo_resumo" => $topico->getResumo(), "conteudo_digitalizado" => (int) $topico->getConteudoDigital()));
 }
Example #8
0
 /**
  * Método que retorna o livreto que possue o tópico informado.
  * 
  * @param Topico $topico
  */
 public function deTopico(Topico $topico)
 {
     $this->defColInteger(array('pk_conteudo'));
     return $this->tg->selectObj($this->select()->join('apostilas.capitulo', array('fk_livro' => 'pk_livro'))->join('apostilas.conteudo', array('fk_capitulo' => 'pk_capitulo'))->where(array('pk_conteudo' => $topico->getId()))->limit(1))->fetch();
 }
 /**
  * Método que retorna o acompanhamento de um determinado tópico. 
  * Retorna o ultimo status
  * 
  * @param Topico $topico O tópico de referência
  * 
  * @return Acompanhamento O ultimo dado de acompanhamento salvo no banco
  */
 public function deTopico(Topico $topico)
 {
     $this->defColInteger(array("pk_conteudo"));
     return $this->tg->selectObj($this->select()->where(array("pk_conteudo" => $topico->getId()))->order("pk_acompanhamento", Order::DSC)->limit(1))->fetch();
 }