/** * Método que retorna o total de aulas ministradas pelo profesor informado * * @param Professor $professor O professor que ministrou as aulas * @param Filtros $filtros Objeto do sistema de filtros * * @return int O total de aulas ministradas */ public function totalAulas(Professor $professor, Filtros $filtros) { $query = "select distinct on(pk_aula) pk_aula " . "from {$this->tabela} " . "INNER JOIN public.usuario_professor on " . "pk_usuario_professor={$this->tabela}.fk_usuario_professor "; $where = "public.usuario_professor.fk_usuario={$professor->getId()} "; if ($filtros->issetVar(array("unidade", "ensino", "serie", "turma"), false)) { //Adicionando as tabelas para a filtragem $query .= "INNER JOIN public.grade on pk_grade=public.aula.fk_grade "; $query .= "INNER JOIN public.turma on pk_turma=public.grade.fk_turma "; $query .= "INNER JOIN public.serie on pk_serie=public.turma.fk_serie "; $query .= "INNER JOIN public.ensinos on pk_ensino=public.serie.ensino "; //Definindo os filtros especificos if ($filtros->issetVar('unidade')) { $this->defWhere($where, 'fk_unidade', $filtros->read('unidade')); } if ($filtros->issetVar('ensino')) { $this->defWhere($where, 'pk_ensino', $filtros->read('ensino')); } if ($filtros->issetVar('serie')) { $this->defWhere($where, 'pk_serie', $filtros->read('serie')); } if ($filtros->issetVar('turma')) { $this->defWhere($where, 'pk_turma', $filtros->read('turma')); } } $this->filtrosPeriodo($where, $filtros, "data_aula"); $queryCount = "select count(pk_aula) as total from ({$query} where {$where}) as aulas"; $prepare = $this->tg->getPDO()->prepare($queryCount); $prepare->execute(); $obj = $prepare->fetchObject(); return (int) $obj->total; }
/** * Método que retorna os indices do professor informado. * Método temporário * * @param Professor $professor O professor relacionado aos filtros * * @return array Retorna um array contendo os indices do professor */ public function indices(Professor $professor) { $where = "pk_usuario={$professor->getId()}"; $select = $this->select()->columns(array("aulas" => "'0'", "afa_p" => "'0'", "afa_n" => "'0'", "fap_aten" => "'0'", "fap_a" => "'0'", "fap_fj" => "'0'", "fap_fnj" => "'0'", "fap_fl" => "'0'"))->where($where)->limit(1); $prepare = $this->tg->getPDO()->prepare($select); $prepare->execute(); return $prepare->fetch(PDO::FETCH_ASSOC); }
/** * Método que retorna um determinado professor caso ele esteja associado ao coordenador infromado * @param \Kernel\Modelo\Perfis\Coordenador $coordenador O coordenado usado como filtro * @param \Kernel\Modelo\Perfis\Professor $professor Um objeto contendo o id do professor pedido. * Serve como modelo em caso de herança * @return \Kernel\Modelo\Perfis\Professor Um objeto contendo os dados do professor informado * @throws \Kernel\Exception\UsuarioException */ public function getDeCoordenador(\Kernel\Modelo\Perfis\Coordenador $coordenador, \Kernel\Modelo\Perfis\Professor $professor) { if (!$coordenador->getId()) { throw new \Kernel\Exception\UsuarioException("O coordenador informado é inválido"); } if (!$professor->getId()) { throw new \Kernel\Exception\UsuarioException("O professor informado é inválido"); } $select = new \GGE\Lib\Sql\Querys\Select(); $resultset = $this->gatWayUsuario->selectObj($select->join($professor->getPerfil()->getTabela(), array("pk_usuario" => "{$professor->getPerfil()->getTabela()}.fk_usuario"))->join("public.grade", array("public.grade.fk_usuario_professor" => "pk_usuario_professor"))->join("public.turma", array("pk_turma" => "public.grade.fk_turma"))->join("public.turma_vin", array("public.turma_vin.fk_turma" => "pk_turma"))->join("public.coordenacao", array("pk_coordenacao" => "public.turma_vin.fk_coordenacao"))->join("public.coordenacao_vin", array("public.coordenacao_vin.fk_coordenacao" => "pk_coordenacao"))->join("public.usuario_tipo_vin", array("pk_usuario_tipo_vin" => "fk_usuario_tipo_vin"))->where("public.usuario_tipo_vin.fk_usuario={$coordenador->getId()} " . "and pk_usuario={$professor->getId()}")->limit(1)); if (!$resultset->rowCount()) { throw new \Kernel\Exception\UsuarioException("O professor informado não foi encontrado, " . "esta desativado ou não esta associado ao coordendor"); } return $resultset->fetch(); }
/** * Método que retorna um determinado professor caso ele esteja * associado ao coordenador infromado * @param Coordenador $coordenador O coordenado usado como filtro * @param Professor $professor Um objeto contendo o id do professor pedido. * Serve como modelo em caso de herança * @return Professor Um objeto contendo os dados do professor informado * @throws UsuarioException */ public function getDeCoordenador(Coordenador $coordenador, Professor $professor) { if (!$coordenador->getId()) { throw new UsuarioException("O coordenador informado é inválido"); } if (!$professor->getId()) { throw new UsuarioException("O professor informado é inválido"); } $select = new Select(); $resultset = $this->tg->selectObj($select->join($professor->getPerfil()->getTabela(), array("fk_usuario" => "pk_usuario"))->join("public.grade", array("public.grade.fk_usuario_professor" => "pk_usuario_professor"))->join("public.turma", array("pk_turma" => "public.grade.fk_turma"))->join("public.turma_vin", array("public.turma_vin.fk_turma" => "pk_turma"))->join("public.coordenacao", array("pk_coordenacao" => "public.turma_vin.fk_coordenacao"))->join("public.coordenacao_vin", array("public.coordenacao_vin.fk_coordenacao" => "pk_coordenacao"))->join("public.usuario_tipo_vin", array("pk_usuario_tipo_vin" => "fk_usuario_tipo_vin"))->where("public.usuario_tipo_vin.fk_usuario=" . "{$coordenador->getId()} " . "and pk_usuario={$professor->getId()}")->limit(1)); if (!$resultset->rowCount()) { throw new UsuarioException("O professor informado não " . "foi encontrado, " . "esta desativado ou não esta associado ao coordendor"); } return $resultset->fetch(new Professor()); }
/** * 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 lista todas as unidades associadas ao professor informado * @param \Kernel\Modelo\Perfis\Professor $professor * @return ResultSetHydrator Um objeto contendo a resposta da consulta */ public function deProfessor(\Kernel\Modelo\Perfis\Professor $professor) { $query = "select distinct on(pk_unidade) * " . "from {$this->tableGatway->getTabela()} " . "inner join public.turma on pk_unidade=fk_unidade " . "inner join public.grade on public.grade.fk_turma=public.turma.pk_turma " . "inner join public.usuario_professor on pk_usuario_professor=public.grade.fk_usuario_professor " . "where fk_usuario={$professor->getId()} " . "and public.turma.status=" . Status::ATIVO . " " . "and public.usuario_professor.status=" . Status::ATIVO . " " . "and ano=" . Loader::data("config", "site", "ano_letivo"); return $this->tableGatway->querySelect($query); }
/** * Método que retorna as turmas associadas 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.usuario_professor.fk_usuario={$professor->getId()} " . "and ano={$this->anoLetivo}"; $select = $this->select()->distinct("pk_turma")->join("public.grade", array("fk_turma" => "pk_turma"))->join("public.usuario_professor", array("pk_usuario_professor" => "fk_usuario_professor")); if ($filtros->issetVar("unidade")) { $this->defWhere($where, "pk_unidade", $filtros->read("unidade")); } if ($filtros->issetVar("ensino")) { $this->defWhere($where, "pk_ensino", $filtros->read("ensino")); } if ($filtros->issetVar("serie")) { $this->defWhere($where, "pk_serie", $filtros->read("serie")); } return $this->tg->selectObj($select->where($where)); }
/** * Lista todas as disciplinas associadas a um determinado professor. * * @param Professor $professor * @param Filtros $filtros */ public function deProfessor(Professor $professor, Filtros $filtros) { $select = $this->select()->distinct(array('pk_materia'))->join('public.grade', array('fk_materia_vin' => 'pk_materia_vin'))->join('public.usuario_professor', array('pk_usuario_professor' => 'fk_usuario_professor')); //Definições de filtragem $where = array('fk_usuario' => $professor->getId()); $filUnidade = array('unidade', 'ensino', 'serie', 'turma'); $filLivro = array('livro'); //Configurando os filtros do pacote Unidade if ($filtros->issetGet($filUnidade, false)) { $select->join('public.turma', array('fk_serie' => 'public.materia_vin.fk_serie'))->join('public.unidade', array('pk_unidade' => 'public.turma.fk_unidade'))->join('public.serie', array('pk_serie' => 'public.turma.fk_serie'))->join('public.ensinos', array('public.serie.ensino' => 'pk_ensino')); } //Configurando os filtros do pacote Livro if ($filtros->issetGet($filLivro, false)) { $select->join('apostilas.capitulo', array('fk_materia_vin' => 'pk_materia_vin')); } //Filtrando if ($filtros->issetGet('unidade')) { $where['pk_unidade'] = $filtros->get('unidade'); } if ($filtros->issetGet('ensino')) { $where['pk_ensino'] = $filtros->get('ensino'); } if ($filtros->issetGet('serie')) { $where['pk_serie'] = $filtros->get('serie'); } if ($filtros->issetGet('turma')) { $where['pk_turma'] = $filtros->get('turma'); } if ($filtros->issetGet('grupo')) { $where['pk_materia_mae'] = $filtros->get('grupo'); } if ($filtros->issetGet('area_da_natureza')) { $where['pk_area'] = $filtros->get('area_da_natureza'); } if ($filtros->issetGet('livro')) { $where['fk_livro'] = $filtros->get('livro'); } //Mapeando as colunas da filtragem $this->defColInteger(array_keys($where)); //Realizando a consulta return $this->tg->selectObj($select->where($where)); }
/** * Método que retorna todas as ocorrências do professor informado * * @param Professor $professor O professor alvo dos registros * @param Filtros $filtros Objeto do sistema de filtros * * @return ResultSetHydrator Objeto contendo a resposta da consulta */ public function ocrrencias(Professor $professor, Filtros $filtros) { $subSelect = $this->select()->distinct(array("pk_fap_registro")); $where = "{$this->tabela}.fk_usuario_professor={$professor->getIdEspecifico()} " . " and (pk_fap_tipo!=" . Tipo::TIPO_ATENDIMENTO . ") "; //Filtrando por periodo $this->filtrosPeriodo($where, $filtros); if ($filtros->issetVar(array('unidade', 'ensino', 'serie', 'turma'))) { $subSelect->join("public.aula", array("pk_aula" => "{$this->tabela}.fk_aula"))->join("public.grade", array("pk_grade" => "public.aula.fk_grade")); $this->filtrosUEST($subSelect, $where, $filtros); } //Montando a consulta principal $select = new Select(array("fap" => $subSelect->where($where))); return $this->tg->selectObj($select->order(array("fap_registro_data_evento", "pk_fap_registro"), Order::DSC)); }
/** * Método que lista todos os anexos relacionados ao tópico informado * @param Topico $topico O tópico usado como filtro * @return ResultSetHydrator Um objeto contendo os dados da resposta da consulta * @throws LivroException */ public function deTopicoProfessor(Topico $topico, \Kernel\Modelo\Perfis\Professor $professor) { if (!$topico->getId()) { throw new LivroException("O tópico informado não é válido"); } $this->tablegateway->defineColuna("fk_conteudo", new ResultSetMap(Column::INTEGER)); $select = new Select(); return $this->tablegateway->selectObj($select->distinct("pk_anexo")->join("apostilas.anexos_vin", array("pk_anexo" => "fk_anexo"))->join("public.usuario_tipo_vin", array("fk_usuario" => "anexos_usuario_insert", "fk_tipo_usuario" => "anexos_tipo_usuario_insert"))->join("public.usuario", array("fk_usuario" => "pk_usuario"))->where(array("fk_conteudo" => $topico->getId(), "anexos_usuario_insert" => $professor->getId(), "anexos_tipo_usuario_insert" => \Kernel\Modelo\Perfil::PROFESSOR))); }
/** * Método que lista todas as unidades associadas ao professor informado. * * @param Professor $professor * * @return ResultSetHydrator Um objeto contendo a resposta da consulta */ public function deProfessor(Professor $professor) { return $this->tg->selectObj($this->select()->join('public.turma', array('fk_unidade' => 'pk_unidade'))->join('public.grade', array('fk_turma' => 'pk_turma'))->join('public.usuario_professor', array('pk_usuario_professor' => 'public.grade.fk_usuario_professor'))->where("fk_usuario = {$professor->getId()} " . ' and public.turma.status = ' . Status::ATIVO . ' and public.usuario_professor.status = ' . Status::ATIVO . ' and ano = ' . $this->anoLetivo)->distinct('pk_unidade')); }
/** * Método responsável pela tradução exata dos dados do banco para o objeto * @param array $dados Os dados vindos do banco da consulta */ public function exchangeArray(array $dados) { parent::exchangeArray($dados); $this->exchangeArrayExtra($dados); }
/** * Método que lista todas as anotações feitas pelo professor informado. * * @param Professor $professor * @param Filtros $filtros * * @return ResultSetHydrator Um objeto contendo a resposta da consulta */ public function deProfessor(Professor $professor, Filtros $filtros) { $where = "public.aula.fk_usuario_professor={$professor->getIdEspecifico()} "; $select = $this->select()->distinct('pk_afa_conceito_aluno'); $this->filtrosPeriodo($where, $filtros); if ($filtros->issetGet("unidade", "ensino", "serie", "turma")) { $select->join("public.aula", array("pk_aula" => "fk_aula"))->join("public.grade", array("pk_grade" => "fk_grade")); $this->filtrosUEST($select, $where, $filtros); } $this->filtrosTipoSub($where, $filtros); $selOrdenar = new Select(array('afa' => $select->where($where))); return $this->tg->selectObj($selOrdenar->order(array('afa_conceito_aluno_data_evento', 'pk_afa_conceito_aluno'), Order::DSC)); }