HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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"
                    );
                },
            });
        }
    });
}