File: /var/www/vhost/disk-apps/alq-cali.bikenow.co/public/js/crud.js
function createRegister(urlCreate, swalMessage, locationPath, urlFile = null, isImage = true, dropzone = null) {
var me = this;
$("#form_create").validator("update").on("submit", function (e) {
if (!e.isDefaultPrevented()) {
e.preventDefault();
var data = buildInfoForApi('#form_create');
delete data.id;
$("select.select2").each(function (i, obj) {
data[obj.name] = $("#form_create select[name='" + obj.name + "']").val();
});
data.tags = $("#form_create select[name='generalMultiselect']").val();
if ($("#form_create select[name='app_components']").length) {
data.app_components = getMultiselectData('#app_components').toString();
}
if ($("#form_create select[name='comment']").length) {
data.comment = getMultiselectData('#comment').toString();
}
/** Variables para almacenar configuración torneos academia **/
if ($("#form_create input[name='enable_price_payment_installments']")[0]) {
data.enable_price_payment_installments = $("#form_create input[name='enable_price_payment_installments']").is(":checked");
}
if ($("#form_create input[name='enable_percentage_payment_installments']")[0]) {
data.enable_percentage_payment_installments = $("#form_create input[name='enable_percentage_payment_installments']").is(":checked");
}
if ($("#form_create input[name='fees']").length) {
if (!me.validateFees()) {
return;
}
data.fees = getMultiInputData($("#form_create input[name='fees']"));
}
/** Variables para almacenar configuración de correo **/
if ($("#form_create input[name='send_email']")[0]) {
data.send_email = $("#form_create input[name='send_email']").is(":checked");
}
if ($("#form_create input[name='enable_raffle']")[0]) {
data.enable_raffle = $("#form_create input[name='enable_raffle']").is(":checked");
}
$("#btn-create").addClass("displayNone");
$("#spinnerButton").removeClass("displayNone");
swal(swalMessage, {
buttons: {
cancel: "No",
Ok: true,
},
}).then((val) => {
if (val == "Ok") {
$.ajax({
url: urlCreate,
type: "POST",
contentType: "application/json",
headers: {
"X-CSRF-TOKEN": $(
'meta[name="csrf-token"]'
).attr("content"),
"Content-Type": "application/json",
},
data: JSON.stringify(data),
success: function (r) {
if (r.r) {
if (dropzone && dropzone.files.length > 0) {
dropzone.on("sending", function (file, xhr, formData) {
// Add additional data to the FormData object
formData.append("id", r.data);
});
dropzone.on("queuecomplete", function () {
onSuccesSave(r, locationPath, urlFile);
});
dropzone.processQueue();
} else {
onSuccesSave(r, locationPath, urlFile);
}
} else {
swal("Error", r.m, "error");
$("#btn-create").removeClass("displayNone");
$("#spinnerButton").addClass("displayNone");
}
},
error: function (e) {
swal("Error", "¡Hubo un Error al crear!", "error");
$("#btn-create").removeClass("displayNone");
$("#spinnerButton").addClass("displayNone");
},
});
} else {
$("#btn-create").removeClass("displayNone");
$("#spinnerButton").addClass("displayNone");
}
});
}
});
}
function onSuccesSave(response, locationPath, urlImage) {
var img = document.getElementById("image");
if (img && !img.files[0]) {
var img = document.getElementById("image2");
}
if (img && img.files[0] && urlImage) {
var img = img.files[0];
saveImage(response.data, urlImage, locationPath);
} else {
swal(response.m, {
icon: "success",
buttons: {
Ok: true,
},
}).then((val) => {
if (val == "Ok") {
$(location).attr("href", locationPath);
}
});
}
}
function buildInfoForApi(form) {
var values = {};
$.each($(form).serializeArray(), function (i, field) {
values[field.name] = field.value;
});
delete values._token;
delete values._method;
return values;
}
function getMultiselectData(multiselect) {
if (multiselect && $(multiselect).select2('data')) {
multiselectData = [];
$(multiselect).select2('data').forEach(function (valor) {
multiselectData.push(valor.id);
});
return multiselectData;
}
return '';
}
function getMultiInputData(inputs) {
multiInputData = [];
for (var i = 0; i < inputs.length; i++) {
multiInputData.push(inputs[i].value);
}
return multiInputData;
}
function saveImage(id, urlImage, locationPath) {
var fImage = document.getElementById("image");
if (!fImage.files[0]) {
var fImage = document.getElementById("image2");
}
fImage = fImage.files[0];
if (fImage) {
var formData = new FormData();
formData.append("id", id);
formData.append("image", fImage);
$.ajax({
type: "POST",
dataType: "json",
processData: false,
contentType: false,
headers: {
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
},
data: formData,
url: urlImage,
success: function (r) {
if (r.r) {
swal(r.m, {
icon: "success",
buttons: {
Ok: true,
},
}).then((val) => {
if (val == "Ok") {
$(location).attr("href", locationPath);
}
});
} else {
swal("Error", r.m ? r.m : "¡Error al cargar imagen!", "error");
$("#btn-create-category").prop("disabled", false);
$("#btn-edit").removeClass("displayNone");
$("#spinnerButton").addClass("displayNone");
}
},
error: function (e) {
swal("Error", e.responseText ? e.responseText : "¡Error al cargar imagen!", "error");
$("#btn-create-category").prop("disabled", false);
$("#btn-edit").removeClass("displayNone");
$("#spinnerButton").addClass("displayNone");
},
});
}
}
function editRegister(urlEdit, swalMessage, locationPath, urlFile = null, isImage = true, dropzone = null, deleteFilesArray = null) {
var me = this;
$("#form_edit").validator("update").on("submit", function (e) {
if (!e.isDefaultPrevented()) {
e.preventDefault();
var id = $("#form_edit").attr("object_id");
var data = buildInfoForApi('#form_edit');
$("select.select2").each(function (i, obj) {
data[obj.name] = $("#form_edit select[name='" + obj.name + "']").val();
});
data.tags = $("#form_edit select[name='generalMultiselect']").val();
if ($("#form_edit select[name='app_components']").length) {
data.app_components = getMultiselectData('#app_components').toString();
}
if ($("#form_edit select[name='comment']").length) {
data.comment = getMultiselectData('#comment').toString();
}
/** Variables para almacenar configuración torneos academia **/
if ($("#form_edit input[name='enable_price_payment_installments']")[0]) {
data.enable_price_payment_installments = $("#form_edit input[name='enable_price_payment_installments']").is(":checked");
}
if ($("#form_edit input[name='enable_percentage_payment_installments']")[0]) {
data.enable_percentage_payment_installments = $("#form_edit input[name='enable_percentage_payment_installments']").is(":checked");
}
if ($("#form_edit input[name='fees']").length) {
if (!me.validateFees()) {
return;
}
data.fees = getMultiInputData($("#form_edit input[name='fees']"));
}
if (deleteFilesArray) {
data.deleteFilesArray = deleteFilesArray;
}
/** Variables para almacenar configuración de correo **/
if ($("#form_edit input[name='send_email']")[0]) {
data.send_email = $("#form_edit input[name='send_email']").is(":checked");
}
if ($("#form_edit input[name='enable_raffle']")[0]) {
data.enable_raffle = $("#form_edit input[name='enable_raffle']").is(":checked");
}
$("#btn-edit").addClass("displayNone");
$("#spinnerButton").removeClass("displayNone");
swal(swalMessage, {
buttons: {
cancel: "No",
Ok: true,
},
}).then((val) => {
if (val == "Ok") {
$.ajax({
url: urlEdit + id,
type: "PUT",
contentType: "application/json",
headers: {
"X-CSRF-TOKEN": $(
'meta[name="csrf-token"]'
).attr("content"),
"Content-Type": "application/json",
},
data: JSON.stringify(data),
success: function (r) {
if (r.r) {
if (dropzone && dropzone.files.length > 0) {
dropzone.on("sending", function (file, xhr, formData) {
// Add additional data to the FormData object
formData.append("id", r.data);
});
dropzone.on("queuecomplete", function () {
onSuccesSave(r, locationPath, urlFile);
});
dropzone.processQueue();
} else {
onSuccesSave(r, locationPath, urlFile);
}
} else {
swal("Error", r.m, "error");
$("#btn-edit").removeClass("displayNone");
$("#spinnerButton").addClass("displayNone");
}
},
error: function (e) {
swal("Error", "¡Hubo un Error al actualizar!", "error");
$("#btn-edit").removeClass("displayNone");
$("#spinnerButton").addClass("displayNone");
},
});
} else {
$("#btn-edit").removeClass("displayNone");
$("#spinnerButton").addClass("displayNone");
}
});
}
});
}
function deleteRegister(urlDelete, swalMessage, locationPath) {
swal(swalMessage, {
buttons: {
cancel: "No",
Ok: true,
},
}).then((val) => {
if (val == "Ok") {
var info = {
_method: "DELETE",
};
$.ajax({
url: urlDelete,
type: "POST",
contentType: "application/json",
headers: {
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr(
"content"
),
"Content-Type": "application/json",
},
data: JSON.stringify(info),
success: function (r) {
if (r.r) {
swal(r.m, {
icon: "success",
buttons: {
Ok: true,
},
}).then((val) => {
if (val == "Ok") {
location.reload();
}
});
} else {
swal("Error", r.m, "error");
}
},
error: function (e) {
swal(
"Error",
"Error al eliminar registro",
"error"
);
},
});
}
});
}
function activate(value, urlActivate, reloadPage = false) {
var state;
if ($("#Checkactive" + value).is(":checked")) {
state = 1;
} else {
state = 0;
}
var info = {
id: value,
state: state,
};
$.ajax({
url: urlActivate,
type: "POST",
contentType: "application/json",
headers: {
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
"Content-Type": "application/json",
},
data: JSON.stringify(info),
success: function (r) {
if (r.r) {
swal(r.m, {
icon: "success",
buttons: {
Ok: true,
},
});
} else {
if (reloadPage) {
swal("Error", r.m, {
icon: "error",
buttons: {
Ok: true,
},
}).then((val) => {
if (val == "Ok") {
location.reload();
}
});
}
else
swal("Error", r.m, "error");
}
},
error: function (e) {
swal(
"Error",
"Error al cambiar estado",
"error"
);
},
});
}
function validateFees() {
paymentInstallments = $("input[name='payment_installments']")[0].value;
paymentInstallments = parseFloat(paymentInstallments);
if (paymentInstallments) {
fees = $("input[name='fees']");
enabledPrice = $("input[name='enable_price_payment_installments']").is(":checked");
enabledPercentage = $("input[name='enable_percentage_payment_installments']").is(":checked");
if (!enabledPrice && !enabledPercentage) {
swal("Error", 'Por favor activar un tipo de cobro para las cuotas', "error");
this.preventDefault();
return false;
} else if (enabledPrice && enabledPercentage) {
swal("Error", 'Por favor solo puede estar activo un solo tipo de cobro para las cuotas', "error");
this.preventDefault();
return false;
}
if (enabledPrice) {
priceInstallments = 0;
for (var i = 0; i < fees.length; i++) {
priceInstallments += (parseFloat(fees[i].value) > 0 ? parseFloat(fees[i].value) : 0);
}
price = $("input[name='price']")[0].value;
price = parseFloat(price);
discount = $("input[name='discount']")[0].value;
discount = (parseFloat(discount) > 0 ? parseFloat(discount) : 0);
subtotal = price * (1 - (discount / 100))
if (subtotal != priceInstallments) {
swal("Error", 'Por favor validar los valores asignados a las cuotas, ya que no cubren la totalidad del precio: ' + subtotal, "error");
return false;
}
}
if (enabledPercentage) {
percentage = 0;
for (var i = 0; i < fees.length; i++) {
percentage += (parseFloat(fees[i].value) > 0 ? parseFloat(fees[i].value) : 0);
}
if (percentage != 100.0) {
swal("Error", 'Por favor validar los porcentajes asignados a las cuotas, ya que no cubren la totalidad del 100%', "error");
return false;
}
}
}
return true;
}
function action(value, urlAction, component = null) {
var state;
if (component) {
if (component.is(":checked")) {
state = 1;
} else {
state = 0;
}
} else {
if ($("#Checkactive" + value).is(":checked")) {
state = 1;
} else {
state = 0;
}
}
var info = {
id: value,
state: state,
};
$.ajax({
url: urlAction,
type: "POST",
contentType: "application/json",
headers: {
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
"Content-Type": "application/json",
},
data: JSON.stringify(info),
success: function (r) {
if (r.r) {
swal(r.m, {
icon: "success",
buttons: {
Ok: true,
},
});
} else {
swal("Error", r.m, "error");
}
},
error: function (e) {
swal("Error", e.responseJSON ? error.responseJSON.message : "Error al ejecutar acción", "error");
},
});
}
function deleteImages(registerId, apiUrl, locationPath) {
swal(Lang.get("messagesClient.crud.delete_image_question"), {
buttons: {
cancel: "No",
Ok: true,
},
}).then((val) => {
if (val == "Ok") {
var info = {
id: registerId,
};
$.ajax({
url: apiUrl,
type: "DELETE",
contentType: "application/json",
headers: {
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr(
"content"
),
"Content-Type": "application/json",
},
data: JSON.stringify(info),
success: function (r) {
console.log(r);
if (r.r) {
swal(r.m, {
icon: "success",
buttons: {
Ok: true,
},
}).then((val) => {
if (val == "Ok") {
$(location).attr("href", locationPath);
}
});
} else {
swal(r.m, { icon: "error" });
}
},
error: function (e) {
console.log(e);
swal(
"Error",
Lang.get("messagesClient.tournaments.error_delete"),
"error"
);
},
});
}
});
}