/**
  * Método que gera a página inicial do estudo online.
  */
 public function estudoOnlineHome()
 {
     $this->load->helper('link');
     $usrAux = new Usuarios();
     $sqlTurma = new SqlTurma();
     $sqlLivro = new SqlLivroAula();
     $sqlCapitulos = new SQlCapitulo();
     $sqlConteudos = new SqlTopicoAula();
     $sqlDisciplina = new SqlDisciplina();
     $sqlTestes = new SqlTesteCapitulo();
     $sqlTestesTop = new SqlTesteTopico();
     $sqlStatus = new SqlStatusAlunoTopico();
     $sqlQuestao = new SqlQuestaoAula();
     $sqlAcomp = new SqlAcompanhamento();
     try {
         $aluno = $usrAux->getAluno(false);
         $turma = $sqlTurma->deALuno($aluno);
         $this->filtro->setGet(array("turma" => $turma->getId()));
         $acompanhamento = $sqlAcomp->listarTodos($this->filtro);
         $testesCapitulosLista = $sqlTestes->deAluno($aluno);
         $testesTopicoLista = $sqlTestesTop->deAluno($aluno);
         $livrosDeTurma = $sqlLivro->deTurma($turma);
         $statusList = $sqlStatus->porAluno($aluno);
         $capitulosMax = array();
         $temQuestao = array();
         $livros = array();
         $colecao = null;
         //Escaneando os livros encontrados para a turma
         while ($livro = $livrosDeTurma->fetch()) {
             $colecao = $livro->getColecao();
             $id = $livro->getId();
             $livros[$id]['livro'] = $livro;
             //Salvando as disciplinas do livro
             $disciplinas = $sqlDisciplina->deLivro($livro);
             $this->filtro->setGet(array('livro' => $livro->getId()));
             while ($disciplina = $disciplinas->fetch()) {
                 $idD = $disciplina->getId();
                 $this->filtro->setGet(array('disciplina' => $idD));
                 $livros[$id]['disciplinas'][$idD]['obj'] = $disciplina;
                 //Filtrando os capítulos
                 $capitulos = $sqlCapitulos->listarTodos($this->filtro);
                 $livros[$id]['disciplinas'][$idD]['capitulos'] = array();
                 while ($capitulo = $capitulos->fetch()) {
                     //                        $idC = $capitulo->getId();
                     $idC = $capitulo->getSequencial();
                     $livros[$id]['disciplinas'][$idD]['capitulos'][$idC]['capitulo'] = $capitulo;
                     $temQuestao[$idC] = $sqlQuestao->temParaCapitulo($capitulo);
                     $this->filtro->setGet(array('capitulo' => $capitulo->getId()));
                     $topicos = $sqlConteudos->deCapituloTurma($capitulo, $turma)->fetchAll();
                     $livros[$id]['disciplinas'][$idD]['capitulos'][$idC]['topico'] = $topicos;
                     $secC = trim(str_replace("Capítulo", "", $capitulo->getSequencial()));
                     $secC = str_pad($secC, 3, 0, STR_PAD_LEFT);
                     if (isset($capitulosMax[$secC])) {
                         if ($capitulosMax[$secC] < count($topicos)) {
                             $capitulosMax[$secC] = count($topicos);
                         }
                     } else {
                         $capitulosMax[$secC] = count($topicos);
                     }
                 }
             }
         }
         $tmp = array();
         krsort($capitulosMax, SORT_NUMERIC);
         foreach ($capitulosMax as $chave => $valor) {
             $tmp["Capítulo " . (int) $chave] = $valor;
         }
         $capitulosMax = array_reverse($tmp);
         //Agrupando os testes por capítulos
         $testesCapitulos = array();
         while ($teste = $testesCapitulosLista->fetch()) {
             $testesCapitulos[$teste->getAlvo()->getId()] = $teste;
         }
         //Agrupando os testes por tópico
         $testesTopicos = array();
         while ($teste = $testesTopicoLista->fetch()) {
             $testesTopicos[$teste->getAlvo()->getId()] = $teste;
         }
         //Agrupando os status
         $statusArray = array();
         while ($status = $statusList->fetch()) {
             $statusArray[$status->getTopico()->getId()] = $status;
         }
         //Agrupando o acompanhamento
         $acompArray = array();
         while ($acomp = $acompanhamento->fetch()) {
             $acompArray[$acomp->getTopico()->getId()] = $acomp;
             $maxAcomp = $acomp;
         }
         //Passando os dados para o view
         $this->setData('testesCapitulos', $testesCapitulos);
         $this->setData('acompanhamento', $acompArray);
         $this->setData('testesTopicos', $testesTopicos);
         $this->setData('status', $statusArray);
         $this->setData('aluno', $aluno);
         $this->setData('turma', $turma);
         $this->setData('colecao', $colecao);
         $this->setData('temQuestao', $temQuestao);
         $this->setData('arrayLivros', $livros);
         $this->setData('capitulosMax', $capitulosMax);
         $this->setData('ultLivro', $maxAcomp->getTopico()->getCapitulo()->getLivro());
         $this->loadPlugin('shadowbox');
         $this->printView();
     } catch (SqlException $sql) {
         echo Javascript::alert('Ocorreu um erro interno. ' . 'Tente novamente mais tarde.');
         echo $sql->getMessage();
         $this->close(true);
     } catch (Exception $exc) {
         echo Javascript::alert($exc->getMessage());
         $this->close(true);
     }
 }
Пример #2
0
 /**
  * Método que retorna os capítulos de acordo com os filtros informados
  * @param Filtros $filtros Objeto do sistema de filtros
  * @return ResultSetHydrator Objeto contento a resposta da consulta
  */
 public function listar(Filtros $filtros)
 {
     $sqlCapitulo = new SQlCapitulo();
     return $sqlCapitulo->listarTodos($filtros);
 }
Пример #3
0
 /**
  * Método que gera o select base para todas as consultas
  * @return Select Objeto contendo o molde para as consultas
  */
 public function select()
 {
     $select = new Select($this->tg->getTabela());
     $sqlCapitulo = new SQlCapitulo();
     return $select->columns(array("pagina_inicial", "pagina_final", "topico"), "conteudo_")->columns(array("pk_conteudo", "conteudo_nome", "conteudo_resumo", "conteudo_aula_digital"))->join("apostilas.capitulo", array("pk_capitulo" => "fk_capitulo"))->import($sqlCapitulo->select());
 }