$(document).ready(function () { montaPedeCPF(); }); function montaPedeCPF() { const listaSequencia = { ident: { label: "identificação" }, cad: { label: "cadastro" }, curs: { label: "cursos" }, confirm: { label: "confirmação" }, ord: ["ident", "cad", "curs", "confirm"] }; _sequencia = new clSequencia({ lista: listaSequencia, onde: obj('mainInicial') }); new Cadastro({ dados: {}, item: { objCabecalho: {}, pai: {} }, naoVinculaComItem: true, onde: obj('areaCadastro'), iniciaEditando: true, botoes: [{ tipo: 'padrao', conteudo: "enviar", classe: 'botPadrao enviar', funcao: 'enviar', id: 'enviar' }], campos: [ { label: "CPF do aluno a ser matriculado", id: 'cpf', tipo: CampoCpf, cmp: 'naoGrava', max: 14, quebra: true, /* valorInicial: '676.869.334-40', */ eventos: { 'keyup': { obj: 'cadastro', 'funcao': 'clique' } } } ], antesMontar: function () { $(_fd).insertBefore(this.onde); "pede" }, enviar: function () { enviaCPF.call(this); }, clique: function (e) { cliqueCPF.call(this, e)} }); } function cliqueCPF(e) { if (e.keyCode == 13) enviaCPF.call(this); } function enviaCPF() { // o this desta função é o cadastro do envio de CPF const campoCPF = this.camposID['cpf'].objetoCampo; const valida = campoCPF.validaEspecifico(); const cpf = campoCPF.valor; if (cpf == '') aviso.call(this, "Por favor preencha o CPF"); else if (valida && valida.aviso) aviso.call(this, valida.aviso); else { const bot = this.botoes.find(bot => bot.id == "enviar").objBotao; bot.desabilita(); campoCPF.desabilita() const url = "matriculaonline/cadCpf.php"; const info = "cpf=" + cpf + "&idEsc=" + _idEsc; const esteCadastro = this; new cnx.carrega(url, function () { retornoCPF.call(esteCadastro, this.resposta) }, null, "POST", info); } } function aviso(msg, classe, tempo = 3000, botoes = []) { // o this desta função é o cadastro const bot = this.botoes[0].objBotao.elementoDom; // o primeiro botão do cadastro classe = (classe) ? " " + classe : ""; const divAviso = $("
" + msg + "
").insertAfter(bot); botoes.map(botao => $("" + botao.label + "").on("click", botao.funcao).appendTo(divAviso)); if (tempo > 0) setTimeout(function () { divAviso.remove() }, tempo); } function retornoCPF(retorno) { retorno = jQuery.parseJSON(retorno); let paramAluno = { dados: retorno }; paramAluno.dados["cpf"] = formataCPF(this.camposID['cpf'].objetoCampo.valor); if (retorno['erro'] == "novo_aluno") { paramAluno.titulo = "Por favor informe seus dados" + ":"; montaEditAluno.call(this, paramAluno); } else if (retorno['erro'] == "perfilNaoValido") { const botFechar = [{ label: "fechar", classe: "", funcao: function() { limpaAreaCadastro(); montaPedeCPF(); } }]; aviso.call(this, "perfil não é válido para matricula online", "perfilNaoValido", 0, botFechar); } else { paramAluno.titulo = "Olá" + " " + retorno.nome + ", " + "informe seus dados de acesso para continuar o processo"+":"; pedeSenha.call(this, paramAluno); } } function retornoLoginMatricOnline(retorno) { const cadastro = login.cadastroOriginal; let paramAluno = { dados: retorno }; paramAluno.dados["cpf"] = formataCPF(cadastro.camposID['cpf'].objetoCampo.valor); paramAluno.titulo = "Por favor confira seus dados e atualize-os se necessário"+":"; montaEditAluno.call(cadastro, paramAluno); } function pedeSenha(parametros) { const campos = [ { label: "CPF", id: 'cpf', tipo: CampoCpf, tab: 20, sqlTipo: "texto", quebra: true }, { label: "Digite seu nome de usuário", id: 'divUsu', tipo: CampoTexto, cmp: "nome", quebra: true, /* valorInicial: 'adams', */ obrigatorio: true }, { label: "Digite sua senha", id: 'divSen', tipo: CampoSenha, cmp: "email", quebra: true, /* valorInicial: 'ffry8453', */obrigatorio: true }, ]; const botEnviar = { tipo: 'padrao', conteudo: "enviar", classe: 'botPadrao', tip: "enviar", id: 'enviar', funcao: 'enviaSenha', enviaSenha: function() { } }; if (parametros.dados.idResp > 0) { campos.splice (1, 0, { label: "acesso do aluno", id: "acessoAluno", tipo: CampoRadio, name: 'acesso', value: 1, inverte: true, cmp: 'naoGrava', valorInicial: 1 }, { label: "acesso do responsável financeiro", id: "acessoResp", tipo: CampoRadio, name: 'acesso', value: 2, inverte: true, cmp: 'naoGrava' }, ) } return montaCadastro.call(this, parametros, 'pedeSenha', campos, null, [ botEnviar ]); } function retornaRespFinanc(retorno) { retorno = jQuery.parseJSON(retorno); } function antesEnviarSenha() { const botCancelar = this.botoes.filter(bot => bot.id == 'cancelar')[0].objBotao; botCancelar.desabilita.call(botCancelar); this.camposID["divSen"].objetoCampo.botRecup.hide(); } function naoEnviouSenha() { const botCancelar = this.botoes.filter(bot => bot.id == 'cancelar')[0].objBotao; botCancelar.habilita.call(botCancelar); this.camposID["divSen"].objetoCampo.botRecup.show(); } function hoje() { const dataAtual = new Date(); const dia = dataAtual.getDate(); const mes = (dataAtual.getMonth()) + 1; const ano = dataAtual.getFullYear(); const data = formataData(dia + "/" + mes + "/" + ano, null, true); return data; } function montaEditAluno(parametros) { parametros.refExt = {}; _sequencia.seleciona("cad"); const campos = [ { id: "cadastroCompilado", tipo: CampoSemCampo, tab: 20, cmp: "cadastroCompilado", sqlTipo: "num", gravaSeAlterouTabela: true, valorInicial: 1 }, { label: "nome", id: 'nome', tipo: CampoTexto, max: 250, tab: 20, cmp: "nome", sqlTipo: "texto", quebra: true, obrigatorio: true}, { label: "email", id: 'email', tipo: CampoEmail, tab: 20, cmp: "email", sqlTipo: "texto", quebra: true, }, { label: "CPF", id: 'cpf', tipo: CampoCpf, quebra: true }, { label: "DDI", id: "ddiFone", tipo: CampoSelect, tab: 20, lista: parametros.dados.ddiPais, cmp: "paisFone", sqlTipo: "num", quebra: true, classeEspecial: "ddi" }, { label: "DDD", id: "dddFone", tipo: CampoNumerico, tab: 20, cmp: "dddFone", sqlTipo: "num", quebra: true, classeEspecial: "ddd" }, { label: "número", id: "fone", tipo: CampoTexto, tab: 20, cmp: "fone", sqlTipo: "num", quebra: true }, { label: "DDI", id: "ddiCel", tipo: CampoSelect, tab: 20, lista: parametros.dados.ddiPais, cmp: "paisCel", sqlTipo: "num", quebra: true, classeEspecial: "ddi" }, { label: "DDD", id: "dddCel", tipo: CampoNumerico, tab: 20, cmp: "dddCel", sqlTipo: "num", quebra: true, classeEspecial: "ddd", }, { label: "número", id: "cel", tipo: CampoTexto, tab: 20, cmp: "cel", sqlTipo: "num", quebra: true, }, { label: "rua", id: "rua", tipo: CampoTexto, max: 250, tab: 20, cmp: "rua", sqlTipo: "texto", quebra: true, }, { label: "número", id: "num", tipo: CampoTexto, tab: 20, cmp: "num", sqlTipo: "texto", quebra: true, }, { label: "complemento", id: "compl", tipo: CampoTexto, tab: 20, cmp: "compl", sqlTipo: "texto", quebra: true }, { label: "bairro", id: "bairro", tipo: CampoTexto, max: 250, tab: 20, cmp: "bairro", sqlTipo: "texto", quebra: true, }, { label: "pais", id: "pais", tipo: CampoSelect, tab: 20, lista: parametros.dados.paises, cmp: "naoGrava", sqlTipo: "num", quebra: true }, { label: "estado", id: "est", tipo: CampoSelect, tab: 20, cmp: "naoGrava", sqlTipo: "num", basearEm: "pais", quebra: true }, { label: "cidade", id: "cid", tipo: CampoCidade, tab: 20, cmp: "id_cid", sqlTipo: "num", basearEm: "est", quebra: true }, { label: "CEP", id: "cep", tipo: CampoCep, tab: 20, cmp: "cep", sqlTipo: "texto", quebra: true, camposEnd: { "rua": "rua", "compl": "compl", "bairro": "bairro", "cid": "cid", "est": "est", "pais": "pais" } }, { id: "origemAlunoUsu", tipo: CampoSemCampo, tab: 20, cmp: "origem", sqlTipo: "texto", valorInicial: 'matriculaonline', gravaSeAlterouTabela: true } ]; const camposDadosAluno = ["nome","email", "cpf"]; if (parametros.dados && parametros.dados.campos) parametros.dados.campos.map(campo => { campos.push(campo); camposDadosAluno.push(campo.id); if (parametros.dados.id.substr(0, 4) != "novo") parametros.refExt[20] = parametros.dados.id; }); const gruposCampos = [ { id: "dadosAluno", legenda: "aluno", campos: camposDadosAluno, naoClear: true, classeEspecial: "foneCompleto" }, { id: "foneCompleto", legenda: "telefone", campos: ["ddiFone", "dddFone", "fone"], naoClear: true, classeEspecial: "foneCompleto" }, { id: "celCompleto", legenda: "celular", campos: ["ddiCel", "dddCel", "cel"], naoClear: true, classeEspecial: "foneCompleto" }, { id: "endereco", legenda: "endereço", campos: ["cep", "rua", "num", "compl", "bairro", "pais", "est", "cid"], naoClear: true }, { id: "aluno", legenda: "cadastro aluno", campos: [ "dadosAluno", "foneCompleto", "celCompleto", 'endereco'] }, ]; const botoes = [{ tipo: 'gravar', conteudo: "gravar", classe: 'botPadrao', id: 'gravar' }]; if (parametros.dados.idTabelaUsuResp > "") parametros.refExt[1280] = parametros.dados.idTabelaUsuResp; const novoAluno = (parametros.dados.id == "novo_aluno"); const temResp = (parametros.dados.idResp > ""); if (novoAluno || temResp) { campos.push( { id: "cadastroRespCompilado", tipo: CampoSemCampo, tab: 1280, cmp: "cadastroRespCompilado", sqlTipo: "num", gravaSeAlterouTabela: true, valorInicial: 1 }, { label: "nome", id: "nomeResp", tipo: CampoTexto, quebra: true }, { label: "email", id: "emailResp", tipo: CampoEmail, tab: 1280, cmp: "email", sqlTipo: "texto", quebra: true, }, { label: "CPF", id: "cpfResp", tipo: CampoCpf, quebra: true }, { label: "DDI", id: "ddiFoneResp", tipo: CampoSelect, tab: 1280, lista: parametros.dados.ddiPais, cmp: "paisFone", sqlTipo: "num", quebra: true, classeEspecial: "ddi" }, { label: "DDD", id: "dddFoneResp", tipo: CampoNumerico, tab: 1280, cmp: "dddFone", sqlTipo: "num", quebra: true, classeEspecial: "ddd" }, { label: "número", id: "foneResp", tipo: CampoTexto, tab: 1280, cmp: "fone", sqlTipo: "num", quebra: true }, { label: "DDI", id: "ddiCelResp", tipo: CampoSelect, tab: 1280, lista: parametros.dados.ddiPais, cmp: "paisCel", sqlTipo: "num", quebra: true, classeEspecial: "ddi" }, { label: "DDD", id: "dddCelResp", tipo: CampoNumerico, tab: 1280, cmp: "dddCel", sqlTipo: "num", quebra: true, classeEspecial: "ddd", }, { label: "número", id: "celResp", tipo: CampoTexto, tab: 1280, cmp: "cel", sqlTipo: "num", quebra: true, }, { label: "rua", id: "ruaResp", tipo: CampoTexto, max: 250, tab: 1280, cmp: "rua", sqlTipo: "texto", quebra: true, }, { label: "número", id: "numResp", tipo: CampoTexto, tab: 1280, cmp: "num", sqlTipo: "texto", quebra: true, }, { label: "complemento", id: "complResp", tipo: CampoTexto, tab: 1280, cmp: "compl", sqlTipo: "texto", quebra: true, }, { label: "bairro", id: "bairroResp", tipo: CampoTexto, max: 250, tab: 1280, cmp: "bairro", sqlTipo: "texto", quebra: true, }, { label: "cep", id: "cepResp", tipo: CampoCep, tab: 1280, cmp: "cep", sqlTipo: "texto", quebra: true, camposEnd: { "rua": "ruaResp", "compl": "complResp", "bairro": "bairroResp", "cid": "cidResp", "est": "estResp", "pais": "paisResp" }}, { label: "país", id: "paisResp", tipo: CampoSelect, lista: parametros.dados.paises, tab: 1280, cmp: "naoGrava", sqlTipo: "num", quebra: true }, { label: "estado", id: "estResp", tipo: CampoSelect, tab: 1280, cmp: "naoGrava", sqlTipo: "num", basearEm: "paisResp", quebra: true }, { label: "cidade", id: "cidResp", tipo: CampoCidade, tab: 1280, cmp: "id_cid", sqlTipo: "num", basearEm: "estResp", quebra: true }, { id: "origemResp", tipo: CampoSemCampo, tab: 1280, cmp: "origemResp", sqlTipo: "texto", valorInicial: 'matriculaonline', gravaSeAlterouTabela: true } ); gruposCampos.push( { id: "respFinancAluno", legenda: "dados responsável", campos: [ "nomeResp", "emailResp","cpfResp" ], naoClear: true, classeEspecial: "foneCompleto" }, { id: "foneCompletoResp", legenda: "telefone", campos: [ "ddiFoneResp", "dddFoneResp", "foneResp" ], naoClear: true, classeEspecial: "foneCompleto" }, { id: "celCompletoResp", legenda: "celular", campos: [ "ddiCelResp", "dddCelResp", "celResp" ], naoClear: true, classeEspecial: "foneCompleto" }, { id: "enderecoResp", legenda: "endereço", campos: [ "cepResp", "ruaResp", "numResp", "complResp", "bairroResp", "paisResp", "estResp", "cidResp" ] }, { id: "respFinanc", legenda: "cadastro responsável financeiro", campos: [ "respFinancAluno", "foneCompletoResp", "celCompletoResp", "enderecoResp" ] } ); if (novoAluno) { const paramCpfAluno = { tab: 20, sqlTipo: "texto", obrigatorio: true }; const campoCpfAluno = campos.filter(campo => campo.id == "cpf")[0]; Object.keys(paramCpfAluno).map(param => campoCpfAluno[param] = paramCpfAluno[param]); const paramNomeResp = { cmp: 'nome', tab: 1280, sqlTipo: "texto", max: 250, obrigatorio: true }; const campoNomeResp = campos.filter(campo => campo.id == "nomeResp")[0]; Object.keys(paramNomeResp).map(param => campoNomeResp[param] = paramNomeResp[param]); const paramCpfResp = { cmp: 'cpf', tab: 1280, sqlTipo: "texto", obrigatorio: true }; const campoCpfResp = campos.filter(campo => campo.id == "cpfResp")[0]; Object.keys(paramCpfResp).map(param => campoCpfResp[param] = paramCpfResp[param]); campos.splice(17, 0, { id: "id_perf", tipo: CampoSemCampo, tab: 30, cmp: "id_perf", sqlTipo: "num", valorInicial: parametros.dados.setup["perfilPadrao"], gravaSempre: true }, { id: "ini", tipo: CampoSemCampo, tab: 30, cmp: "ini", sqlTipo: "data", valorInicial: hoje(), gravaSempre: true }, { id: "fim", tipo: CampoSemCampo, tab: 30, cmp: "fim", sqlTipo: "data", valorInicial: hoje(), gravaSempre: true }, { id: "origemAlunoLicen", tipo: CampoSemCampo, tab: 30, cmp: "origem", sqlTipo: "texto", valorInicial: 'matriculaonline', gravaSeAlterouTabela: true }, { label: "sim", id: "respSim", classeEspecial: "simNao", tipo: CampoRadio, inverte: true, name: "registroAuto", cmp: "respSim", sqlTipo: "num", valorInicial: 1, value: 1, campoUnico: true, eventos: { "click": { obj: "cadastro", funcao: "verificaMontaResp" }}}, { label: "não", id: "respNao", classeEspecial: "simNao", tipo: CampoRadio, inverte: true, name: "registroAuto", cmp: "respNao", sqlTipo: "num", campoUnico: true, eventos: { "click": { obj: "cadastro", funcao: "verificaMontaResp" }}} ); gruposCampos.unshift( { id: "incluiResp", legenda: "incluir responsável financeiro", campos: ["respSim", "respNao"], naoClear: true } ); gruposCampos.filter(grupo => grupo.id == "aluno")[0].campos.push("incluiResp"); } } if (!novoAluno) { botoes.unshift({ tipo: 'padrao', conteudo: 'não alterar', classe: 'botPadrao', id: 'naoAlterar', funcao: 'naoAlterar', naoAlterar: function() { naoAlterar.call(this.pai) } }); } //se tem conta configurada efi ou RecebaFacil. remove campos obrigatorios let campObrig = parametros.dados.obrig campos.filter(grupo => grupo.id).forEach(campo => { if (campObrig.includes(campo.id)) { campo.obrigatorio = true; } }); parametros.avisoGravarEspecifico = "grave as alterações clicando abaixo"; parametros.verificaMontaResp = function() { verificaMontaResp.call(this)}; montaCadastro.call(this, parametros, 'cadAluno', campos, gruposCampos, botoes); } function montaCadastro(parametros, classe, campos, gruposCampos, botoes) { $("#intro").hide(); // show() limpaAreaCadastro(); const areaCadastro = obj('areaCadastro'); colocaClasse(areaCadastro, classe); botoes.unshift({ tipo: 'padrao', conteudo: "cancelar", classe: 'botPadrao', tip: "cancelar", id: 'cancelar', funcao: 'testaCancelar' }); const paramCadastro = { dados: parametros.dados, item: { objCabecalho: {}, pai: {}, li: { childNodes: [] } }, naoVinculaComItem: true, onde: areaCadastro, iniciaEditando: true, naoRemontaAoGravar: true, acaoBusca: 380, botoes: botoes, avisoExcluir: "Deseja cancelar ao processo de matrícula online" + "?", incluiGravaGet: { pag: 40 }, // pagina de alunos para o cadastro do aluno campos: campos, gruposCampos: gruposCampos, classe: classe, antesDeExcluir: function () { return cancelar.call(this) }, antesMontar: function () { antesMontar.call(this) }, aposMontar: function () { aposMontar.call(this, parametros.titulo) }, antesDeGravar: function() { antesDeGravar.call(this) }, aposGravar: function (retorno) { gravouDadosAluno.call(this, retorno) }, testaCancelar: function () { testaCancelar.call(this) } }; if (parametros.avisoGravarEspecifico) paramCadastro.avisoGravarEspecifico = parametros.avisoGravarEspecifico; if (parametros.verificaMontaResp) paramCadastro.verificaMontaResp = parametros.verificaMontaResp; if (parametros.refExt) paramCadastro.refExt = parametros.refExt; const cadastro = new Cadastro(paramCadastro); return cadastro; } function limpaAreaCadastro() { const areaCadastro = obj('areaCadastro'); limpaConteudo(areaCadastro); tiraClasse(areaCadastro, 'pedeCpf'); tiraClasse(areaCadastro, 'cadAluno'); tiraClasse(areaCadastro, 'pedeSenha'); tiraClasse(areaCadastro, 'pedeEmail'); tiraClasse(areaCadastro, 'escCurso'); tiraClasse(areaCadastro, 'confirMatric'); //tiraClasse(areaCadastro, 'valores'); } function testaCancelar() { // troca o id se for novo para não excluir direto, pedir a confirmação antes const idOld = this.dados.id; if (this.dados.id.toString().substring(0, 4) == 'novo') this.dados.id = this.dados.id.substring(2); this.testaExclusao.call(this); this.dados.id = idOld; } function cancelar() { // aplica o "cancelar" não deixando passar para a função de exclusão padrão do cadastro // volta ao início $("#intro").show(); limpaAreaCadastro(); montaPedeCPF(); return false; } function antesMontar() { this.incluiGravaPost = { idLicen: this.dados.idLicen }; $(_fd).insertBefore(this.onde); if (this.classe == "cadAluno") { testaDadosCobranca.call(this); } } function aposMontar(msg) { colocaTitulo.call(this, msg); const campoCPF = this.camposID["cpf"]; campoCPF.objetoCampo.cmp = "cpf"; campoCPF.objetoCampo.gravaSempre = true; if (this.classe == 'pedeSenha') { const este = this; const campoSenha = this.camposID["divSen"].objetoCampo; const divSenha = campoSenha.elementoDiv; campoSenha.botRecup = $("" + "recupere sua senha" + "") .appendTo(divSenha).on("click", function () { pedeEmailParaSenha.call(este) }); ajustaParaLogin.call(this); //exibe e oculta senha digitada let divSen = this.camposID["divSen"].objetoCampo.elementoDiv; this.iconeOlho = $('').appendTo(divSen) .on("click", function () { let senhaInput = $("#sen"); let exibeSenha = senhaInput.attr("type") == "password" ? "text" : "password"; senhaInput.attr("type", exibeSenha); $(this).removeClass( exibeSenha == "password" ? "olho_aberto" : "olho_fechado") .addClass(exibeSenha == "password" ? "olho_fechado" : "olho_aberto"); }); } if (this.classe != 'pedeSenha') botaoCopiaContatos.call(this); } function ajustaParaLogin() { // coloca o ID "bot" no botão de enviar const botEnviar = this.objBotoes.listaBotoes.find(bot => bot.objBotao.funcao == 'enviaSenha'); botEnviar.objBotao.elementoDom.setAttribute('id', 'bot'); // cria um form inócuo $("
").appendTo(this.divCadastro); // troca o ID dos campos de usuário e senha const camposID = this.camposID; const dadosCPF = this.dados; camposID['divUsu'].objetoCampo.campo.setAttribute('id', 'usu'); camposID['divSen'].objetoCampo.campo.setAttribute('id', 'sen'); // incializa os campos de login login.ini(); // ajusta os parâmetros login.url = "func/login.php"; login.origem = "matriculaonline"; login.text.botEntra = 'enviar'; login.cadastroOriginal = this; login.bot.onclick = function(e) { if (login.testa(e) != false) antesEnviarSenha.call(login.cadastroOriginal); } login.completaDados = function(dados) { dados['idUsu'] = dadosCPF.id; dados['idResp'] = dadosCPF.idResp; dados['tipoAcesso'] = (camposID["acessoResp"]) ? camposID["acessoResp"].objetoCampo.valorRadioSelecionado() : 1; } } function colocaTitulo(msg) { this.titulo = $("
" + msg + "
").appendTo(this.onde); } function antesDeGravar() { if (this.classe == "cadAluno") { desabilitaBotoes.call(this); } } function gravouDadosAluno(retorno) { if (retorno.grava != 1) { // deu erro na gravação. informar ao usuário } else { // quando grava o responsável junto o idUsu do aluno retorna no infoRetorno this.dados.id = (retorno.infoRetorno && retorno.infoRetorno.idUsu) ? retorno.infoRetorno.idUsu : retorno.id; // gravou com sucesso -> próximo passo buscaCursos.call(this, this.dados.id); } } function buscaCursos(idUsu) { limpaAreaCadastro(); $("#areaCadastro").addClass("escCurso"); $("
" + "Escolha o curso e a turma que irá cursar" + ":
").appendTo($("#areaCadastro")); this.divCarregando = $("
" + "buscando os cursos disponíveis" + "." + "por favor aguarde" + "...
").appendTo($('#areaCadastro')); const url = 'matriculaonline/escCurso.php'; const info = "acao=turmas&idEsc=" + _idEsc + "&curs=" + _curso + "&idAluno=" + idUsu; const esteCadastro = this; new cnx.carrega(url, function () { retornoCursos.call(esteCadastro, this.resposta) }, null, "POST", info); } function retornoCursos(retorno) { retorno = jQuery.parseJSON(retorno); this.divCarregando.remove(); if (retorno['erro']) { aviso.call(this, "entre em contato com a escola"); } else { _sequencia.seleciona("curs"); infoCursos.call(this, retorno.cursos, retorno.pacotes, retorno.proximoEstagio, retorno.dadosMatric, retorno.rematric); } } function carregaEvento(lista, esteCadastro){ return lista .on("click", "ul.turmas>li:not(.mostraValores)", function() { buscaValores.call(esteCadastro, this); }) .on("click", "ul.turmas a.confirmar", function(event) { confirmaMatric.call(esteCadastro, this, event) }) .on("click", "ul.turmas a.cancelar", function(e) { e.stopPropagation(); cancelaMatric.call(esteCadastro, this) }) .on("click", "h5", function() { $(this).parent().children().not("h5, h6").toggle(); $(this).toggleClass("active") }); } function infoCursos(retornoCursos,retornoPacotes, voltouProxEstagio, ultimaMatric, rematric) { const cursos = {}; const estagios = {}; const esteCadastro = this; const listaCursos = carregaEvento($(""), esteCadastro); const listaPacotes = carregaEvento($(""), esteCadastro); var listaEstagios, listaTurmas; if (ultimaMatric) { let txtUltimaMatric = "Dando continuidade à sua matrícula" + ":
"; if (ultimaMatric.curso) txtUltimaMatric += ultimaMatric.curso; if (ultimaMatric.estagio) txtUltimaMatric += ' - ' + ultimaMatric.estagio; if (ultimaMatric.turma) txtUltimaMatric += ", " + "turma" + ": " + ultimaMatric.turma; if (ultimaMatric.fim) txtUltimaMatric += "
" + ((ultimaMatric.atual == "1") ? "que terminará em" : "finalizada em") + " " + ultimaMatric.fim + "
"; $("
").insertBefore('#areaCadastro').append(_fd); if (retornoCursos.length == 0) { $("").appendTo(listaCursos); $("#areaCadastro.escCurso h6.titulo").hide() } } function criaHorariosTurmas(turma){ horarios = turma.horarios ? "" : "
"; if (turma.horarios) { const hora = { "ini": turma.horarios[0].ini, "fim": turma.horarios[0].fim }; const horaDiferente = turma.horarios.find(horario => horario.ini != hora.ini || horario.fim != hora.fim); const horariosTxt = []; turma.horarios.map(horario => { horariosTxt.push(horario.dia + ((horaDiferente) ? " das " + horario.ini + " às " + horario.fim : "")); }); horarios = horariosTxt.join(" / "); if (!horaDiferente) horarios += " das " + hora.ini + " às " + hora.fim; horarios = "

" + horarios + "

"; } return horarios; } function criaLiTurma(turma) { const liTurma = $("
  • "); if (turma.cursoEstagio) liTurma.append($("" + turma.cursoEstagio + "")); liTurma.append($("
    " + turma.turma + "
    ")); if (turma.obsTurma) liTurma.append($("" + turma.obsTurma + "")); if (turma.ini) liTurma.append($("
    " + turma.ini + "
    ")); if (turma.fim) liTurma.append($("
    " + turma.fim + "
    ")); const horariosTurmas = criaHorariosTurmas(turma); liTurma.append(horariosTurmas); return liTurma; } retornoCursos.map(turma => { if (!cursos[turma.idCurs]) { const liCurso = $("
  • ").appendTo(listaCursos); liCurso.append($("
    " + turma.curso + "
    ")); if (turma.objCurso) liCurso.append($("")); listaEstagios = $("").appendTo(liCurso); cursos[turma.idCurs] = turma.curso; } if (!estagios[turma.idEst]) { const liEstagio = $("
  • ").appendTo(listaEstagios); if (turma.estagio) { liEstagio.append($("
    " + turma.estagio + "
    ")); if (turma.objEstagio) liEstagio.append($("" + turma.objEstagio + "")); } listaTurmas = $("").appendTo(liEstagio); estagios[turma.idEst] = turma.estagio; } const liTurma = criaLiTurma(turma); listaTurmas.append(liTurma); }); retornoPacotes.map(pacote => { const liPacote = $("
  • ").appendTo(listaPacotes); liPacote.append($("
    " + pacote.nome + "
    ")); const ulGrupoTurmas = $("").appendTo(liPacote); pacote.gruposTurmas.forEach(grupoTurmas => { const camposTurmas = $("").appendTo(ulGrupoTurmas); grupoTurmas.turmas.forEach(turma => { const liTurma = criaLiTurma(turma); camposTurmas.append(liTurma); }); }); }); if (rematric.outrosCursos == "1" && voltouProxEstagio == "1") { const botVerCursos = $("
    " + "" + "outras opções de cursos" + "" + "
    ").on('click', 'a:not(.desabilitado)', function () { buscaOutrosCursos.call( esteCadastro )}) listaCursos.append(botVerCursos); } $("#areaCadastro").append(_fd).append(listaCursos); $("#areaCadastro").append(_fd).append(listaPacotes); } function buscaOutrosCursos ( ){ limpaAreaCadastro(); idUsu = this.dados.id $("#areaCadastro").addClass("escCurso"); $("
    " + "Escolha o curso e a turma que irá cursar" + ":
    ").appendTo($("#areaCadastro")); this.divCarregando = $("
    " + "buscando os cursos disponíveis" + "." + "por favor aguarde" + "...
    ").appendTo($('#areaCadastro')); const url = 'matriculaonline/escCurso.php'; const info = "acao=turmas&idEsc=" + _idEsc + "&curs=" + _curso + "&todos=1" + "&idUsu=" + idUsu; //log(this) const esteCadastro = this; new cnx.carrega(url, function () { retornoCursos.call(esteCadastro, this.resposta) }, null, "POST", info); } function pedeEmailParaSenha() { const parametros = { dados: { id: this.dados.id }, titulo: "Por favor informe seu e-mail para recuperar a senha" }; parametros.dados["cpf"] = formataCPF(this.camposID['cpf'].objetoCampo.valor); const campos = [ { label: "CPF", id: 'cpf', tipo: CampoCpf, tab: 20, sqlTipo: "texto", quebra: true }, { label: "informe seu e-mail cadastrado", id: 'email', tipo: CampoEmail, cmp: "email", quebra: true, obrigatorio: true, posLabel: "Se não lembra seu e-mail cadastrado" + "," + " por favor entre em contato com a escola" }, ]; const botEnviar = { tipo: 'padrao', conteudo: 'enviar', classe: 'botPadrao enviar', tip: 'enviar', id: 'enviar', funcao: 'enviaEmailParaSenha', enviaEmailParaSenha: function () { enviaEmailParaSenha.call(this.pai) } }; montaCadastro.call(this, parametros, 'pedeEmail', campos, null, [ botEnviar ]); } function enviaEmailParaSenha() { const campoEmail = this.camposID['email'].objetoCampo; const valida = campoEmail.validaEspecifico(); const email = campoEmail.valor; if (email == '') aviso.call(this, 'por favor informe seu e-mail cadastrado', 'emailVazio'); else if (valida && valida.aviso) aviso.call(this, valida.aviso); else { this.botEnviar = this.botoes.find(bot => bot.id == "enviar").objBotao; this.botEnviar.desabilita(); const url = 'matriculaonline/buscaEmail.php'; const info = 'email=' + email + '&id=' + this.dados.id + "&idEsc=" + _idEsc; const esteCadastro = this; new cnx.carrega(url, function () { retornaEmailSenha.call(esteCadastro, this.resposta) }, null, "POST", info); } } function retornaEmailSenha(retorno) { retorno = jQuery.parseJSON(retorno); if (retorno.erro > 0) { aviso.call(this, retorno.msg || retorno.erro); this.botEnviar.habilita(); } else if (retorno.envio == 1) { let nome = retorno.emails.split('<')[0]; nome = nome.substr(0, nome.length - 1); let email = retorno.emails.split('<')[1]; email = email.substr(0, email.length - 1); let paramAluno = { dados: { id: this.dados.id, cpf: this.dados.cpf } }; paramAluno.titulo = "Olá" + nome + "," + "informe seus dados de acesso para continuar o processo"+":" const novoCadastro = pedeSenha.call(this, paramAluno); aviso.call(novoCadastro, "O e-mail de senha foi enviado para" + email); } else { aviso.call(this, "O e-mail não pôde ser enviado"+"." + "Por favor tente novamente"+". "); this.botEnviar.habilita(); } } function naoAlterar() { var avisos = []; // volta os campos para os valores originais e testa-os for (var i = 0; i < this.campos.length; i++) { const campo = this.campos[i].objetoCampo; if (campo.campo) campo.colocaValorOriginal.call(campo); campo.validaCampo.call(campo, avisos); } if (avisos.length > 0) { const cadastro = this; this.avisoNaoGrava = new clAviso( { avisos: avisos, tempoAberto: 0, temFechar: true, textoTit: "por favor verifique" + ":", aposFechar: function() { habilitaBotoes.call(cadastro); } } ); this.onde.appendChild(this.avisoNaoGrava.cria()); this.avisoNaoGrava.mostra(); desabilitaBotoes.call(this); } else { const idUsu = this.dados.id; if (!this.naoGrava) buscaCursos.call(this, idUsu); } } function desabilitaBotoes() { this.botoes.map(bot => bot.objBotao.desabilita.call(bot.objBotao)); } function habilitaBotoes() { this.botoes.map(bot => bot.objBotao.habilita.call(bot.objBotao)); } function buscaValores(li) { colocaClasse(li, 'mostraValores'); $("
    " + "buscando valores"+"..."+"
    ").appendTo(li); const idPacote = $(li).closest('div.divGrupoTurmas').attr('id') const idTurm = li.getAttribute("id").split("_")[1]; const url = 'matriculaonline/escCurso.php'; const info = "acao=valores&idTurm=" + idTurm + "&idPacote=" + idPacote ; const esteCadastro = this; new cnx.carrega(url, function () { retornoValores.call(esteCadastro, this.resposta, li, idTurm) }, null, "POST", info); } function retornoValores(retorno, li, idTurm) { retorno = jQuery.parseJSON(retorno); $(li).find("div.carregando").remove(); if (!retorno.idTurm) { // deu algum erro, informar ao usuário } else { if (retorno.idTurm == idTurm) infoValores.call(this, retorno.valores, li, idTurm); } } function infoValores(valores, li, idTurm) { const ulGrupoTurmas = $(li).closest('ul.turmas') const ulCursos = ulGrupoTurmas.closest('ul.cursos'); const divValores = $("
    "); const listaValores = $("").appendTo(divValores); const taxaMatricula = valores.filter(val => val.idCat == 1); const desconto = valores.filter(val => val.idCat == 1); if (desconto > 0) { } if (taxaMatricula.length > 0) listaValores.append(valoresPorTipo.call(this, "taxa de matrícula", taxaMatricula, 'txMat', idTurm)); const matDidat = valores.filter(val => val.idCat == 48); if (matDidat.length > 0) listaValores.append(valoresPorTipo.call(this, "material didático", matDidat, 'matDid', idTurm)); const pagamentos = valores.filter(val => val.idCat != 1 && val.idCat != 48); if (pagamentos.length > 0) listaValores.append(valoresPorTipo.call(this, "pagamentos", pagamentos, 'pagtos', idTurm)); var texto = "Confirma a matrícula nesta turma" + " "; if (taxaMatricula.length > 0 || matDidat.length > 0 || pagamentos.length > 0) { if (taxaMatricula.length > 1 || matDidat.length > 1 || pagamentos.length > 1) { texto += "com os valores selecionados"; } else { texto += "com os valores indicados"; } } divValores.append($("")); $("
    " + "" + "cancelar" + "" + "" + "confirmar" + "" + "
    ").appendTo(divValores); if(ulCursos.length > 0){ $(li).addClass('turma').append(divValores); $(li).find('div.nome, span.obj, div.data, p.horarios').css({'opacity': '0.5', 'pointer-events': 'none'}); } else{ divValores ulGrupoTurmas.find('li:last').after(divValores); ulGrupoTurmas.find('>li').css({'opacity': '0.5', 'pointer-events': 'none'}); ulGrupoTurmas.find('span.obj, div.data, p.horarios').css('display', 'none'); } } function valoresPorTipo(titulo, lista, nome, idTurm) { const li = $("
  • " + titulo + "
  • "); const ul = $("").appendTo(li); const quant = lista.length; lista.map(val => { const liValor = $("
  • "); const tipoInput = (quant > 1) ? "radio" : "hidden"; $("").appendTo(liValor); const labelValor = $(" 1) ? " for='val_" + val.id + "' class='comInput'" : "") + ">").appendTo(liValor); if (val.nome.length > 0) $("" + val.nome + ":").appendTo(labelValor); if (val.valor.length > 0) $("R$" + val.valor + "").appendTo(labelValor); if (val.vezes.length > 0) $("em " + val.vezes + " " + ((val.vezes > 1) ? "vezes" : "vez") + "").appendTo(labelValor); if (val.desc) { let desconto = val.tipDesc == 1 ? `${val.desc}%` : `R$${val.desc}`; $("" + "desconto de" + ": " + desconto + "").appendTo(labelValor); } if (val.descAntecip) { let descontoAntecip = val.tipDescAntecip == 1 ? `${val.descAntecip}%` : `R$${val.descAntecip}`; $("" + "desconto até o vencimento"+":" + descontoAntecip + "").appendTo(labelValor); } liValor.appendTo(ul); }); return li; } function confirmaMatric(bot) { bot = $(bot); const divBotoes = bot.parent() const divValores = bot.closest("div.valores"); const inputs = divValores.find("input[type=radio]"); if (!this.divCarregando) { this.divCarregando = $("
    "); } if (inputs.length > 0) { const grupos = []; inputs.each((cont, input) => grupos[input.getAttribute("name")] = true); const avisos = []; Object.keys(grupos).map(nome => { const grupo = inputs.filter("[name='" + nome + "']"); const selecionadosGrupo = grupo.filter(":checked"); if (selecionadosGrupo.length == 0) { const titulo = grupo.first().closest('li:not(.valoresTipo)').find('h7').html(); avisos.push("* " + "Selecione uma opção de" + " " + titulo); } }); if (avisos.length > 0) { bot.prop('disabled', true).addClass("desabilitado"); const divAviso = $("
    " + avisos.join("
    ") + "
    "); bot.before(divAviso); inputs.on('click', function () { divAviso.remove(); bot.prop('disabled', false).removeClass("desabilitado"); }); } else { $("ul.cursos, ul.pacotes").addClass("desabilitado"); exibirCarregamento.call(this, divBotoes); gravaMatricula.call(this, divBotoes); } } else { $("ul.cursos, ul.pacotes").addClass("desabilitado"); exibirCarregamento.call(this, divBotoes); gravaMatricula.call(this, divBotoes); } } function exibirCarregamento(divBotoes) { let msgEtapa = 'enviando informações.'; this.divCarregando = $("
    "); this.divCarregando.appendTo(divBotoes.empty()); this.divEvolucao = $("
    ").appendTo(this.divCarregando); } function cancelaMatric(bot) { const ulTurmas = $(bot).closest('ul.turmas'); ulTurmas.find('li').css({ 'opacity': '', 'pointer-events': '' }).each(function() { $(this).find('span.obj, div.data, div.nome, p.horarios').removeAttr('style'); }); ulTurmas.find("div.valores").remove(); ulTurmas.find('li').removeClass('mostraValores'); } function gravaMatricula(divBotoes, etapa, dadosMatric) { const idPacote = divBotoes.closest('div.divGrupoTurmas').attr('id'); const divValores = divBotoes.closest("div.valores"); const idTurm = []; if(idPacote){ const ulTurmas = divValores.closest("ul.turmas"); ulTurmas.children().filter("li").each((cont, li) => idTurm.push(li.getAttribute("id").split("_")[1])); }else { const liTurma = divValores.closest("li.turma"); liTurma.filter("li").each((cont, li) => idTurm.push(li.getAttribute("id").split("_")[1])); } const idUsu = this.dados.id; const idsTaxas = []; divValores.find("input:checked, input[type=hidden]").each((cont, input) => idsTaxas.push(input.getAttribute("id").split("_")[1])); //*let msgEtapa = novaMsgEtapa || 'enviando informações.'; etapa = etapa || "1"; let totCobrancas = this.totCobrancas || 0; if (dadosMatric && typeof(dadosMatric["totCobrancas"]) != "undefined") this.totCobrancas = dadosMatric["totCobrancas"]; // para no começo do processo a barrinha andar um pouco colocamos o total = 30 (antes de calcular o total de cobranças) this.totEtapas = (typeof(this.totCobrancas) != "undefined") ? this.totCobrancas + 5 : 30; // para não chegar no 100% antes de finalizar this.totEtapas += 1; if (etapa > 1) { const percent = (100 * etapa / this.totEtapas).toFixed(1) + "%"; const spanBarrinha = this.divEvolucao.find("span"); spanBarrinha.animate({ "width": percent }, 500); this.divEvolucao.find("label").text(percent); } const url = 'matriculaonline/escCurso.php'; let info = "acao=matric&idUsu=" + idUsu + "&idTurm=" + idTurm.join(",") + "&idTaxa=" + idsTaxas.join(",") + "&idEsc=" + _idEsc + "&etapa=" + etapa; if (idPacote) info += "&idPacote=" + idPacote; //if (dadosMatric) info += "&dadosMatric=" + JSON.stringify(dadosMatric); if (dadosMatric) { if (!Array.isArray(dadosMatric)) dadosMatric = [dadosMatric]; info += "&dadosMatric=" + JSON.stringify(dadosMatric); if (totCobrancas > 0) info += "&totCobrancas=" + totCobrancas; let etapaCob = 'fim'; // coloca EtapaCob no info se todas as matrículas estiverem = 'fim' let etapaFim = -1; // coloca etapaFim no info se todas as matrículas estiverem com etapaFim iguais dadosMatric.map(matric => { if (matric.etapaCob != 'fim') etapaCob = ''; if (etapaFim == -1 && matric.etapaFim) etapaFim = matric.etapaFim; if (matric.etapaFim != etapaFim) etapaFim = ''; }); if (etapaCob == 'fim') info += "&etapaCob=fim"; if (etapaFim != '' && etapaFim != -1) info += "&etapaFim=" + etapaFim; } const esteCadastro = this; new cnx.carrega(url, function() { gravandoMatric.call(esteCadastro, this.resposta, divBotoes) }, null, "POST", info); } function gravandoMatric(resposta, divBotoes) { resposta = jQuery.parseJSON(resposta); let etapa = (resposta.etapa > "0") ? resposta.etapa : "fim"; const idPacote = divBotoes.closest('div.divGrupoTurmas').attr('id'); //const infoValores = resposta.matric.valores //log(infoValores); //if (infoValores) { //log("entrou"); //etapa = "taxa de matricula" //} const novaMsgEtapa = resposta.msgEtapa; this.divCarregando.children().first().text(novaMsgEtapa); const dadosMatric = resposta.matric; if (etapa != "fim") { const proximaEtapa = parseInt(etapa) + 1; gravaMatricula.call(this, divBotoes, proximaEtapa, dadosMatric); } else if (etapa == "fim") { gravouMatric.call(this, resposta, idPacote ); } } function gravouMatric(retorno, idPacote) { if (retorno.gravou == '1') { limpaAreaCadastro(); _sequencia.seleciona("confirm"); const areaCadastro = $("#areaCadastro").addClass("confirMatric"); const matric = (idPacote) ? retorno.matric[0] : retorno.matric; const dadosMatric = (idPacote) ? matric.dadosMatric[0] : matric.dadosMatric; const dadosPacoteCurso = matric.dadosMatric var html = "
    " + "
    " + "Parabéns" + "!!!" + "
    " + "

    " + "Seu cadastro foi realizado junto à escola" + "." + "

    " + "

    " + "Confira as informações abaixo" + ". " + "Qualquer dúvida, por favor entre em contato direto com sua escola" + "." + "

    " + dadosMatric.nome + "" + "" + dadosMatric.cpf + "" + "" + "" + ((dadosMatric.ddi) ? "+" + dadosMatric.ddi + " " : "") + ((dadosMatric.ddd) ? "(" + dadosMatric.ddd + ") " : "") + dadosMatric.cel + "" + "

    "; if (idPacote) { html += "

    " + dadosMatric.pacote + "

    "; dadosPacoteCurso.forEach(dadosCurso => { html += visualizaCurso(dadosCurso);}); } else { const dadosCurso = dadosPacoteCurso; html += visualizaCurso(dadosCurso); } const valores = matric.valores; if (valores && valores.length) { html += ""; }; if (matric.cobrancas && matric.cobrancas.length > 0) { const linkBoleto = "../interno/pag_boleto.asp?cod="; const txtCobranca = (matric.cobrancas.length > 1) ? "dos valores abaixo" : "do valor abaixo"; html += "

    Para confirmar a sua matrícula por favor efetue o pagamento " + txtCobranca + " (clique sobre cada link para abrir o boleto):

    "; }; html += "
    "; areaCadastro.append(_fd).append($(html)); if (matric.idContrato) { const esteCadastro = this; this.botContrato = $("
    " + "" + "veja o contrato" + "" + "
    " + "aceite pendente" + "
    " + "
    ").appendTo($("div.confirmacao")) .on('click', 'a:not(.desabilitado)', function () { dialogContrato.call(esteCadastro, matric.idContrato, retorno) }); }; if (matric.cobrancas && matric.cobrancas.length > 0) { areaCadastro.find("a.abreBoleto").on('click', function(e) { e.preventDefault(); const url = this.getAttribute("href"); const iframe = ""; const altura = Math.floor(tamanhoTela().altura * 0.80); $("
    " + iframe + "
    ").dialog({ autoOpen: false, modal: true, height: altura, width: '80%', show: false }).dialog('open'); }); } } } function visualizaCurso(dadosCurso) { return "

    " + "" + dadosCurso.curso + ((dadosCurso.estagio) ? " - " + dadosCurso.estagio : "") + "" + "" + dadosCurso.turma + "" + "" + dadosCurso.ini + "" + "" + dadosCurso.fim + "" + "

    "; } function verificaMontaResp() { const camposID = this.camposID; const comResp = camposID["respSim"].objetoCampo.valor; const campos = ["nomeResp", "emailResp","cpfResp", "ddiFoneResp", "dddFoneResp", "foneResp", "ddiCelResp", "dddCelResp", "celResp", "cepResp", "ruaResp", "numResp", "complResp", "bairroResp", "paisResp", "estResp", "cidResp" ]; const funcaoHabilita = (comResp == 1) ? "habilita" : "desabilita"; const funcaoExibe = (comResp == 1) ? "exibe" : "oculta"; campos.map(nomeCampo => { const objCampo = camposID[nomeCampo].objetoCampo; objCampo[funcaoHabilita].call(objCampo); objCampo[funcaoExibe].call(objCampo); }); const gruposCampos = ["respFinanc"] gruposCampos.map(nomeCampo => $(this.gruposCamposID[nomeCampo].divGrupo)[comResp == 1 ? "show" : "hide"]()); } function botaoCopiaContatos() { const cadastro = this; const campoBot = this.gruposCamposID["respFinancAluno"].divGrupo; campoBot.botaoCopia = $("").appendTo(campoBot) .on("click", function () { copiaContatos.call(cadastro) }); } function copiaContatos() { const cadastro = this; const campos = { "email": "emailResp", "ddiFone": "ddiFoneResp", "dddFone": "dddFoneResp", "fone": "foneResp", "ddiCel": "ddiCelResp", "dddCel": "dddCelResp", "cel": "celResp", "cep": "cepResp", "rua": "ruaResp", "num": "numResp", "compl": "complResp", "bairro": "bairroResp", "pais": "paisResp", "est": "estResp","cid": "cidResp" }; Object.keys(campos).map(nomeCampo => { copiacadaCampo.call(cadastro, nomeCampo, campos) }); } function copiacadaCampo(nomeCampo, campos) { const camposID = this.camposID; const campoAluno = camposID[nomeCampo].objetoCampo; const campoResp = camposID[campos[nomeCampo]].objetoCampo; campoResp.colocaValor($(campoAluno.campo).val()); // se for campo de país, após colocar o valor atualiza a lista de estados para depois poder selecionar o estado if (nomeCampo == "pais") { const campoEstado = camposID["estResp"].objetoCampo; campoEstado.verificaLista.call(campoEstado, campoResp); } // se for campo de estado, após colocar o valor atualiza a lista de cidades para depois poder selecionar a cidade if (nomeCampo == "est") { const campoCidade = camposID["cidResp"].objetoCampo; campoCidade.verificaLista.call(campoCidade, campoResp); } }