/**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()*/