/**
  * Método contendo o modelo básico de consultas para uso da classe.
  * 
  * @return Select
  */
 public function select()
 {
     $select = new Select();
     $sqlDisciplina = new SqlMateria();
     $sqlSerie = new SqlSerie();
     return $select->columns(array('pk_materia_vin', 'materia_vin_video_apresentacao'))->join('public.serie', array('pk_serie' => "{$this->tg->getTabela()}.fk_serie"))->import($sqlSerie->select())->join('public.materia', array('pk_materia' => "{$this->tg->getTabela()}.fk_materia"))->import($sqlDisciplina->select());
 }
Пример #2
0
 /**
  * Método que gera um select base para as consultas.
  *
  * @return Select
  */
 public function select()
 {
     $selMaterias = new Select('public.materia');
     $selMaterias->columns("array_to_string(array_agg(materia_nome),',')")->join('public.materia_vin', array('fk_materia' => 'pk_materia'))->join('apostilas.capitulo', array('fk_materia_vin' => 'pk_materia_vin'))->join('apostilas.conteudo', array('fk_capitulo' => 'pk_capitulo'))->join('testes.questao_vin_topico', array('questao_vin_topico_pk_conteudo' => 'pk_conteudo'))->where('questao_vin_topico_pk_questao=pk_questao');
     $select = new Select();
     return $select->columns("*, ({$selMaterias}) as questao_disciplinas")->join('testes.questao_vin_topico', array('questao_vin_topico_pk_questao' => 'pk_questao'))->join('apostilas.conteudo', array('pk_conteudo' => 'questao_vin_topico_pk_conteudo'))->join('apostilas.capitulo', array('pk_capitulo' => 'fk_capitulo'))->join('public.materia_vin', array('pk_materia_vin' => 'fk_materia_vin'));
 }
Пример #3
0
 /**
  * Método que retorna um select base para a maioria das consultas da classe
  * @return Select Um objeto contendo o molde para a consulta básica
  */
 public function select()
 {
     $select = new Select($this->tg->getTabela());
     $sqlLivro = new SqlLivro();
     $sqlDisciplina = new SqlDisciplina();
     return $select->columns(array("pk_capitulo", "capitulo_sequencial", "capitulo_nome"))->join("apostilas.livro", array("pk_livro" => "fk_livro"))->import($sqlLivro->select())->join("public.materia_vin", array("pk_materia_vin" => "fk_materia_vin"))->join("public.materia", array("pk_materia" => "public.materia_vin.fk_materia"))->import($sqlDisciplina->select());
 }
Пример #4
0
 /**
  * Método que gera a consulta básica para a classe.
  *
  * @return Select
  */
 public function select()
 {
     $select = new Select($this->tg->getTabela());
     $sqlLIvro = new SqlLivroAula();
     $sqlDisciplina = new SqlDisciplina();
     return $select->columns(array('pk_livro', 'livro_desc', 'livro_digital', 'livro_mat_desc_video'))->join('public.materia', array('pk_materia' => "{$this->tg->getTabela()}.fk_materia"))->import($sqlDisciplina->select())->join('apostilas.livro', array('pk_livro' => "{$this->tg->getTabela()}.fk_livro"))->import($sqlLIvro->select());
 }
Пример #5
0
 /**
  * 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());
 }
Пример #6
0
 /**
  * Método que retorna as mensagens do aluno informado
  * 
  * @param Aluno $aluno
  * @param Filtros $filtros Objeto do sistema de filtros
  * 
  * @return ResultSetHydrator Um objeto contendo a resposta da consulta
  */
 public function deAluno(Aluno $aluno, Filtros $filtros)
 {
     $where = "public.usuario_aluno.fk_usuario={$aluno->getId()}";
     $select = $this->select()->distinct(array("pk_area_transferencia"))->join("public.usuario_aluno", array("fk_turma" => "transf.area_transferencia_dest.fk_turma"));
     $this->filtrosPeriodo($where, $filtros, "data_inc");
     $sel = new Select(array("mensagens" => $select->where($where)));
     return $this->tg->selectObj($sel->order(array("{$this->tg->getTabela(true)}_data_inc")));
 }
Пример #7
0
 /**
  * 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()
 {
     $select = new Select($this->tabela);
     $sqlUsuario = new SqlUsuario();
     $sqlTipo = new SqlTipo();
     $sqlDest = new SqlDestinatario();
     return $select->columns(array("titulo", "texto", "status", "data_inc"), "area_transf_")->columns(array("pk_area_transf" => "pk_area_transferencia"))->join($sqlUsuario->getTabela(), array("pk_usuario" => "{$this->tabela}.fk_usuario_remetente"))->import($sqlUsuario->select())->join($sqlTipo->getTabela(), array("pk_area_transf_tipo" => "{$this->tabela}.fk_area_transf_tipo"))->import($sqlTipo->select())->join($sqlDest->getTabela(), array("fk_area_transferencia" => "pk_area_transferencia"))->import($sqlDest->select());
 }
Пример #8
0
 /**
  * Método que retorna uma consulta modelo para uso da classe.
  *
  * @return Select
  */
 public function select()
 {
     $t = $this->tg->getTabela();
     $sqlSubtipo = new SqlSubtipo();
     $sqlUsuario = new SqlUsuario();
     $select = new Select($t);
     return $select->columns(array('fap_obs', 'data_evento', 'data_inc', 'score'), 'fap_registro_')->columns("pk_fap_registro")->join('fap.fap_subtipo', array('pk_fap_subtipo' => 'fk_fap_subtipo'))->import($sqlSubtipo->select())->import($this->usrAutor())->join("public.usuario_professor", array("pk_usuario_professor" => "{$t}.fk_usuario_professor"))->join("public.usuario", array("pk_usuario" => "public.usuario_professor.fk_usuario"))->import($sqlUsuario->select());
 }
Пример #9
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 . ")"));
 }
Пример #10
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());
 }
Пример #11
0
 /**
  * Método que retorna a série em que o aluno estuda
  * @param Aluno $aluno O aluno usado como filtro
  * @return Serie A série em que o aluno informado estuda
  */
 public function deAluno(Aluno $aluno)
 {
     $select = new Select();
     $serie = $this->tableGatway->selectObj($select->distinct("pk_serie")->join("public.turma", array("fk_serie" => "pk_serie"))->join("public.usuario_aluno", array("pk_turma" => "fk_turma"))->join("public.ensinos", array("ensino" => "pk_ensino"))->join("public.curso", array("pk_curso" => "fk_curso"))->where(array("fk_usuario" => $aluno->getId(), "ano" => \GGE\Lib\Controller\Loader::data("config", "site", "ano_letivo")))->limit(1));
     if (!$serie->rowCount()) {
         throw new Exception("Não foi encontrada nenhuma série para o aluno informado");
     }
     return $serie->fetch();
 }
Пример #12
0
 /**
  * Método que lista todos os comentários feitos para o anexo informado.
  *
  * @param Anexos $anexo
  *
  * @return ResultSetHydrator Um objeto contendo conversões de modelos com os dados da consulta
  *
  * @throws Exception
  */
 public function comentariosDeAnexo(Anexos $anexo)
 {
     if (!is_int($anexo->getId())) {
         throw new Exception('O anexo informado não é válido', 11);
     }
     $select = new Select();
     $select->where(array('comentario_fk_anexo' => $anexo->getId()))->join('public.usuario', array('comentario_fk_usuario' => 'pk_usuario'))->join('apostilas.anexos', array('pk_anexo' => 'comentario_fk_anexo'));
     return $this->tg->selectObj($select);
 }
Пример #13
0
 /**
  * Método que lista todos os comentários feitos para o anexo informado
  * @param Anexos $anexo
  * @return ResultSetHydrator Um objeto contendo conversões de modelos com os dados da consulta
  * @throws Exception
  */
 public function comentariosDeAnexo(Anexos $anexo)
 {
     if (!is_int($anexo->getId())) {
         throw new Exception("O anexo informado não é válido", 11);
     }
     $select = new Select();
     $select->where(array("comentario_fk_anexo" => $anexo->getId()))->join("public.usuario", array("comentario_fk_usuario" => "pk_usuario"))->join("apostilas.anexos", array("pk_anexo" => "comentario_fk_anexo"));
     return $this->tableGatway->selectObj($select);
 }
Пример #14
0
 /**
  * Método que retorna todos os professores associados ao coordenador informado
  * 
  * @param Coordenador $coordenador O coordenador usado como filtro
  * @param Filtros $filtros Objeto do sistema de filtros
  * 
  * @return ResultSetHydrator Um objeto contendo a resposta da consulta
  */
 public function deCoordenador(Coordenador $coordenador, Filtros $filtros)
 {
     $where = "";
     $select = $this->select()->join("public.grade", array("fk_usuario_professor" => "pk_usuario_professor"))->join("public.materia_vin", array("pk_materia_vin" => "public.grade.fk_materia_vin"));
     $this->filtrosUEST($select, $where, $filtros);
     $this->filtrosAGD($select, $where, $filtros);
     $selOrdem = new Select(array("professores" => $select->order("nome")->where($where)));
     return $this->tg->selectObj($selOrdem->distinct(array("pk_usuario"))->join("public.grade", array("fk_usuario_professor" => "pk_usuario_professor"))->join("public.turma_vin", array("fk_turma" => "public.grade.fk_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()}"));
 }
Пример #15
0
 /**
  * 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)"));
 }
Пример #16
0
 /**
  * Método que retorna todos os registros do coordenador informado
  * 
  * @param Coordenador $coordenador O coordenador autor do registro
  * @param Filtros $filtros Objeto do sistema de filtros
  * 
  * @return ResultSetHydrator Um objeto contendo todos os registros retornados
  */
 public function deCoordenador(Coordenador $coordenador, Filtros $filtros)
 {
     $where = "fk_usuario_inc={$coordenador->getId()} ";
     $this->filtrosPeriodo($where, $filtros);
     $this->filtrosTipoSub($where, $filtros);
     if ($filtros->issetGet("professor")) {
         $where .= "and public.usuario_professor.fk_usuario={$filtros->get("professor")} ";
     }
     $select = new Select(array("fap" => $this->select()->where($where)->distinct("pk_fap_registro")));
     return $this->tg->selectObj($select->order("fap_registro_data_evento", Order::DSC));
 }
Пример #17
0
 /**
  * Método que salva uma avaliação de um determinado extra
  * @param AnexosAvaliacao $avaliacao
  * @throws Exception
  */
 public function avaliar(AnexosAvaliacao $avaliacao)
 {
     $select = new Select();
     $ava = $this->tg->selectObj($select->where(array("anexos_ava_fk_anexo" => $avaliacao->getAnexo()->getId(), "anexos_ava_fk_usuario" => $avaliacao->getUsuario()->getId())));
     if ($ava->rowCount()) {
         $aval = $ava->fetch();
         return $this->tg->update("pk_anexos_ava={$aval->getId()}", array("anexos_ava_nota" => $avaliacao->getNota()));
     } else {
         return $this->tg->insert(array("anexos_ava_fk_anexo" => $avaliacao->getAnexo()->getId(), "anexos_ava_fk_usuario" => $avaliacao->getUsuario()->getId(), "anexos_ava_nota" => $avaliacao->getNota(), "anexos_ava_dt" => $avaliacao->getDtHora()->format("Y-m-d G:i:s")));
     }
 }
Пример #18
0
 /**
  * Método que retorna os responsaveis associados ao coordenador informado
  * 
  * @param Coordenador $coordenador O coordenador usado como filtro
  * @param Filtros $filtros Objeto do sistema de filtros
  * 
  * @return ResultSetHydrator Retorna um objeto contendo a resposta da consulta
  */
 public function deCoordenador(Coordenador $coordenador, Filtros $filtros)
 {
     $sqlFuncUsuario = new SqlFuncaoUsuario();
     $sqlPerfil = new SqlPerfil();
     $where = "public.usuario_tipo_vin.fk_usuario={$coordenador->getId()}";
     $selAlunos = new Select("public.usuario_aluno");
     $selAlunos->columns(array("pk_aluno" => "public.usuario_aluno.fk_usuario"))->join("public.turma_vin", array("fk_turma" => "public.usuario_aluno.fk_turma"))->join("public.coordenacao", array("pk_coordenacao" => "fk_coordenacao"))->join("public.coordenacao_vin", array("fk_coordenacao" => "pk_coordenacao"))->join("public.usuario_tipo_vin", array("pk_usuario_tipo_vin" => "fk_usuario_tipo_vin"));
     $this->filtrosUEST($selAlunos, $where, $filtros, "public.turma_vin.fk_turma");
     $select = new Select(array("alunos" => $selAlunos->where($where)));
     //Retornando a consulta
     return $this->tg->selectObj($select->import($this->select(), array("colunas"))->join("public.usuario_aluno", array("fk_usuario" => "pk_aluno"))->join("public.usuario_responsavel_vin", array("fk_usuario_aluno" => "pk_usuario_aluno"))->join("public.usuario_responsavel", array("pk_usuario_responsavel" => "fk_usuario_responsavel"))->join("public.usuario", array("pk_usuario" => "public.usuario_responsavel.fk_usuario"))->join('public.funcao_usuario', array('pk_funcao_usuario' => "{$this->tg->getTabela()}.fk_funcao_usuario"), Join::LEFT_JOIN)->import($sqlFuncUsuario->select())->join('public.usuario_tipo_vin', array('fk_usuario' => 'pk_usuario'))->join('public.tipo_usuario', array('pk_tipo_usuario' => 'public.usuario_tipo_vin.fk_tipo_usuario'))->import($sqlPerfil->select())->distinct("public.usuario.pk_usuario"));
 }
Пример #19
0
 /**
  * Método que retorna um determinado capítulo de acordo com o id informado
  * @param int $id O indice do capítulo desejado
  * @return Capitulo Um objeto capítulo de acordo com o id informado
  * @throws LivroException
  */
 public function get($id)
 {
     if (!is_int($id)) {
         throw new LivroException("O capítulo informado não é válido");
     }
     $select = new Select();
     $resultset = $this->tableGatway->selectObj($select->join("apostilas.livro", array("pk_livro" => "fk_livro"))->join("apostilas.livro_cat", array("pk_livro_cat" => "fk_livro_cat"))->join("public.materia_vin", array("pk_materia_vin" => "fk_materia_vin"))->join("public.materia", array("pk_materia" => "fk_materia"))->join("public.materia_mae", array("pk_materia_mae" => "fk_materia_mae"))->join("public.area", array("pk_area" => "fk_area"))->where(array("pk_capitulo" => $id)));
     if (!$resultset->rowCount()) {
         throw new LivroException("O capítulo informado não foi encontrado");
     }
     return $resultset->fetch();
 }
Пример #20
0
 /**
  * Método que retorna a turma que o aluno estuda
  * @param Aluno $aluno
  * @return Turma Um objeto do tipo turma contendo o resultado da consulta
  * @throws Exception
  */
 public function deALuno(Aluno $aluno)
 {
     $ano = \GGE\Lib\Controller\Loader::data("config", "site", "ano_letivo");
     $select = new Select();
     $this->tableGatway->defineColuna("fk_usuario", new ResultSetMap(Column::INTEGER));
     $this->tableGatway->defineColuna("ano", new ResultSetMap(Column::VARCHAR));
     $turmaResultSet = $this->tableGatway->selectObj($select->join("public.usuario_aluno", array("pk_turma" => "fk_turma"))->where("fk_usuario={$aluno->getId()} " . "and ano={$ano} " . "and public.usuario_aluno.status=" . \GGE\Lib\Models\Status::ATIVO . " " . "and public.turma.status=" . \GGE\Lib\Models\Status::ATIVO)->limit(1));
     if (!$turmaResultSet->rowCount()) {
         throw new TurmaException("Não foi encontrada nenhuma turma associada ao aluno informado");
     }
     return $turmaResultSet->fetch();
 }
Пример #21
0
 /**
  * Método que lista usuários de um determinado perfil
  * @param Usuario $modelo
  * @return array
  * @throws UsuarioException
  */
 public function listar(Usuario $modelo = null)
 {
     //Montando a consulta
     $select = new Select();
     if (!is_null($modelo)) {
         //Caso seja buscado um usuário de acordo com o perfil
         $select->join("public.usuario_tipo_vin", array("pk_usuario" => "public.usuario_tipo_vin.fk_usuario"))->join("public.tipo_usuario", array("pk_tipo_usuario" => "fk_tipo_usuario"))->join($modelo->getPerfil()->getTabela(), array("pk_usuario" => $modelo->getPerfil()->getTabela() . ".fk_usuario"));
         $select->where(array("pk_tipo_usuario" => $modelo->getPerfil()->getId()));
     }
     //Realizando a consulta e testando o resultado
     $querySelect = $this->gatWayUsuario->selectObj($select);
     if (!$querySelect->rowCount()) {
         throw new UsuarioException("Não foram encontrados usuários do perfil informado");
     }
     return $querySelect->fetchAll($modelo);
 }
Пример #22
0
 /**
  * Método que retorna todos anexos referentes aos conteúdo concluídos no dia da execução do método.
  * @param Turma $turma A classe referente a aula
  * @return array Um array de anexos contendo somente os anexos do com objetivo Pós-Aula
  */
 public function anexosPosHoje(Turma $turma)
 {
     if (!is_int($turma->getId())) {
         throw new TurmaException("A turma informada é inválida", 1);
     }
     if (!$turma->getId()) {
         throw new TurmaException("A turma informada é inválida", 2);
     }
     if (!Data::validar($turma->getAno(), "Y")) {
         throw new TurmaException("A turma informada é inválida", 3);
     }
     if (!$turma->getStatus()) {
         throw new TurmaException("A turma informada esta desativada no sistema");
     }
     $hoje = date("Y-m-d");
     $select = new Select();
     $select->distinct("pk_anexo")->join("apostilas.anexos_vin", array("fk_anexo" => "pk_anexo"))->join("apostilas.acompanhamento", array("apostilas.acompanhamento.fk_conteudo" => "apostilas.anexos_vin.fk_conteudo"))->join("apostilas.capitulo", array("pk_capitulo" => "fk_capitulo"))->join("public.materia_vin", array("pk_materia_vin" => "fk_materia_vin"))->join("public.materia", array("pk_materia" => "fk_materia"))->where("posicao=" . Anexos::ANEXO_POS . " and data_aula='{$hoje}' " . "and apostilas.acompanhamento.status=" . Conteudos::STATUS_ACOMPANAHMENTO_CONCLUIDO);
     return $this->tablegateway->selectObj($select);
 }
Пример #23
0
 /**
  * Método que gera uma consulta genérica para so geral da classe.
  *
  * @return Select Uma consulta genérica
  */
 public function select()
 {
     //Objetos responsáveis pelas consultas auxiliares
     $select = new Select();
     //Definindo as subconsultas
     $ia = "(SELECT indicadorgeral_cat FROM fap.pes_process_indicadoresgerais_cat " . "WHERE fk_usuario_professor=pk_usuario_professor " . "order by (fk_pesquisa_cat) desc LIMIT 1)";
     $ic = "(SELECT indicador_geral_professor FROM fap.par_respostas_indicadores_gerais " . "WHERE fk_usuario_professor=pk_usuario_professor " . "order by (fk_par_pesquisa) desc LIMIT 1)";
     $ir = "(SELECT score FROM fap.fap_registro " . "WHERE fk_usuario_professor=pk_usuario_professor " . "and extract(year from data_evento)={$this->anoLetivo} " . "order by (fap.fap_registro.pk_fap_registro) desc LIMIT 1)";
     $lastIa = "(SELECT max(fk_pesquisa_cat) FROM fap.pes_process_indicadoresgerais_cat " . "WHERE fap.pes_process_indicadoresgerais_cat.fk_usuario_professor=pk_usuario_professor )";
     $materiaId = "(SELECT max(fk_materia_mae) FROM public.materia " . "INNER JOIN public.materia_vin on pk_materia=fk_materia " . "INNER JOIN public.grade on fk_materia_vin=pk_materia_vin " . "WHERE public.grade.fk_usuario_professor=pk_usuario_professor )";
     $fapT = "SELECT count(pk_fap_registro) FROM fap.fap_registro " . "INNER JOIN fap.fap_subtipo on pk_fap_subtipo=fk_fap_subtipo " . "WHERE pk_usuario_professor=fk_usuario_professor " . "and fk_fap_tipo=";
     $fapS = "SELECT count(pk_fap_registro) FROM fap.fap_registro " . "WHERE pk_usuario_professor=fk_usuario_professor " . "and extract(year from data_evento)={$this->anoLetivo} " . "and fk_fap_subtipo=";
     $afa = "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.aula on pk_aula=fk_aula " . "WHERE pk_usuario_professor=fk_usuario_professor " . "and extract(year from data_evento)={$this->anoLetivo} " . "and fk_afa_tipo_anotacao=";
     $aulaTmp = $select->reset()->from("public.aula")->columns("pk_aula");
     $where = "pk_usuario_professor=fk_usuario_professor";
     $aulaTmp->where($where);
     $aula = new Select(array("aula" => $aulaTmp->distinct("pk_aula")));
     $aula->columns("count(pk_aula)");
     //Objeto responsável pela consulta principal
     $selectProf = parent::select();
     return $selectProf->distinct("pk_usuario")->columns(array("last_ia" => $lastIa, "materia_id" => $materiaId, "ia" => $ia, "ic" => $ic, "ir" => $ir, "aulas" => $aula, "afa_p" => "({$afa}" . TipoAfa::TIPO_POSITIVO . ")", "afa_n" => "({$afa}" . TipoAfa::TIPO_NEGATIVO . ")", "fap_aten" => "({$fapT}" . TipoFap::TIPO_ATENDIMENTO . ")", "fap_fj" => "({$fapS}" . SubtipoFap::SUB_TIPO_FALTA_JUSTIFICADA . ")", "fap_fnj" => "({$fapS}" . SubtipoFap::SUB_TIPO_FALTA_N_JUSTIFICADA . ")", "fap_fl" => "({$fapS}" . SubtipoFap::SUB_TIPO_LICENCA . ")", "fap_a" => "({$fapT}" . TipoFap::TIPO_ATRASO . ")"));
 }
Пример #24
0
 /**
  * Método que retorna o tópico pedido
  * @param int $topico O código do tópico buscado
  * @return Topico Um objeto contendo os dados do tópico
  * @param boolea $apenasMinistrados Define se deve exibir qualquer tópico ou apenas os já ministrados em aula
  * @throws LivroException
  */
 public function getTopico($topico, $apenasMinistrados = TRUE)
 {
     if (!is_int($topico)) {
         throw new LivroException("O tópico informado não é válido");
     }
     $select = new Select();
     $tableGatway = new TableGatway(new Topico(), "apostilas.conteudo");
     $tableGatway->defineColuna("pk_conteudo", new ResultSetMap(Column::INTEGER));
     $select->columns("*, " . "apostilas.acompanhamento.data_aula as topico_data_aula," . "apostilas.acompanhamento.status as topico_status")->join("apostilas.capitulo", array("pk_capitulo" => "fk_capitulo"))->join("public.materia_vin", array("pk_materia_vin" => "fk_materia_vin"))->join("public.materia", array("pk_materia" => "fk_materia"))->join("public.materia_mae", array("pk_materia_mae" => "fk_materia_mae"))->join("public.area", array("pk_area" => "fk_area"))->join("apostilas.livro", array("pk_livro" => "fk_livro"))->join("apostilas.livro_cat", array("pk_livro_cat" => "fk_livro_cat"));
     if ((bool) $apenasMinistrados) {
         $select->join("apostilas.acompanhamento", array("pk_conteudo" => "fk_conteudo"));
     } else {
         $select->join("apostilas.acompanhamento", array("pk_conteudo" => "fk_conteudo"), Join::LEFT_JOIN);
     }
     $select->where(array("pk_conteudo" => $topico));
     $resultSet = $tableGatway->selectObj($select);
     if (!$resultSet->rowCount()) {
         throw new LivroException("O tópico informado não foi encontrado ou ainda não foi dado em aula");
     }
     return $resultSet->fetch();
 }
Пример #25
0
 /**
  * Método que executa um select com base em um objeto Select informado
  * @param Select $select A consulta a ser realizada
  * @return ResultSetHydrator Um objetos contendo a resposta da interação
  */
 public function selectObj(Select $select)
 {
     if (!$select->tabelaIsset()) {
         $select->from($this->tabela);
     }
     //Executando a query e definindo os databind
     $prepare = $this->pdo->prepare($select);
     //Executando a validação do PDO
     foreach ($select->getWhere()->getColunas() as $coluna => $valor) {
         if (!isset($this->colunas[$coluna])) {
             //Este trecho deve ser reavaliado pois impede a busca usando como base
             //colunas de tabelas referenciadas por inner
             throw new SqlException("Uma das colunas informadas não é válida(select - {$coluna})", 10);
         }
         $prepare->bindValue(":{$coluna}", $valor, $this->colunas[$coluna]->getTipo());
     }
     //Executando de fato a consulta
     if (!$prepare->execute()) {
         throw new SqlException("Ocorreu um erro ao tentar executar a consulta");
     }
     //Retorno da consulta
     return new ResultSetHydrator($this->objeto, $prepare);
 }
Пример #26
0
 /**
  * Método que retorna os ensinos associados ao professor informado
  * 
  * @param Professor $professor O professor usado como filtro
  * @param Filtros $filtros Objeto do sistema de filtros
  * 
  * @return ResultSetHydrator
  */
 public function deProfessor(Professor $professor, Filtros $filtros)
 {
     $where = "public.turma.ano={$this->anoLetivo} " . "and public.usuario_professor.fk_usuario={$professor->getId()}";
     $selectTemp = $this->select()->join("public.grade", array("fk_turma" => "pk_turma"))->join("public.usuario_professor", array("pk_usuario_professor" => "public.grade.fk_usuario_professor"));
     if ($filtros->issetVar("unidade")) {
         $where .= "and pk_unidade={$filtros->get("unidade")} ";
     }
     $select = new Select(array("ensinos" => $selectTemp->where($where)->order("nome_ensino")));
     return $this->tg->selectObj($select->distinct("pk_ensino"));
 }
Пример #27
0
 /**
  * Método que retorna um objeto contendo uma consulta pré-moldada
  * 
  * @return Select 
  */
 public function select()
 {
     $select = new Select($this->tg->getTabela());
     return $select->columns(array("curso_cod_curso_mestre" => "cod_curso_mestre"))->columns(array("pk_curso", "curso_nome"));
 }
Пример #28
0
 /**
  * Método que gera uma consulta genérica
  * @return Select Retorna um objeto contendo uma consulta genérica
  */
 public function select()
 {
     $select = new Select($this->tg->getTabela());
     return $select->columns(array("pk_afa_tipo_anotacao", "afa_tipo_anotacao_nome"));
 }
Пример #29
0
 /**
  * Método que retorna uma consulta genérica para o modelo.
  *
  * @return Select Objeto contendo uma consulta genérica
  */
 public function select()
 {
     $select = new Select($this->tg->getTabela());
     return $select->columns(array('funcao_usuario_nome' => 'nome_funcao_usuario'))->columns("pk_funcao_usuario");
 }
Пример #30
0
 /**
  * Método que gera um select básico para as consultas.
  *
  * @return Select Um select genérico
  */
 public function select()
 {
     $select = new Select();
     return $select->join('apostilas.capitulo', array('pk_capitulo' => 't_capitulo_pk_capitulo'))->join('apostilas.livro', array('pk_livro' => 'fk_livro'))->join('apostilas.livro_cat', array('pk_livro_cat' => 'fk_livro_cat'))->join('public.materia_vin', array('pk_materia_vin' => 'fk_materia_vin'))->join('public.materia', array('pk_materia' => 'fk_materia'))->join('public.materia_mae', array('pk_materia_mae' => 'fk_materia_mae'))->join('public.area', array('pk_area' => 'fk_area'))->join('public.usuario', array('pk_usuario' => 't_capitulo_pk_usuario'))->join('public.usuario_aluno', array('fk_usuario' => 'pk_usuario'));
 }