Example #1
0
 /**
  * Metodo que retorna uma query básica usada para as buscas.
  *
  * @return Select Um objeto contendo uma query genérica
  */
 public function select()
 {
     $t = $this->tg->getTabela();
     $select = new Select($t);
     $sqlAluno = new SqlAluno();
     $sqlUsuario = new SqlUsuario();
     $sqlSubtipo = new SqlSubTipo();
     return $select->columns(array("data_evento", "score", "obs"), "afa_conceito_aluno_")->columns(array("pk_afa_conceito_aluno", "fk_usuario_coordenador"))->columns(array("afa_conceito_aluno_alvo" => $sqlAluno->select()->columnsReset()->columns(array("usuario||','||usuario_aluno"))->where("pk_usuario_aluno=fk_usuario_aluno")->limit(1), "afa_conceito_aluno_usuario_inc" => $sqlUsuario->select()->columnsReset()->columns(array("usuario||','||funcao_usuario"))->where("pk_usuario={$this->tabela}.fk_usuario_inc")->limit(1)))->join("afa.afa_subtipo_anotacao", array("pk_afa_subtipo_anotacao" => "fk_afa_subtipo_anotacao"))->join("public.usuario_aluno", array("pk_usuario_aluno" => "fk_usuario_aluno"))->join("public.aula", array("pk_aula" => "fk_aula"), Join::LEFT_JOIN)->import($this->usrAutor())->import($sqlSubtipo->select());
 }
Example #2
0
 /**
  * Método que retorna os alunos de acordo com o 
  * usuário logado e os filtros informados
  * 
  * @param Filtros $filtros Objeto do sistema de filtros
  * 
  * @return ResultSetHydrator Um objeto contendo os alunos retornados da consulta
  */
 public function listar(Filtros $filtros)
 {
     $sqlAluno = new SqlAluno();
     switch ($this->usuarioLogado->getPerfil()->getId()) {
         case Perfil::ADMIN:
         case Perfil::GESTOR:
             return $sqlAluno->listarTodos($filtros);
         case Perfil::COORDENADOR:
             $coordenador = new Coordenador($this->usuarioLogado->getId());
             return $sqlAluno->deCoordenador($coordenador, $filtros);
         case Perfil::RESPONSAVEL:
         default:
             break;
     }
 }
Example #3
0
 /**
  * Método que retorna uma consulta genérica para uso da classe
  * 
  * @return Select
  */
 public function select()
 {
     //Consultas internas
     $selAfaT = "select count(pk_afa_conceito_aluno) " . "from afa.afa_conceito_aluno " . "inner join afa.afa_subtipo_anotacao on " . "pk_afa_subtipo_anotacao=fk_afa_subtipo_anotacao " . "inner join public.usuario_aluno " . "on pk_usuario_aluno=fk_usuario_aluno " . "where fk_usuario=pk_usuario and fk_afa_tipo_anotacao=";
     $selAfaS = "select count(pk_afa_conceito_aluno) " . "from afa.afa_conceito_aluno " . "inner join public.usuario_aluno " . "on pk_usuario_aluno=fk_usuario_aluno " . "where fk_usuario=pk_usuario and fk_afa_subtipo_anotacao=";
     $select = new Select();
     return parent::select()->columns(array("unidade" => "(select fk_unidade from public.turma " . "where pk_turma=public.usuario_aluno.fk_turma limit 1)", "in" => $select->reset()->columns("media_aluno")->from("mestre.medias_alunos")->where("media_aluno<>-1 " . "and mat_alumat=public.usuario_aluno.matricula " . "and mestre.medias_alunos.ano='{$this->anoLetivo}'")->order("referencia", Order::DSC)->limit(1), "if" => $select->reset()->columns("score")->from("afa.afa_conceito_aluno")->join("public.usuario_aluno", array("pk_usuario_aluno" => "fk_usuario_aluno"))->where("fk_usuario=pk_usuario")->order("pk_afa_conceito_aluno", Order::DSC)->limit(1), "afa_p" => "(" . $selAfaT . Tipo::TIPO_POSITIVO . ")", "afa_n" => "(" . $selAfaT . Tipo::TIPO_NEGATIVO . ")", "acao" => "(" . $selAfaT . Tipo::TIPO_ACAO_PEDAGOGICA_FORMATIVA . ")", "aten" => "(" . $selAfaT . Tipo::TIPO_ATENDIMENTO . ")", "falta" => "(" . $selAfaS . Subtipo::SUB_TIPO_FALTA . ")", "atraso" => "(" . $selAfaS . Subtipo::SUB_TIPO_ATRASO . ")"));
 }
Example #4
0
 /**
  * Método que retorna um aluno de acordo com o código informado 
  * e o usuário logado.
  *
  * @param int   $id             O código do aluno
  * @param Aluno $especializacao Case seja informado, usa como 
  *                              modelo para o retorno
  *
  * @return Aluno Um objeto do tipo aluno contendo os dados do 
  *               aluno informado
  *
  * @throws UsuarioException
  */
 public function getAluno($id, Aluno $especializacao = null)
 {
     $sqlALuno = new SqlAluno();
     $alunoModelo = new Aluno();
     $aluno = null;
     if (!is_null($especializacao)) {
         $alunoModelo = $especializacao;
     }
     switch ($this->perfilLogado) {
         case Perfil::ALUNO:
             $aluno = $sqlALuno->get($this->idLogado, $alunoModelo);
             break;
         case Perfil::COORDENADOR:
             $alunoModelo->setId($id);
             $coordenador = new Coordenador($this->idLogado);
             $aluno = $sqlALuno->getDeCoordenador($coordenador, $alunoModelo);
             break;
         default:
             $aluno = $sqlALuno->get($id, $alunoModelo);
             break;
     }
     return $aluno;
 }
Example #5
0
 /**
  * Método que faz o envio dos conteúdos pré e pós no dia da aula
  */
 public function enviar()
 {
     //Bloqueando a execução fora do horário correto
     $horaAgora = new DateTime("now");
     //Data e hora atual
     $horaInicio = new DateTime(date("Y-m-d") . " 07:00:00");
     //Hora de inicio do envio
     $horaFim = new DateTime(date("Y-m-d") . " 23:00:00");
     //Hora de termino do envio
     $intervaloInicio = $horaAgora->diff($horaInicio);
     $intervaloFim = $horaAgora->diff($horaFim);
     if ($intervaloInicio->h <= 0 && $intervaloFim->h <= 0) {
         //Envio fora do horário
         echo "Fora do horário de execução\n";
         exit(0);
     }
     //Inicializando as variaveis básicas da página e fazendo as consultas iniciais
     $sqlTurmaPrePos = new SqlTurmasPrePos();
     $sqlTurmaEnvio = new SqlTurmasEnvio();
     $sqlAlunos = new SqlAluno();
     $sqlAnexos = new SqlAnexoCron();
     $turma = $sqlTurmaEnvio->turmaParaEnvio();
     //Verificando se foi encontrada alguma turma
     if (!$turma) {
         //Não existem turmas para o envio ainda
         echo "Sem turmas para envio" . PHP_EOL;
         exit(0);
     }
     //Listando os anexos de conteúdos ministrados hoje
     $anexosPos = $sqlAnexos->anexosPosHoje($turma->getTurma());
     //Montando a mensagem com conteúdo pós
     $msgString = "<div>";
     $classeRight = 0;
     $cabecalhoQt = 1;
     $mensagem = file_get_contents(dirname(__FILE__) . "/../view/envioPrePos/enviar.html");
     $snippetAnexo = file_get_contents(dirname(__FILE__) . '/../view/envioPrePos/snippet/anexo.html');
     if ($anexosPos->rowCount()) {
         //O conteúdo pós foi encontrado, adiciona o cabeçalho
         $mensagem = str_replace("{{cabecalho{$cabecalhoQt}}}", "Conteúdos sugeridos (Pós-aula)", $mensagem);
         $cabecalhoQt++;
     }
     //Adicionando o conteúdo pós a mensagem
     while ($anexos = $anexosPos->fetch()) {
         $msgString .= str_replace(array("{{url}}", "{{descricao}}", "{{miniatura}}", "{{materia}}", "{{float}}"), array($anexos->urlPaginaAnexo(), $anexos->getObs(), $anexos->getMiniatura(), "Matéria - <small>{$anexos->getDescricao()}</small>", $classeRight++ % 2 ? "float: right;" : ""), $snippetAnexo);
     }
     $msgString .= "</div>";
     $conteudoPos = $msgString;
     //Verificando se a turma tem aula amanhã, caso não tenha, agenda para o dia da próxima aula
     $materiasAmanha = $sqlTurmaEnvio->turmaAulasAmanha($turma->getTurma());
     if ($materiasAmanha->rowCount()) {
         $conteudosDia = array();
         //Lendo os anexos para o dia seguinte
         while ($materia = $materiasAmanha->fetch()) {
             foreach (range(0, 7) as $qt) {
                 $dia = date("N", strtotime("-{$qt} days"));
                 //Verificando se houve aula da máteria no dia informado
                 if ($sqlTurmaPrePos->houveAulaMateria($turma->getTurma(), $materia, $dia)) {
                     //Lendo o conteúdo ministrado no dia
                     $conts = $sqlAnexos->conteudosDoDia($turma->getTurma(), date("Y-m-d", strtotime("-{$qt} days")), $materia);
                     if (count($conts)) {
                         $conteudosDia = array_merge($conteudosDia, $conts);
                     }
                     break;
                 }
             }
         }
         //Listando os próximos conteúdos e seus anexos
         $anexosPre = array();
         foreach ($conteudosDia as $conteudo) {
             $anexosPre = array_merge($anexosPre, $sqlAnexos->anexosPre($turma->getTurma(), $conteudo));
         }
     } else {
         //A turma não tem aula amanhã, verifica o dia da próxima aula e agenda
         $anexosPre = array();
         $dias = array();
         $turmasDias = $sqlTurmaPrePos->turmasAulas($turma->getTurma());
         if ($turmasDias->rowCount()) {
             while ($turmaDia = $turmasDias->fetch()) {
                 $dias[$turmaDia->getDia()] = $turmaDia;
             }
             $qtSoma = (int) date("N");
             $qtSoma++;
             $dia = date("N", strtotime("+{$qtSoma} days"));
             //Verificando o dia da proxima aula
             while (!isset($dias[$dia])) {
                 $qtSoma++;
                 $dia = date("N", strtotime("+{$qtSoma} days"));
             }
             $qtSoma--;
             $dia = date("N", strtotime("+{$qtSoma} days"));
             $turmaDia = $dias[$dia];
             $turmaDia->setHora(new DateTime(date("Y-m-d") . " 12:00:00"));
             //Agendando o envio
             $sqlTurmaPrePos->agendar($turmaDia);
         }
     }
     //Verificando se ha o que enviar para amanhão(Conteúdo pre)
     if (count($anexosPre)) {
         //Adicionando o conteúdo ao template
         $mensagem = str_replace("{{cabecalho{$cabecalhoQt}}}", "Conteúdos sugeridos (Pré-aula)", $mensagem);
         $cabecalhoQt++;
     }
     //Adicionando o conteúdo pós a mensagem
     $classeRight = 0;
     $msgString = "<div>";
     foreach ($anexosPre as $anexos) {
         $msgString .= str_replace(array("{{url}}", "{{descricao}}", "{{miniatura}}", "{{materia}}", "{{classe}}"), array($anexos->getUrlAnexo(), $anexos->getDescricao(), $anexos->getMiniatura(), $anexos->materia_nome, $classeRight++ % 2 ? "right" : "left"), $snippetAnexo);
     }
     $msgString .= "</div>";
     $conteudoPre = $msgString;
     //Template final
     $mensagem = str_replace("{{conteudosPos}}", $conteudoPos, $mensagem);
     $mensagem = str_replace("{{data}}", date("d/m/Y"), $mensagem);
     $mensagem = str_replace("{{conteudosPre}}", $conteudoPre, $mensagem);
     //Limpando o template
     $mensagem = preg_replace("/\\{\\{[a-z-A-Z-0-9]*\\}\\}/i", "", $mensagem);
     //Definindo os alunos da turma
     //        die($mensagem);
     $alunos = $sqlAlunos->deTurma($turma->getTurma());
     if (!count($alunos)) {
         //Não foram encontrados alunos para o envio
         echo "Sem alunos para o envio";
         $sqlTurmaPrePos->removerTurma($turma);
         exit(0);
     }
     //Realizando o envio das mensagens
     if (count($anexosPos->fetchAll()) || count($anexosPre)) {
         echo "Enviando" . PHP_EOL;
         //Somente envia caso haja conteúdo pré ou pós
         $newsLetter = new Kernel_Models_NewsletterContas();
         $assunto = "Conteúdos Pós e Pré aulas";
         foreach ($alunos->fetchAll(new Aluno()) as $aluno) {
             //                $newsLetter->enviar($aluno->getNome(), $aluno->getEmail(), $assunto, $mensagem);
             $newsLetter->enviar($aluno->getNome(), "*****@*****.**", $assunto, $mensagem);
         }
     } else {
         echo "Sem conteúdo para envio" . PHP_EOL;
         exit(0);
     }
     //Removendo a turma da lista de turmas agendadas
     $sqlTurmaPrePos->removerTurma($turma);
     echo "Envio concluído " . PHP_EOL;
     exit(0);
 }
Example #6
0
 /**
  * Método que gera a página de distribuição de atendimentos por alunos.
  * 
  * @param type $pkUsuario
  */
 public function distribuicao_de_atendimentos_por_alunos($pkUsuario = 0)
 {
     try {
         $this->initGets(array('de', 'ate', 'unidade', 'ensino', 'serie', 'turma', 'coordenador'));
         $usr = new Usuarios();
         $sqlAfa = new SqlAtenPedagogicosEqPedagogica();
         $sqlAluno = new SqlAluno();
         //
         if ($this->filtro->issetGet('coordenador')) {
             $sqlCoord = new SqlCoordenador();
             $coordenador = $sqlCoord->get($this->filtro->get('coordenador'));
         } else {
             $coordenador = $usr->getCoordenador((int) $pkUsuario);
         }
         $alunos = $sqlAluno->deCoordenador($coordenador, $this->filtro);
         $anotacoes = $sqlAfa->deCoordenador($coordenador, $this->filtro);
         $this->setUserFiltros($coordenador)->setData('coordenador', $coordenador)->setData('alunos', $alunos)->setData('anotacoes', $anotacoes->fetchAll())->printView();
     } catch (Exception $exc) {
         $this->close($exc);
     }
 }