/**
  * Método que retorna um objeto contendo o modelo de consulta básica.
  *
  * @return Select Uma consulta básica
  */
 public function select()
 {
     $sqlTurma = new SqlTurma();
     $sqlTopico = new SqlTopico();
     $t = $this->tg->getTabela(true);
     $select = new Select();
     return $select->from($this->tg->getTabela())->columns(array("{$t}_status" => 'status', "{$t}_data_aula" => 'data_aula', '*'))->join('public.turma', array('pk_turma' => "{$this->tg->getTabela()}.fk_turma"))->import($sqlTurma->select())->join('apostilas.conteudo', array('pk_conteudo' => "{$this->tg->getTabela()}.fk_conteudo"))->import($sqlTopico->select());
 }
 /**
  * Método que gera um Select genérico para uso interno da classe
  * 
  * @return Select Retorna um objeto contendo a base para as consultas
  */
 public function select()
 {
     $t = $this->tg->getTabela();
     $sqlUnidade = new SqlUnidade();
     $sqlSerie = new SqlSerie();
     $sqlTurma = new SqlTurma();
     $sqlUsuario = new SqlUsuario();
     $select = new Select($t);
     return $select->columns(array("pk_area_transf_dest" => "cod", "area_transf_dest_tipo" => "(case " . "when {$t}.fk_unidade!=0 then '" . Destinatario::UNIDADE . "' " . "when {$t}.fk_serie!=0 then '" . Destinatario::SERIE . "' " . "when {$t}.fk_turma!=0 then '" . Destinatario::TURMA . "' " . "else '" . Destinatario::USUARIO . "' " . "end)", "area_transf_dest_alvo" => "(case " . "when {$t}.fk_unidade!=0 " . "then ({$sqlUnidade->select()->columnsReset()->columns("unidade||''")->where("pk_unidade={$t}.fk_unidade")->limit(1)}) " . "when {$t}.fk_serie!=0 " . "then ({$sqlSerie->select()->columnsReset()->columns("serie||''")->where("pk_serie={$t}.fk_serie")->limit(1)}) " . "when {$t}.fk_turma!=0 " . "then ({$sqlTurma->select()->columnsReset()->columns("turma||''")->where("pk_turma={$t}.fk_turma")->limit(1)}) " . "else ({$sqlUsuario->select()->columnsReset()->columns("usuario||''")->where("pk_usuario={$t}.fk_usuario " . "and {$t}.fk_tipo_usuario=pk_tipo_usuario")->limit(1)}) " . "end)"));
 }
 /**
  * Método que retorna a turma selecionada
  */
 protected function selecionada()
 {
     $sqlTurma = new SqlTurma();
     $id = false;
     $tmp = false;
     //Selecionando o id de acordo com o perfil logado
     switch ($this->tipoLogado) {
         case Perfil::ALUNO:
             $id = (int) $this->data["idTurmaAluno"];
             break;
         default:
             break;
     }
     if ($id) {
         $turma = $sqlTurma->get($id);
         $tmp = $this->modelo($turma);
     }
     //
     $this->appendResposta($tmp);
 }
Exemple #4
0
 /**
  * Método que realiza as consultas de listagen de turmas de acordo com o usuário logado
  * 
  * @param Filtros $filtros Objeto do sistema de filtros
  * 
  * @return ResultSetHydrator Objeto contendo a resposta da consulta
  */
 public function listar(Filtros $filtros, Usuario $usrFiltro = null)
 {
     $sqlTurma = new SqlTurma();
     if ($usrFiltro instanceof Usuario) {
         $usuario = $usrFiltro;
     } else {
         $usuario = $this->usuarioLogado;
     }
     switch ($usuario->getPerfil()->getId()) {
         case Perfil::COORDENADOR:
             $coordenador = new Coordenador($usuario->getId());
             return $sqlTurma->deCoordenador($coordenador, $filtros);
         case Perfil::ALUNO:
             $aluno = new Aluno($usuario->getId());
             return $sqlTurma->deALuno($aluno, $filtros);
         case Perfil::PROFESSOR:
             $professor = new Professor($usuario->getId());
             return $sqlTurma->deProfessor($professor, $filtros);
         default:
             return $sqlTurma->listarTodas($filtros);
     }
 }
Exemple #5
0
 /**
  * Método que gera um novo teste e o retorna para o aluno.
  */
 private function get_novo_teste()
 {
     try {
         $this->filtro->initGets('topico');
         $usrValidar = new Usuarios();
         $sqlQuestao = new SqlQuestaoService();
         $sqlTurma = new SqlTurma();
         $sqlTopico = new SqlTopico();
         $sqlAcomp = new SqlAcompanhamento();
         $aluno = $usrValidar->getAluno(false);
         $topico = $sqlTopico->get($this->filtro->get('topico'));
         $capitulo = $topico->getCapitulo();
         $acomp = $sqlAcomp->deTopico($topico);
         $tipo = filter_input(INPUT_GET, "testePara");
         if ($tipo == "capitulo") {
             $sqlTeste = new SqlTesteCapitulo();
             $novoTeste = new TesteCapitulo();
             $novoDe = $capitulo;
         } elseif ($tipo == "topico") {
             $sqlTeste = new SqlTesteTopico();
             $novoTeste = new TesteTopico();
             $novoDe = $topico;
         } else {
             throw new Exception("O alvo do teste não é permitido");
         }
         if ($acomp->getStatus() != Acompanhamento::STATUS_CONCLUIDO && $acomp->getStatus() != Acompanhamento::STATUS_REVISADO) {
             throw new Exception('O tópico informado ainda não ' . 'foi concluído. Tente outro.');
         }
         $teste = $sqlTeste->porAlunoTopico($aluno, $topico);
         if ($teste) {
             //Caso já exista um teste
             if (!$teste->podeRefazer()) {
                 //O teste já foi feito e não pode ser refeito
                 throw new Exception('Você já realizou o teste. ' . 'Sua nota não permite refazer o teste. Que pena.');
             }
         } else {
             //Caso ainda não exista um teste
             $turma = $sqlTurma->deALuno($aluno);
             $q1 = $sqlQuestao->semTurma($novoDe, $turma);
             $questoes = $q1->fetchAll();
             if (count($questoes) < $novoTeste->getMaxQuestoes()) {
                 $q2 = $sqlQuestao->questoesAdicionais($capitulo, $questoes);
                 $questoes = array_merge($questoes, $q2->fetchAll());
             }
             $teste = $novoTeste;
             $teste->setAluno($aluno);
             $teste->setAlvo($novoDe);
             $teste->setQuestoes($questoes);
             $sqlTeste->insert($teste);
         }
         $arrayTmp = array();
         foreach ($teste->getQuestoes() as $questao) {
             $tmp = new stdClass();
             $tmp->idQuestao = $questao->getId();
             $tmp->questao = $questao->getQuestao();
             $tmp->tipo = $questao->getTipo();
             $tmp->tipoTexto = $questao->getTipoInsert();
             $tmp->qtAlternativas = $questao->getNumAlternativas();
             array_push($arrayTmp, $tmp);
         }
         //Gerando a resposta
         $this->setMensagem('Teste gerado com sucesso');
         $this->appendResposta($arrayTmp);
         $this->statusTrue();
     } catch (SqlException $sql) {
         $this->setMensagem('Ocorreu um erro interno. ' . 'Tente novamente mais tarde.');
     } catch (Exception $exc) {
         $this->setMensagem($exc->getMessage());
     }
     $this->printResposta();
 }
Exemple #6
0
 /**
  * Método que gera uma consulta básica para uso interno da classe
  * 
  * @return Select
  */
 public function select()
 {
     $select = new Select($this->tg->getTabela());
     $sqlTurma = new SqlTurma();
     return $select->columns("pk_aula")->columns(array("aula", "obs", "data_aula"), "aula_")->import($this->usrInsert(""))->join("public.grade", array("pk_grade" => "{$this->tg->getTabela()}.fk_grade"))->join("public.turma", array("pk_turma" => "public.grade.fk_turma"))->import($sqlTurma->select());
 }
Exemple #7
0
 /**
  * Método que gera a página de distribuição de atendimentos por turmas
  * 
  * @param int $pkUsuario O código do coordenador
  */
 public function distribuicao_de_atendimentos_por_turmas($pkUsuario = 0)
 {
     try {
         $this->initGets(array('de', 'ate', 'unidade', 'ensino', 'serie', 'turma', 'coordenador'));
         $usr = new Usuarios();
         $sqlAfa = new SqlAtenPedagogicosEqPedagogica();
         $sqlTurmas = new SqlTurma();
         //
         if ($this->filtro->issetGet('coordenador')) {
             $sqlCoord = new SqlCoordenador();
             $coordenador = $sqlCoord->get($this->filtro->get('coordenador'));
         } else {
             $coordenador = $usr->getCoordenador((int) $pkUsuario);
         }
         $turmas = $sqlTurmas->deCoordenador($coordenador, $this->filtro);
         $anotacoes = $sqlAfa->deCoordenador($coordenador, $this->filtro);
         $this->loadPlugin('calc-itens')->setUserFiltros($coordenador)->setData('coordenador', $coordenador)->setData('turmas', $turmas->fetchAll())->setData('anotacoes', $anotacoes->fetchAll())->printView();
     } catch (Exception $exc) {
         $this->close($exc);
     }
 }
Exemple #8
0
 /**
  * Método que lista todas as séries associadas ao coordenador informado
  * 
  * @param Coordenador $coordenador O coordenador usado como filtros
  * @param Filtros $filtros Objeto do sistema de filtros
  * 
  * @return ResultSetHydrator Um objeto contendo as séries encontradas
  */
 public function deCoordenador(Coordenador $coordenador, Filtros $filtros)
 {
     $where = "public.turma.ano={$this->anoLetivo} ";
     $selectTemp = $this->select();
     if ($filtros->issetVar("unidade")) {
         $where .= "and pk_unidade={$filtros->get("unidade")} ";
     }
     if ($filtros->issetVar("ensino")) {
         $where .= "and pk_ensino={$filtros->get("ensino")} ";
     }
     $sqlTurma = new SqlTurma();
     $select = new Select(array("series" => $selectTemp->import($sqlTurma->select(), array("colunas"))->where($where)->order("serie_nome")));
     return $this->tg->selectObj($select->join("public.turma_vin", array("fk_turma" => "pk_turma"))->join("public.coordenacao", array("pk_coordenacao" => "public.turma_vin.fk_coordenacao"))->join("public.coordenacao_vin", array("fk_coordenacao" => "pk_coordenacao"))->join("public.usuario_tipo_vin", array("pk_usuario_tipo_vin" => "public.coordenacao_vin.fk_usuario_tipo_vin"))->where("fk_usuario={$coordenador->getId()}")->distinct("pk_serie"));
 }
 /**
  * Método que gera a página de exibição do tópico acessado na home do estudo online.
  * Só é exibido o tópico já dado em sala de aula.
  *
  * @param int $topicoId O código do tópico
  */
 public function estudoOnlineTopico($topicoId)
 {
     $this->load->helper('link');
     $usrAux = new Usuarios();
     $sqlTurma = new SqlTurma();
     $sqlTopico = new SqlTopicoAula();
     $sqlAnexo = new SqlAnexosAula();
     $sqlQuestao = new SqlQuestaoAula();
     $sqlAcomp = new SqlAcompanhamento();
     $sqlLivreto = new SqlLivretoAula();
     $teste = false;
     try {
         $aluno = $usrAux->getAluno(false);
         $turma = $sqlTurma->deALuno($aluno)->fetch();
         $topico = $sqlTopico->get((int) $topicoId);
         $anexos = $sqlAnexo->deTopicoECapitulo($topico);
         $acomp = $sqlAcomp->deTopico($topico);
         $livreto = $sqlLivreto->deTopico($topico);
         if ($acomp->getStatus() == Acompanhamento::STATUS_CONCLUIDO || $acomp->getStatus() == Acompanhamento::STATUS_REVISADO) {
             //Criando um teste para o tópico
             $sqlTeste = new SqlTesteTopico();
             $teste = $sqlTeste->porAlunoTopico($aluno, $topico);
             if (!$teste) {
                 //Verificando se existem questões cadastrdas para realizar o teste
                 if ($sqlQuestao->temParaTopico($topico)) {
                     //Tem
                     //Gera o teste
                     $teste = new TesteTopico();
                 }
             }
         }
         //Passando os dados para o view
         $this->loadPlugin('shadowbox');
         $this->setData('aluno', $aluno);
         $this->setData('turma', $turma);
         $this->setData('livro', $livreto);
         $this->setData('topico', $topico);
         $this->setData('anexos', $anexos);
         $this->setData('teste', $teste);
         $this->printView();
     } catch (SqlException $sql) {
         echo $sql->getMessage();
         echo Javascript::alert('Ocorreu um erro interno. ' . 'Tente novamente mais tarde.');
         //            $this->close(true);
     } catch (Exception $exc) {
         echo $exc->getMessage();
         //            $this->close(true);
     }
 }
Exemple #10
0
 /**
  * Método que gera o painel de acompanhamento do aluno
  * @param int $pkAluno O código do usuário referente ao aluno na
  * tabela de usuários
  */
 public function painel_de_acompanhamento($pkAluno = 0)
 {
     if ($_SERVER['REQUEST_METHOD'] == "POST") {
         //Tratando a requisição POST
         $this->editarFoto($pkAluno);
     }
     if (!filter_input(INPUT_GET, "menu", FILTER_VALIDATE_BOOLEAN)) {
         //Definindo se deve ou não exibir o menu principal
         $this->setShadowBox(TRUE);
     }
     //Inicializando os objetos básicos
     $usrAux = new Usuarios();
     $sqlUnidade = new SqlUnidade();
     $sqlSerie = new SqlSerie();
     $sqlTurmas = new SqlTurma();
     $sqlResumo = new SqlResumoALuno();
     $sqlAcomp = new SqlAcompanhamento();
     $sqlAgenda = new SqlAgendaSemanalAluno();
     $sqlRecuperacao = new SqlRecuperacao();
     $centralNotifi = new Kernel_Models_Notificacoes();
     //Refazer como lib
     $sqlPlantao = new SqlPlantaoPedagogico();
     try {
         $aluno = $usrAux->getAluno((int) $pkAluno);
         $resumo = $sqlResumo->get($aluno->getId());
         $alunoInfo = $sqlPlantao->get_aluno_info($aluno->getId());
         //
         $videos = array();
         $videos = array_merge($videos, $sqlAgenda->listarTodas($aluno)->fetchAll());
         $videos = array_merge($videos, $sqlAcomp->videosAcompanahemto($aluno)->fetchAll());
         //Definindo os parametros para as notificações
         $ids = array("aluno_conteudo_diario", "aluno_regs_afa", "aluno_aten_afa", "aluno_acao_afa", "aluno_novas_notas", "aluno_mensagens");
         $parametros = array("idAluno" => (string) $aluno->getId());
         $centralNotifi->getUltimos($ids, $parametros);
         $recParalela = $sqlRecuperacao->get_modulos_aluno($aluno->getIdEspecifico());
         //Definindo os plugins usados na página e o template
         $this->definirTema("responsive");
         if ($this->tipoLogado == Perfil::ALUNO || $this->tipoLogado == Perfil::RESPONSAVEL) {
             //As notificações só aparecem para o aluno ou responsável
             $this->loadPlugin("notif.center");
         }
         $this->bowerLoad("jquery-form");
         $this->loadPlugin("shadowbox");
         $this->loadPlugin("file_upload");
         //Passando os dados para a view e exibindo a página
         $this->setData("aluno", $aluno);
         $this->setData("resumo", $resumo);
         $this->setData("unidades", $sqlUnidade->deAluno($aluno)->fetchAll());
         $this->setData("serie", $sqlSerie->deAluno($aluno)->fetch());
         $this->setData("turma", $sqlTurmas->deALuno($aluno)->fetch());
         $this->setData("estaRecparalela", (bool) count($recParalela));
         $this->setData("turmaOlimAssoc", $sqlAcomp->pkAlunoTurmaOlimpica($aluno));
         $this->setData("turmaAvancada", $sqlAcomp->pkAlunoTurmaAvancada($aluno));
         $this->setData("centralNotifi", $centralNotifi);
         $this->setData("parametros", $parametros);
         $this->setData("mensagens", $sqlAcomp->listarMensagens($aluno));
         $this->setData("videos", array());
         $this->setData("arquivos", new Arquivos());
         $this->setData("videos", $videos);
         $this->setData("alunoInfo", $alunoInfo);
         //Imprimindo a página
         $this->printView();
     } catch (Exception $exc) {
         $this->close($exc);
     }
 }