/**FUNÇÃO QUE ENVIA OS DADOS PARA O CONTROLLER EXECUTAR A TAREFA AOS METODOS POST, PUT E DELETE */ /** */ function _EXEC(formID, msg = null, showToast = true) { let aForm = $('#' + formID); /**OBTERM OS DADOS DO FORMULÁRIO COM ID formID */ //let aData = aForm.serialize(); let aData = new FormData(aForm[0]); let aBtnSubmit = $('#' + formID + 'button*[type="submit"]'); /**VERFIFICA OS CHECKBOX DO FORM E PASSA O VALUE COMO ZERO QUANDO NÃO SELECIONADO */ $('#' + formID + ' *[type="checkbox"]').each(function (index) { /**SÓ PREENCHE SE CHECKED = FALSE */ if (!$(this).prop('checked')) aData.append($(this).prop('name'), '0'); }); /**BUSCA NO FORM SE INPUT COM A PROPRIDADE id-data DEFINIDA */ let aID = aForm.parent().find('#' + formID + ' input*[id-data]').val(); /**BUSCA O NOME DA TABELA EXIGIDA NA REGRA */ let aTable = aForm.attr('@tab'); if (!isUndefined(aTable)) aTable = aTable.replace("@", ""); else aTable = ''; /**METHODO PADRÃO = POST */ let aMethod = 'POST'; /**VERIFICA SE É EDIÇÃO BASEADO NO ID DO FORM LOCALIZADO ACIMA*/ if (!isUndefined(aID) && aID.trim() !== '') aMethod = 'PUT'; aBtnSubmit.attr('disabled', true); /**ENVIA OS DADOS PARA O CONTROLLER GRAVAR OS DADOS NO BANCO */ ShowLoad(); return $.ajax({ type: "POST", url: `${URL_BASE}App/Controller/Query/query.controller.php?method=${aMethod}&table_name=${aTable}`, cache: false, enctype: 'multipart/form-data', contentType: false, processData: false, data: aData, success: function (data) { aBtnSubmit.attr('disabled', false); //console.log(data); HideLoad(); try { let MsgE = ""; if (data == '' || data == '[]') { MsgE = 'Ops, Os dados de gravação retornaram vazio, contate um administrador !!'; OpenModal(MsgE); return '{"erro":"1", "msg":"' + MsgE + '"}'; } else { let OBJ = JSON.parse(data); if (OBJ.erro == 1) { MsgE = 'Ops, Ocorreu um problema durante a gravação. Erro: '; OpenModal(MsgE); return '{"erro":"1", "msg":"' + MsgE + '"}'; } else { /**MARAVILHA, TUDO CERTO !! */ /**SE FOR UM CADASTRO NOVO, ELE JÁ INSERE O ID NO CAMPO E MODIFICA A URL */ if (!isUndefined(OBJ.id)) { aForm.parent().find('input*[id-data]').val(OBJ.id); /**VERIFICA SE JÁ NÃO É UMA EDIÇÃO ANTES DE MODIFICAR A URL */ let aURL = $(location).attr('href').split("/"); if (!$.isNumeric(aURL[aURL.length - 1])) window.history.replaceState('', document.title, document.URL + '/' + OBJ.id); } if (showToast) msg == null ? OpenToast('Dados Salvos com Sucesso !!') : OpenToast(msg); $('.nav-link').removeClass('disabled'); return data; } } } catch (error) { HideLoad(); OpenModal('Ops, Ocorreu um comportamento inesperado. MSG: ' + error); return '{"erro":"1", "msg":"' + error + '"}'; } }, error: function (e) { aBtnSubmit.attr('disabled', false); OpenModal('Ops, ocorreu um erro durante a gravação. Erro:' + e); return '{"erro":"1", "msg":"' + e + '"}'; } }); preventDefault(); // return false; } /** END::function _EXEC()*/ /**FUNÇÃO QUE IRÁ PREENCHER DE FORMA DINAMICA OS CADASTROS DE UM FORM APENAS * ENVIANDO COMO PARAMETRO UM JSON COM KEY E VALUE DOS CAMPOS * EX: {"id":"1", "nome":"JOSE", "endereco":"RUA DOS SONHOS"} */ /** */ function _LOAD(aData) { try { /**PERCORRE o ARRAY COM OS DADOS */ $.each(JSON.parse(aData), function (key, item) { /**IDENTIFICA NO FORM SE ENCONTRA O ELEMENTO DESEJADO */ $("[name$='" + key + "']").each(function () { /**FAZ A IDENTIFICAÇÃO DO TIPO E PREENCHE COM O VALOR */ switch (this.tagName) { case 'INPUT': if ((key == 'senha') || (key == 'pass')) { Cript(item, 'D').done((data) => { $(this).val(data).trigger('change'); this.parentElement.classList.add("is-filled"); }); } else { if ($(this).attr('tp') == 'data') { if (item.trim() !== '') { item = item.split('-'); item = item[2] + '/' + item[1] + '/' + item[0]; } } $(this).val(item).trigger('change'); /**REMOVE CHAVES CASO SEJA UM ARRAY */ $(this).val($(this).val().replace('}', '').replace('{', '')); if ($(this).val()) this.parentElement.classList.add("is-filled"); /**AQUI TRATO CHECKBOX QUE NÃO É USADO COMO ARRAY */ if ($('*[id=' + $(this).attr('name') + ']').attr('type') == 'checkbox' && item == 1) $('*[id=' + $(this).attr('name') + ']').prop('checked', true); /**VERIFICA O ELEMENTO É LIGADO A GRUPO DE CHECKBOX */ if ($(this).attr('name').substring(0, 4).toUpperCase() == 'ARR_') { let OBJ = $(this).val().replace('}', '').replace('{', '').split(','); /**PERCORRE O ARRAY COM OS IDS E PREENCHE OS CAMPOS CORRESPONDENTES */ OBJ.forEach(item => { let inputCheck = $('*[id=' + $(this).attr('name') + '_' + item + ']'); /**CASO O INPUT CHECK SEJA LOCALIZADO, O MESMO É MARCADO COM CHECKED */ if (inputCheck.length) inputCheck.prop('checked', true); }); } } break; case 'SELECT': /**COMO ALGUMS COMBOS DEMORAM A SEREM PREENCHIDOS, ABAIXO É TRATADOO RETORNO PARA O TIPO*/ let sTime = 0; let SELECT_LOAD = setInterval(() => { if ($(this).find("option").length > 0 || sTime == 100) { $(this).val(item).trigger('change'); clearInterval(SELECT_LOAD); } sTime++; }, 100); break; case 'TEXTAREA': $(this).val(item).trigger('change'); break; } /**IDENTIFICA SE O CAMPO PODE OU NÃO SER EDITADO */ if ($(this).attr('no-edit')) $(this).prop('readonly', true).addClass('disabled'); /**REMOVE O DISABLE DE ABAS QUE SÓ FUNCIONAM EM EDIÇÃO */ $('.nav-link').removeClass('disabled'); }); }); } catch (error) { console.log('_LOAD error: ' + error); } } /** END::function _LOAD()*/ /**FUNÇÃO QUE ACIONA AJAX E RETORNA OS DADOS DA URL INFORMADA * aURL: ARQUIVO DE REQUISIÇÃO * aDATA: ARQUIVO DE PARAMETROS */ function _GET(aURL, aDATA = '') { return $.ajax({ url: URL_BASE + aURL, data: aDATA, cache: false, type: 'POST', async: false }); /**COMO UTILIZAR _GET('URL', 'DADOS') .done(function (data) { //done code }) .fail(function () { //fail code }) .always(function () { //some code }); */ preventDefault(); } /** END::function _GET()*/ /**FUNÇÃO PARA CARREGAR SEM REFRESH OS DADOS DE CONSULTAS/RELATÓRIOS UTILIZANDO O DATATABLE */ function _GETDATATABLE(aURL, aDESTINO = 'data-table') { $.ajax({ type: "GET", url: aURL, success: function (data) { try { // $('#' + aDESTINO).hide().html(data).fadeIn(); $('#' + aDESTINO).html(data); LoadDataTable(); $("#loader").fadeOut("slow"); $("#loader").remove(); } catch (error) { } }, error: function (e) { OpenModal('Ops, algo inesperado aconteceu:. Erro: _GETDATATABLE( ' + e + ' )'); } }); } /** END::function _GETDATATABLE()*/ function _PreencheCombo(url, aTabela, condicao, aId, aOrder) { _GET(url, { table_name: aTabela, condition: condicao + ' AND data_exclusao IS NULL', order: aOrder, }) .done(function (data) { const obj = JSON.parse(data); if (obj.length > 0) { $(`#${aId}`).append(``); } else $(`#${aId}`).append(``); obj.forEach(el => { $(`#${aId}`).append(``); }); }) .fail(function () { //fail code }) .always(function () { //some code }); } /** END::function _PreencheCombo()*/