Ejemplo n.º 1
0
 /**
  * Método que retorna um determinado usuário de acordo com o código e modelos informados.
  * Caso o usuário logado não seja o admin, verfifica se o usuário é do tipo pedido de
  * acordo com o modelo informado.
  * @param int $idUsuario O código do usuário pedido. Informe 0 para buscar o usuário logado
  * @param \Kernel\Modelo\Usuario $usrModelo Objeto contendo o perfil exigido para o método
  * @param int|array $outrosPerfis Caso queira informar outros perfis com a permissão de ver dados
  * do usuário informado alem do admin e gestor. Caso informe um array, deve ser informado um array de inteiros
  * @return \Kernel\Modelo\Usuario Um objeto do tipo Usuário ou heredeiro contendo os dados pedidos
  * @throws \Kernel\Exception\UsuarioException
  */
 public function getUsuario($idUsuario = FALSE, \Kernel\Modelo\Usuario $usrModelo = null, $outrosPerfis = false)
 {
     $sqlUsuario = new \Kernel\Sql\SqlUsuario();
     $perfisAceitos = array(Kernel\Modelo\Perfil::ADMIN, Kernel\Modelo\Perfil::GESTOR);
     if (is_int($outrosPerfis)) {
         array_push($perfisAceitos, $outrosPerfis);
     } elseif (is_array($outrosPerfis)) {
         if (Arrays::checarValores($outrosPerfis, FILTER_VALIDATE_INT)) {
             $perfisAceitos = array_merge($outrosPerfis);
         }
     }
     if (is_int($idUsuario)) {
         if (!in_array($this->tipoLogado, $perfisAceitos)) {
             throw new Kernel\Exception\UsuarioException("Você não tem acesso a este recurso");
         }
     } else {
         if (is_null($usrModelo)) {
             $usrModelo = new \Kernel\Modelo\Usuario(new Kernel\Modelo\Perfil($this->tipoLogado));
         }
         $idUsuario = $this->usuario->get_idusuario();
     }
     return $sqlUsuario->get($idUsuario, $usrModelo);
 }
Ejemplo n.º 2
0
 /**
  * Método que insere o objeto no banco
  * @param array $itens Caso seja informado este array, faz a inserçao multipla de intens no banco
  * @return boolean Retorna true em caso de sucesso e false em caso de erro
  * @throws Exception
  */
 public function insert(array $itens = array())
 {
     $query = "insert into ";
     if (count($itens)) {
         if (!Arrays::checarValores($itens, "ModelBase")) {
             //Caso os objetos do array não sejam do tipo correspondente
             throw new Exception("Itens inválidos", 592);
         }
         //Fazendo a inserção multipla
         $primeiroItem = $itens[0];
         //Tirando o primeiro elemento como base
         $tabela = $primeiroItem->getTabela();
         $colunas = array_keys($primeiroItem->getMapaSql());
         unset($colunas["id"]);
         $query .= "{$tabela} (" . implode(", ", $colunas) . ") values ";
         foreach ($itens as $item) {
             $query .= "(";
             foreach ($colunas as $coluna) {
                 $mapasql = $item->getMapaSql();
                 $variavel = $item->__get($coluna);
                 $dataType = $mapasql[$coluna][0];
                 if ($dataType == PDO::PARAM_INT) {
                     $query .= "{$variavel}, ";
                 } else {
                     $query .= "'{$variavel}', ";
                 }
             }
             $query = substr($query, 0, -2) . "),";
         }
         $query = substr($query, 0, -1);
         return $primeiroItem->query($query, array());
     } else {
         unset($this->mapaSql["id"]);
         $colunas = array_keys($this->mapaSql);
         $query .= $this->getTabela();
         $query .= "(" . implode(", ", array_keys($this->mapaSql)) . ") ";
         $query .= "values ";
         $query .= "(:" . implode(",:", array_keys($this->mapaSql)) . ")";
         return $this->query($query, $colunas);
     }
 }
Ejemplo n.º 3
0
 /**
  * Método que lista todos os registros exceto os iniciais cadastrados
  * de acorod com os filtros informados
  * @param FiltrosSistema $filtrosSistema Filtros do sistema de filtros
  * @param int|array|boolean $tipo Define como filtro o tipo do registro
  * @param int|array|boolean $subTipo Define como filtro o subtipo
  * @return PDOStatement|boolean Objeto contendo a resposta da consulta ou FALSE em caso de erro
  */
 public function listarTodos(FiltrosSistema $filtrosSistema = NULL, $tipo = FALSE, $subTipo = FALSE)
 {
     //removendo o registro inicial da listagem
     $inner = "";
     $where = "where fap.fap_tipo.pk_fap_tipo!=0 ";
     //Filtrando os valores por tipo e subtipo
     if (is_int($tipo)) {
         $where .= "and pk_fap_tipo={$tipo} ";
     } elseif (is_array($tipo)) {
         if (Arrays::checarValores($tipo, FILTER_VALIDATE_INT)) {
             $where .= "and (pk_fap_tipo=" . implode(" or pk_fap_tipo=", $tipo) . ") ";
         }
     }
     if (is_int($subTipo)) {
         $where .= "and fk_fap_subtipo={$subTipo} ";
     } elseif (is_array($subTipo)) {
         if (Arrays::checarValores($subTipo, FILTER_VALIDATE_INT)) {
             $where .= "and (fk_fap_subtipo=" . implode(" or fk_fap_subtipo=", $subTipo) . ") ";
         }
     }
     //Fintrando os registros
     if ($filtrosSistema instanceof FiltrosSistema) {
         //Filtrando por data
         if ($filtrosSistema->validar(array("de")) || $filtrosSistema->validar(array("ate"))) {
             $where .= $filtrosSistema->validar(array("de")) ? "and data_evento>='" . $filtrosSistema->getDe() . "' " : "";
             $where .= $filtrosSistema->validar(array("ate")) ? "and data_evento<='" . $filtrosSistema->getAte() . "' " : "";
         } else {
             $where .= "and extract(year from data_evento)=" . Loader::data("config", "site", "ano_letivo") . " ";
         }
         //Filtrando por unidade, ensino, série, turma, equipe e etc
         if ($filtrosSistema->validar(array("unidade")) || $filtrosSistema->validar(array("ensino")) || $filtrosSistema->validar(array("serie")) || $filtrosSistema->validar(array("turma")) || $filtrosSistema->validar(array("areasDaNatureza")) || $filtrosSistema->validar(array("equipe"))) {
             $inner .= "inner join public.aula on pk_aula=fk_aula ";
             $inner .= "inner join public.grade on pk_grade=fk_grade ";
             $inner .= "inner join public.turma on pk_turma=fk_turma ";
             $inner .= "inner join public.serie on pk_serie=fk_serie ";
         }
         if ($filtrosSistema->validar(array("unidade"))) {
             $where .= "and fk_unidade=" . $filtrosSistema->getUnidade() . " ";
         }
         if ($filtrosSistema->validar(array("ensino"))) {
             $where .= "and ensino=" . $filtrosSistema->getEnsino() . " ";
         }
         if ($filtrosSistema->validar(array("serie"))) {
             $where .= "and pk_serie=" . $filtrosSistema->getSerie() . " ";
         }
         if ($filtrosSistema->validar(array("turma"))) {
             $where .= "and pk_turma=" . $filtrosSistema->getTurma() . " ";
         }
         if ($filtrosSistema->validar(array("areasDaNatureza")) || $filtrosSistema->validar(array("equipe"))) {
             $inner .= "inner join public.materia_vin on public.turma.fk_serie=public.materia_vin.fk_serie ";
             $inner .= "inner join public.materia on pk_materia=fk_materia ";
             $inner .= "inner join public.materia_mae on fk_materia_mae=pk_materia_mae ";
         }
         if ($filtrosSistema->validar(array("areasDaNatureza"))) {
             $inner .= "inner join public.area on pk_area=fk_area ";
             $where .= "and pk_area=" . $filtrosSistema->getAreasDaNatureza() . " ";
         }
         if ($filtrosSistema->validar(array("equipe"))) {
             $where .= "and pk_materia_mae=" . $filtrosSistema->getEquipe() . " ";
         }
     }
     $query = "select fap.fap_registro.*, fap.fap_subtipo.*, fap.fap_tipo.* " . "from fap.fap_registro " . "inner join fap.fap_subtipo on " . "fap.fap_subtipo.pk_fap_subtipo=fap.fap_registro.fk_fap_subtipo " . "inner join fap.fap_tipo on " . "fap.fap_tipo.pk_fap_tipo=fap.fap_subtipo.fk_fap_tipo " . "inner join public.usuario on " . "public.usuario.pk_usuario=fap.fap_registro.fk_usuario_inc " . "{$inner} " . "{$where} ";
     return $this->queryStatement($query);
 }
Ejemplo n.º 4
0
 /**
  * Método que retorna todas as anotações feitas pelo professor informado
  * @param Kernel_Models_Professor $professor
  * @param int|array|boolean O código do tipo do registro ou array de códigos. Informe FALSE para ignorar
  * @param int|array|boolean O código do subtipo do registro ou array de códigos. Informe FALSE para ignorar
  * @param FiltrosSistema $filtrosSistema Objeto contendo os filtros do sistema de filtros
  * @return PDOStatement|boolean Objeto contendo a resposta da consulta ou FALSE em caso de erro
  * @throws Exception Gera uma exceção ao introduzir dados inválidos,
  * como um professor não instanciado e etc
  */
 public function getAfaDeProfessor(Kernel_Models_Professor $professor, $tipo = FALSE, $subTipo = FALSE, FiltrosSistema $filtrosSistema = NULL)
 {
     $query = "select distinct on(afa.afa_conceito_aluno.pk_afa_conceito_aluno)" . "afa.afa_conceito_aluno.*, afa.afa_tipo_anotacao.*, " . "afa.afa_subtipo_anotacao.*, pk_turma, " . "public.usuario.pk_usuario as pk_aluno, " . "public.usuario_aluno.pk_usuario_aluno, " . "public.usuario.nome as aluno_nome, " . "public.turma.turma_nome " . "from afa.afa_conceito_aluno " . "inner join afa.afa_subtipo_anotacao on " . "pk_afa_subtipo_anotacao=fk_afa_subtipo_anotacao " . "inner join afa.afa_tipo_anotacao on " . "pk_afa_tipo_anotacao=fk_afa_tipo_anotacao " . "inner join public.aula on " . "public.aula.pk_aula=fk_aula " . "inner join public.usuario_professor on " . "pk_usuario_professor=public.aula.fk_usuario_professor " . "left join public.usuario_aluno on " . "pk_usuario_aluno=afa.afa_conceito_aluno.fk_usuario_aluno " . "left join public.usuario on " . "pk_usuario=public.usuario_aluno.fk_usuario " . "left join public.turma on " . "pk_turma=public.usuario_aluno.fk_turma " . "where public.usuario_professor.fk_usuario=" . $professor->getId() . " ";
     //Filtrando por tipo e subtipo
     if (is_int($tipo)) {
         $query .= "and pk_afa_tipo_anotacao={$tipo} ";
     } elseif (is_array($tipo)) {
         if (Arrays::checarValores($tipo, FILTER_VALIDATE_INT)) {
             $query .= "and (pk_afa_tipo_anotacao=" . implode(" or pk_afa_tipo_anotacao=", $tipo) . ") ";
         }
     }
     if (is_int($subTipo)) {
         $query .= "and pk_afa_subtipo_anotacao={$subTipo} ";
     } elseif (is_array($subTipo)) {
         if (Arrays::checarValores($subTipo, FILTER_VALIDATE_INT)) {
             $query .= "and (pk_afa_subtipo_anotacao=" . implode(" or pk_afa_subtipo_anotacao=", $subTipo) . ") ";
         }
     }
     //Aplicando os filtros
     if ($filtrosSistema instanceof FiltrosSistema) {
         if ($filtrosSistema->validar(array("de")) || $filtrosSistema->validar(array("ate"))) {
             $query .= $filtrosSistema->validar(array("de")) ? "and afa.afa_conceito_aluno.data_evento>='" . $filtrosSistema->getDe() . "' " : "";
             $query .= $filtrosSistema->validar(array("ate")) ? "and afa.afa_conceito_aluno.data_evento>='" . $filtrosSistema->getAte() . "' " : "";
         } else {
             $query .= "extract(year from afa.afa_conceito_aluno.data_evento)=" . Loader::data("config", "site", "ano_letivo") . " ";
         }
     }
     //Ordenando
     $query .= "order by(afa.afa_conceito_aluno.pk_afa_conceito_aluno) desc";
     return $this->queryStatement($query);
 }