/**
  * 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());
 }
Exemple #5
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"));
 }
Exemple #6
0
 /**
  * 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);
 }
Exemple #7
0
 /**
  * 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));
 }
Exemple #10
0
 /**
  * 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)));
 }
Exemple #11
0
 /**
  * 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));
 }