/** * 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(); }
/** * 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(); }
/** * 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()))); }
/** * 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(); }