/** * Método que lista todos os registros de um determinado professor * @param Kernel_Models_Professor $professor Objeto referente ao professor relacionado aos registros. Por padrão retorna apenas os registros do ano atual * @param int|array|boolean $tipo Define como filtro o tipo do registro * @param int|array|boolean $subTipo Define como filtro o subtipo * @param FiltrosSistema $filtrosSistema Sistema de filtros do sistema * @return PDOStatement|boolean Retorna um objeto do tipo PDOStatement contendo a resposta da consulta ou FALSE em caso de erro */ public function registrosDeProfessor(Kernel_Models_Professor $professor, $tipo = FALSE, $subTipo = FALSE, FiltrosSistema $filtrosSistema = NULL) { $coordenador = new Kernel_Models_Coordenador(); $query = "select distinct on(fap.fap_registro.pk_fap_registro) " . "fap.fap_registro.*, fap.fap_subtipo.*, fap.fap_tipo.*, " . "public.usuario.nome as nome_coordenador, " . "public.usuario_coordenador.tipo, " . "public.usuario.pk_usuario as pk_coordenador, " . "(select public.tipo_usuario.tipo_usuario_nome " . "from public.tipo_usuario " . "inner join public.usuario_tipo_vin on " . "public.usuario_tipo_vin.fk_tipo_usuario=" . "pk_tipo_usuario " . "WHERE public.usuario_tipo_vin.fk_usuario=" . "fap.fap_registro.fk_usuario_inc limit 1) " . "as tipo_usuario, " . "(select public.coordenacao.coordenacao_nome " . "from public.tipo_usuario " . "inner join public.usuario_tipo_vin on " . "public.usuario_tipo_vin.fk_tipo_usuario=pk_tipo_usuario " . "inner join public.coordenacao_vin on " . "public.coordenacao_vin.fk_usuario_tipo_vin=" . "public.usuario_tipo_vin.pk_usuario_tipo_vin " . "inner join public.coordenacao on " . "public.coordenacao.pk_coordenacao=" . "public.coordenacao_vin.fk_coordenacao " . "WHERE public.usuario_tipo_vin.fk_usuario=" . "fap.fap_registro.fk_usuario_inc limit 1) " . "as tipo_coordenacao, " . "(case "; //Adicionando a query todos os tipos de coordenação disponíveis foreach ($coordenador->getCoordTipos() as $cod => $tipoCoord) { $query .= "when tipo={$cod} then '{$tipoCoord}' "; } $query .= "end) as tipo_coordenador " . "from fap.fap_registro " . "inner join fap.fap_subtipo on " . "fap.fap_subtipo.pk_fap_subtipo=" . "fk_fap_subtipo " . "inner join fap.fap_tipo on " . "fap.fap_tipo.pk_fap_tipo=" . "fk_fap_tipo " . "inner join public.usuario_coordenador on " . "public.usuario_coordenador.fk_usuario=fk_usuario_inc " . "inner join public.usuario_professor on " . "public.usuario_professor.pk_usuario_professor=" . "fk_usuario_professor " . "inner join public.usuario on " . "public.usuario.pk_usuario=fk_usuario_inc "; $query .= "where public.usuario_professor.fk_usuario=" . $professor->getId() . " "; if ($filtrosSistema instanceof FiltrosSistema) { if ($filtrosSistema->validar(array("de")) || $filtrosSistema->validar(array("ate"))) { //Filtrando o periodo $query .= $filtrosSistema->validar(array("de")) ? "and data_evento>='" . $filtrosSistema->getDe() . "' " : ""; $query .= $filtrosSistema->validar(array("ate")) ? "and data_evento<='" . $filtrosSistema->getAte() . "' " : ""; } else { $query .= "and extract(year from data_evento)=" . Loader::data("config", "site", "ano_letivo") . " "; } $query .= $filtrosSistema->validar(array("fapTipo")) ? "and pk_fap_tipo={$filtrosSistema->getFapTipo()} " : ""; } //Filtrando os valores por tipo e subtipo if (is_int($tipo)) { $query .= "and pk_fap_tipo={$tipo} "; } elseif (is_array($tipo)) { if (Arrays::checarValores($tipo, FILTER_VALIDATE_INT)) { $query .= "and (pk_fap_tipo=" . implode(" or pk_fap_tipo=", $tipo) . ") "; } } if (is_int($subTipo)) { $query .= "and fk_fap_subtipo={$subTipo} "; } elseif (is_array($subTipo)) { if (Arrays::checarValores($subTipo, FILTER_VALIDATE_INT)) { $query .= "and (fk_fap_subtipo=" . implode(" or fk_fap_subtipo=", $subTipo) . ") "; } } $query .= "order by(pk_fap_registro) desc"; return $this->queryStatement($query); }
/** * Método que gera o ranking de uso do afa por parte dos coordenadores */ public function listar_ranking_uso_sap() { $this->loadPlugin("jquery.tablesorter"); if (!$this->getData('mobile')) { $this->appendJs('https://maxcdn.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js'); } $ano = filter_input(INPUT_GET, 'ano', FILTER_VALIDATE_INT); $coordenadores = new Kernel_Models_Coordenador(); $afaConceitoAluno = new Kernel_Models_Afa(); $afaConceitoAlunoTipo = new ModelBase('afa.Afa_Tipo_Anotacao'); $afaConceitoAlunoSubT = new ModelBase("afa.afa_subtipo_anotacao"); $colunas = array("fk_usuario_coordenador", "score", "pk_afa_subtipo_anotacao", "fk_afa_tipo_anotacao"); $avaliacoes = $afaConceitoAluno->listarPorAno($ano, TRUE, $colunas); $totalAva = $avaliacoes->rowCount(); $arrayAva = array(); if ($totalAva) { while ($row = $avaliacoes->fetchObject()) { Matematica::incrementoIsset($arrayAva[$row->fk_usuario_coordenador], 'qt'); Matematica::incrementoIsset($arrayAva[$row->fk_usuario_coordenador]['tipo'], $row->fk_afa_tipo_anotacao); Matematica::incrementoIsset($arrayAva[$row->fk_usuario_coordenador]['sub'], $row->pk_afa_subtipo_anotacao); } } $this->setData('afaConceitosTipos', $afaConceitoAlunoTipo->select("", array("*"), "", array('afa.afa_tipo_anotacao.afa_tipo_anotacao_nome'), array(), 0, 0, 0)->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_CLASS))->setData('afaConceitosSubTipos', $afaConceitoAlunoSubT->select()->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_CLASS))->setData('coordAtivos', $coordenadores->listarAtivos()->fetchAll(PDO::FETCH_CLASS))->setData('totalAva', $totalAva)->setData('arrayAva', $arrayAva)->printView(); }
/** * Método que gera a página de abertura de chamados */ public function abrir_chamado() { //Inicializando os objetos básicos $chamadoObj = new eqpedagogica_models_Ouvidoria(); $coordenador = new Kernel_Models_Coordenador(); //Validando o responsável $usrValidar = new Kernel_Models_ValidarUsuarios(); $responsavel = $usrValidar->responsavel(); //Buscando os coordenadores relacionados ao responsável informado $coordenadores = $coordenador->listarTodos(NULL, $responsavel)->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_CLASS); //Listando as categorias permitidas $categorias = $chamadoObj->categorias(); //Inserindo o novo chamado ou editando um chamado existente. A execução do método é interrompida aqui if ($_SERVER['REQUEST_METHOD'] == "POST") { header('Content-Type: application/json; charset=UTF-8'); //Recebendo os dados $coordenadorId = filter_input(INPUT_POST, "coordenador", FILTER_VALIDATE_INT); $titulo = filter_input(INPUT_POST, "titulo", FILTER_SANITIZE_MAGIC_QUOTES); $mensagem = filter_input(INPUT_POST, "mensagem", FILTER_SANITIZE_MAGIC_QUOTES); $categoria = filter_input(INPUT_POST, "categoria", FILTER_VALIDATE_INT); //Validando os dados if (!$coordenadorId) { //O código do coordenador é inválido die(json_encode(array("status" => false, "mensagem" => "O coordenador informado é inválido"))); } if ($categorias) { if (!array_key_exists($categoria, $categorias->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_CLASS))) { $categoria = 0; } } $coordenador = $coordenador->get($coordenadorId); if (!$coordenador) { //O coordenador é inválido die(json_encode(array("status" => false, "mensagem" => "O coordenador informado é inválido"))); } if (!in_array($coordenador->pk_usuario, array_keys($coordenadores))) { //Verificando se o coordenador esta relacionado ao responsável die(json_encode(array("status" => false, "mensagem" => "Ops! Parce que o coordenador informado não esta relacionado a " . "nenhum de seus dependentes. Informe um da lista por favor"))); } if (!$titulo) { //O título informado é inválido die(json_encode(array("status" => false, "mensagem" => "O título informado é inválido"))); } if (!$mensagem) { //A mensagem informada é inválida die(json_encode(array("status" => false, "mensagem" => "A mensagem informada é inválida"))); } if (!strlen($mensagem)) { //A mensagem informada é inválida die(json_encode(array("status" => false, "mensagem" => "A mensagem informada é inválida"))); } //Passando os dados para o objeto $chamadoObj->setTitulo($titulo)->setDestinatario($coordenador)->setCategoria($categoria); //Salvando os dados if ($chamadoObj->abrirChamado($mensagem)) { if (filter_var($coordenador->email, FILTER_VALIDATE_EMAIL)) { //Verifica se o e-mail do coordenador é válido, caso seja, envia um e-mail avisando da novidade $contasEmail = new Kernel_Models_NewsletterContas(); $assunto = "Novo chamado aberto na ouvidoria"; $mensagem = "Foi aberto ou editado um novo chamado na ouvidoria. " . "Acesse a sua área restrita e veja mais detalhes"; $contasEmail->enviar($coordenador->nome, $coordenador->email, $assunto, $mensagem); } die(json_encode(array("status" => true, "mensagem" => "Chamado salvo com sucesso", "destino" => ""))); } else { die(json_encode(array("status" => false, "mensagem" => "Ocorreu um erro ao tentar salvar o chamado. Tente novamente mais tarde"))); } } //Exibindo a página //Passando os dados para o view $this->loadPlugin("filtros")->setUsuarioFiltros($responsavel)->setData("coordenadores", $coordenadores)->setData("categorias", $categorias)->printView(); }
<?php /* * Here comes the text of your license * Each line should be prefixed with * */ $coordTmp = new Kernel_Models_Coordenador(); $coordTmpFuncoes = $coordTmp->getFuncoes($filtros, $usuarioParaFiltros); if (count($coordTmpFuncoes) > 1) { ?> <select name="funcao" class="filtro"> <option value=""><?php echo $filtros->validar(array("equipe")) ? 'Todas as Funções' : 'Selecionar Função'; ?> </option> <?php foreach ($coordTmpFuncoes as $value) { ?> <option value="<?php echo $value->pk_funcao_usuario; ?> "<?php echo $value->pk_funcao_usuario == $filtros->getFuncao() ? ' selected' : ''; ?> ><?php echo $value->nome_funcao_usuario; ?> </option> <?php } ?>
/** * Método de envio de mensagens(envio geral) */ public function contatenos() { $data = $this->getParametroVisao(); $msg = ''; // if ($_SERVER['REQUEST_METHOD'] == "POST") { ini_set('default_charset', 'utf8'); //Executando o cadastro da mensagem $titulo = filter_input(INPUT_POST, 'assunto', FILTER_SANITIZE_MAGIC_QUOTES); $mensagem = filter_input(INPUT_POST, 'mensagem', FILTER_SANITIZE_MAGIC_QUOTES); $destinatario = filter_input(INPUT_POST, 'destinatario', FILTER_SANITIZE_MAGIC_QUOTES); if (!$destinatario) { echo Javascript::alert("O destinatário informado é invalido. Selecione um na lista"); echo Javascript::history_back(); exit; } if (!$titulo) { echo Javascript::alert("O assunto informado é inválido"); echo Javascript::history_back(); exit; } if (!$mensagem) { echo Javascript::alert("A mensagem informada é inválida"); echo Javascript::history_back(); exit; } $novaMensagem = "<p>Mensagem para {$destinatario}</p>"; $novaMensagem .= "<div>Assunto:{$titulo}</div>"; $novaMensagem .= "<div>Mensagem</div><div>{$mensagem}</div>"; if (!Mail::envioSimples($novaMensagem, "Mensagem enviada pela áres restrita", "*****@*****.**", "Colégio GGE")) { echo Javascript::alert("Ocorreu um erro ao tentar enviar a mensagem. Tente novamente mais tarde"); echo Javascript::history_back(); exit; } echo Javascript::alert("Mensagem enviada com sucesso"); echo Javascript::window_location(base_url() . 'transf/mensagem/contatenos/'); exit; } //Exibindo a página if ($data['mobile']) { $data['usuario'] = unserialize($_SESSION['usuario']); $data['page'] = 'default'; $data['tema'] = $this->load->setTheme('responsive'); } else { $data['page'] = 'home'; $data['tema'] != '' ? $this->load->setTheme($data['tema']) : ''; } $data['msg'] = $msg; $data['abaAtiva'] = 10; $data['alias'] = $data['abaPage'] = __FUNCTION__; $data["js"] = array("/js/plugins/filtros/filtros.min.js"); // $data["arrayFiltros"] = array("unidade", "serie", "turma"); $filtrosSistema = new FiltrosSistema(); $data["filtros"] = $filtrosSistema; // $tipo_usuario = $this->load->model('public_tipo_usuario'); $tipo_usuario = new ModelBase("public.tipo_usuario"); $data['pk_tipo_usuario'] = filter_input(INPUT_GET, 'tipousuario', FILTER_VALIDATE_INT); $data['tipo_usuario'] = $tipo_usuario->select("pk_tipo_usuario=3 or pk_tipo_usuario=15 and pk_tipo_usuario!=11"); // switch ($data['pk_tipo_usuario']) { case Kernel_Models_TiposUsuario::TIPO_COORDENADOR: $usuarios = new Kernel_Models_Coordenador(); $data['destinatarios'] = $usuarios->listarTodos($filtrosSistema); $data["arrayFiltros"] = array("unidade"); break; case Kernel_Models_TiposUsuario::TIPO_PROFESSOR: $usuarios = new Kernel_Models_Professor(); $data['destinatarios'] = $usuarios->listarTodos($filtrosSistema); $data["arrayFiltros"] = array("unidade", "serie", "turma"); break; default: $data['destinatarios'] = FALSE; break; } $filtrosSistema->init($data["arrayFiltros"]); $this->load->view($this->load->getUrlTema(), $data); }
/** * Método que lista todos os registros de um aluno especifico do ano letivo atual * @param Kernel_Models_Aluno $aluno Um objeto do tipo aluno que determina o aluno de filtro da consulta * @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 Variavel para a filtragem dos registros. Informe FALSE para ignorar * @return PDOStatement|boolean Um objeto contendo todos os registros ou FALSE em caso de erro */ public function getAfaDeAluno(Kernel_Models_Aluno $aluno, $tipo = FALSE, $subTipo = FALSE, FiltrosSistema $filtrosSistema = NULL) { $coordenador = new Kernel_Models_Coordenador(); $query = "select afa.afa_conceito_aluno.*, " . "afa.afa_subtipo_anotacao.*, afa.afa_tipo_anotacao.*, " . "public.coordenacao.*, public.aula.fk_usuario_professor, " . "public.usuario_coordenador.tipo, " . "(case when pk_usuario_professor is not null then " . "(select public.usuario.nome from public.usuario " . "inner join public.usuario_professor on " . "public.usuario_professor.fk_usuario=" . "public.usuario.pk_usuario " . "where public.usuario_professor.pk_usuario_professor=" . "public.aula.fk_usuario_professor limit 1) " . "end) as nome_professor, " . "(case when fk_usuario_coordenador is not null then " . "(select public.usuario.nome from public.usuario " . "inner join public.usuario_coordenador on " . "public.usuario_coordenador.fk_usuario=" . "public.usuario.pk_usuario " . "where public.usuario_coordenador.pk_usuario_coordenador=" . "afa.afa_conceito_aluno.fk_usuario_coordenador limit 1) " . "end) as nome_coordenador, " . "(case "; //Adicionando a query todos os tipos de coordenação disponíveis foreach ($coordenador->getCoordTipos() as $cod => $tipoCoord) { $query .= "when tipo={$cod} then '{$tipoCoord}' "; } $query .= "end) as tipo_coordenador, " . "(select public.usuario.nome " . "from public.usuario WHERE " . "public.usuario.pk_usuario=" . "afa.afa_conceito_aluno.fk_usuario_inc limit 1) " . "as usuario_nome_insert, " . "(select public.tipo_usuario.tipo_usuario_nome " . "from public.tipo_usuario " . "inner join public.usuario_tipo_vin on " . "public.usuario_tipo_vin.fk_tipo_usuario=pk_tipo_usuario " . "WHERE " . "public.usuario_tipo_vin.fk_usuario=" . "afa.afa_conceito_aluno.fk_usuario_inc limit 1) " . "as usuario_grupo_insert " . "from afa.afa_conceito_aluno " . "inner join afa.afa_subtipo_anotacao on " . "afa.afa_subtipo_anotacao.pk_afa_subtipo_anotacao=" . "fk_afa_subtipo_anotacao " . "inner join afa.afa_tipo_anotacao on " . "afa.afa_tipo_anotacao.pk_afa_tipo_anotacao=" . "fk_afa_tipo_anotacao " . "left join public.coordenacao on " . "public.coordenacao.pk_coordenacao=" . "afa.afa_conceito_aluno.fk_coordenacao " . "inner join public.usuario_aluno on " . "public.usuario_aluno.pk_usuario_aluno=" . "afa.afa_conceito_aluno.fk_usuario_aluno " . "left join public.aula on public.aula.pk_aula=fk_aula " . "left join public.usuario_professor on " . "public.usuario_professor.pk_usuario_professor=" . "public.aula.fk_usuario_professor " . "left join public.usuario on " . "public.usuario.pk_usuario=" . "public.usuario_professor.fk_usuario " . "left join public.usuario_coordenador on " . "afa.afa_conceito_aluno.fk_usuario_coordenador=" . "public.usuario_coordenador.pk_usuario_coordenador " . "where " . "public.usuario_aluno.fk_usuario=" . $aluno->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) . ") "; } } //Filtros do sistema de filtros if ($filtrosSistema instanceof FiltrosSistema) { //Filtragem por datas $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() . "' " : ""; if (!$filtrosSistema->validar(array("de")) || !$filtrosSistema->validar(array("ate"))) { $query .= "and extract(year from data_evento)=" . Loader::data("config", "site", "ano_letivo") . " "; } } else { $query .= "and extract(year from data_evento)=" . Loader::data("config", "site", "ano_letivo") . " "; } //Ordenando $query .= "order by(data_evento) desc"; return $this->queryStatement($query); }
/** * Método que retorna o coordenador de acorod com o código informado ou usuário logado * @param int $pkUsuario O código do coordenador * @param strin $objetoHerdado Case seja usada uma especialização do coordenador * @return Kernel_Models_Coordenador Um objeto do tipo coordenador com os dados do mesmo * @throws Exception */ public function getCoordenador($pkUsuario = 0, $objetoHerdado = FALSE) { //Caso o usuário logado seja um coordenador $tipo = $this->usuarioLogado->get_tipoUsuarioAtivo()->get_idTipoUsuario(); if ($tipo == Kernel_Models_TiposUsuario::TIPO_COORDENADOR) { $pkUsuario = $this->usuarioLogado->get_idUsuario(); } //Validando o usuário informado if (!(int) $pkUsuario) { throw new Exception("O coordenador informado é inválido"); } //Criando instancia da classe if (is_string($objetoHerdado)) { //Este trecho é executado quando um objeto especifico é informado //Verificando se a classe informada existe if (!class_exists($objetoHerdado)) { throw new Exception("Ocorreu um erro interno. Entre em contato com o administrador do sistema"); } if (!in_array("Kernel_Models_Coordenador", array_keys(class_parents($objetoHerdado)))) { throw new Exception("Ocorreu um erro interno. Entre em contato com o administrador do sistema"); } //Verificando se a classe informada é herdeira de Kernel_Models_Aluno $coordenadorObj = new $objetoHerdado(); } else { $coordenadorObj = new Kernel_Models_Coordenador(); } $coordenador = $coordenadorObj->get((int) $pkUsuario); //Validando o objeto if (!$coordenador) { throw new Exception("O coordenador informado é inválido"); } return $coordenador; }
/** * Método que lista os responsáveis ligados ao coordendaor informado * @param Kernel_Models_Coordenador $coordenador * @return PDOStatement Um objeto contendo a resposta da consulta */ public function responsaveis(Kernel_Models_Coordenador $coordenador) { $query = "SELECT distinct on(pk_usuario)responsavel, " . "pk_usuario as aluno_pk " . "from public.usuario_coordenador " . "inner join public.usuario_tipo_vin on " . "public.usuario_tipo_vin.fk_usuario=public.usuario_coordenador.fk_usuario " . "inner join public.coordenacao_vin on pk_usuario_tipo_vin=fk_usuario_tipo_vin " . "inner join public.turma_vin on " . "public.turma_vin.fk_coordenacao=public.coordenacao_vin.fk_coordenacao " . "inner join public.usuario_aluno on public.usuario_aluno.fk_turma=public.turma_vin.fk_turma " . "inner join public.usuario on pk_usuario=public.usuario_aluno.fk_usuario " . "WHERE public.usuario_coordenador.fk_usuario=" . $coordenador->getId() . " " . "and ano_mat='" . Loader::data("config", "site", "ano_letivo") . "'"; return $this->queryStatement($query); }
/** * Método que lista as avaliações feitas pelo coordenador informado * @param Kernel_Models_Contratos $coordenador O coordenador a ser usado como filtro * @param FiltrosSistema $filtrosSitema * @return PDOStatement|boolean Um objeto contendo todas as pesquisas que o coordenador * respondeu ou FALSE em caso erro */ public function pesquisaDeCoordenador(Kernel_Models_Coordenador $coordenador, FiltrosSistema $filtrosSitema = NULL) { $query = "select distinct on(pk_par_pesquisa)* from fap.par_pesquisa " . "inner join fap.par_questao on pk_par_pesquisa=fk_par_pesquisa " . "inner join fap.par_resposta on pk_par_questao=fk_par_questao " . "inner join public.usuario_coordenador on pk_usuario_coordenador=fk_usuario_coordenador " . "WHERE fk_usuario=" . $coordenador->getId(); return $this->queryStatement($query); }