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