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/qas.sports-crowd.com/public/js/academy.js
function clickEditUser(id, typeAcademy) {
    $(location).attr("href", "/academy_user/edit/" + id + "/" + typeAcademy);
}

function getUserPayments(user_id) {
    $(location).attr("href", "/academy_user_payment/" + user_id);
}

function saveDocument(id) {
    var formData = new FormData();
    var inputAmount = document.getElementsByName("documentUpload").length;
    for (var i = 0; i < document.getElementsByName("documentUpload").length; i++) {
        if (document.getElementsByName("documentUpload")[i].files.length) {
            var file = document.getElementsByName("documentUpload")[i].files[0];
            var fileName = file.name;
            var fileSize = file.size;

            if (fileSize > 5000000) {
                swal("Ok", "¡El archivo no debe superar los 5MB!", "error");
                file.name = "";
                file.value = "";
            } else {
                // recuperamos la extensión del archivo
                var ext = fileName.split(".").pop();
                var correctExte = true;
                // Convertimos en minúscula porque
                // la extensión del archivo puede estar en mayúscula
                ext = ext.toLowerCase();

                switch (ext) {
                    case "xlsx":
                    case "csv":
                    case "doc":
                    case "docx":
                    case "pdf":
                    case "jpg":
                    case "jpeg":
                    case "png":
                        break;
                    default:
                        swal(
                            "Ok",
                            "¡El archivo no tiene la extensión adecuada!",
                            "error"
                        );

                        correctExte = false;
                        file.name = "";
                        file.value = ""; // reset del valor
                }
            }

            fDocument = file;
            // quita las letras y deja solo el numero
            documentId = document.getElementsByName("documentUpload")[i].id.replace(/[^0-9]/g, '');
            formData.append("file" + i, fDocument);
            formData.append("documentId" + i, documentId);
        }
    }

    formData.append("inputAmount", inputAmount);
    formData.append("userId", id.id);
    if (correctExte) {
        $.ajax({
            type: "POST",
            dataType: "json",
            processData: false,
            contentType: false,
            headers: {
                "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr(
                    "content"
                ),
            },
            data: formData,
            url: "/academy_user/saveStudentDocument",
            success: function (r) {
                if (r.r) {
                    swal(r.m, {
                        icon: "success",
                        buttons: {
                            Ok: true,
                        },
                    }).then((val) => {
                        if (val == "Ok") {
                            $(location).attr("href", "/academy_user");
                        }
                    });
                } else {
                    swal("Ok", "¡Error al cargar el documento!", "error");
                    $("#btn-create-category").prop("disabled", false);
                }
            },
            error: function (e) {
                swal("Ok", "¡Error al cargar el documento!", "error");
                $("#btn-create-category").prop("disabled", false);
            },
        });
    }

}

function saveUserAcademy(typeAcademy) {
    $("#saveUser").validator("update");
    $("#saveUser")
        .validator("update")
        .on("submit", function (e) {
            if (e.isDefaultPrevented()) {
                var validate = validateRequired();
                if (validate == true) {
                    swal("Advertencia", Lang.get("Por favor diligenciar todos los campos requeridos en el formulario"), "warning");
                }
            } else {
                e.preventDefault();
                var age = $("#saveUser input[name='age']").val();
                var date1 = dateNow();
                if (age == 0) {
                    swal("Advertencia", Lang.get("Ingrese correctamente la fecha de nacimiento"), "warning");
                    return;
                }

                var info = {
                    id: $("#btn-save-user").attr("data-id"),
                    date: date1,
                    student_name: $("#saveUser input[name='user_name']").val(),
                    student_last_name: $("#saveUser input[name='user_last_name']").val(),
                    student_document_type_id: $("#saveUser select[name='student_document_type_id']").val(),
                    identification: $("#saveUser input[name='documentID']").val(),
                    school_name: $("#saveUser input[name='school_name']").val(),
                    school_grade: $("#saveUser select[name='school_grade']").val(),
                    age: $("#saveUser input[name='age']").val(),
                    birthdate: $("#saveUser input[name='birthdate']").val(),
                    mail: $("#saveUser input[name='email']").val(),
                    phone: $("#saveUser input[name='mobile']").val(),
                    city_id: $(" #saveUser select[name='citie_id']").val(),
                    advisor_name: $("#saveUser input[name='advisor_name']").val(),
                    advisor_last_name: $("#saveUser input[name='advisor_last_name']").val(),
                    advisor_name_juridic: $("#saveUser input[name='advisor_name_juridic']").val(),
                    advisor_last_name_juridic: $("#saveUser input[name='advisor_last_name_juridic']").val(),
                    advisor_document_type_id: $("#saveUser select[name='advisor_document_type_id']").val(),
                    advisor_identification: $("#saveUser input[name='advisor_identification']").val(),
                    advisor_relation: $("#saveUser select[name='advisor_relation']").val(),
                    type_person: $("#saveUser select[name='type_person']").val(),
                    advisor_ocupation: $("#saveUser select[name='advisor_ocupation']").val(),
                    advisor_nit: $("#saveUser input[name='advisor_nit']").val(),
                    advisor_business_name: $("#saveUser input[name='advisor_business_name']").val(),
                    advisor_property_name: $("#saveUser input[name='advisor_property_name']").val(),
                    advisor_isic_code: $("#saveUser input[name='advisor_isic_code']").val(),
                    // DIRECCION RESPONSABLE JURIDICO
                    advisor_address: $("#saveUser input[name='advisor_address']").val(),
                    advisor_address_lat: $("#saveUser input[name='lat-advisor_address']").val(),
                    advisor_address_lng: $("#saveUser input[name='lng-advisor_address']").val(),
                    // DIRECCION RESPONSABLE NATURAL
                    advisor_address_natural: $("#saveUser input[name='advisor_address_natural']").val(),
                    advisor_address_natural_lat: $("#saveUser input[name='lat-advisor_address_natural']").val(),
                    advisor_address_natural_lng: $("#saveUser input[name='lng-advisor_address_natural']").val(),
                    // DIRECCION ALUMNO
                    address: $("#saveUser input[name='address']").val(),
                    address_lat: $("#saveUser input[name='lat-address']").val(),
                    address_lng: $("#saveUser input[name='lng-address']").val(),

                    advisor_phone: $("#saveUser input[name='advisor_phone']").val(),
                    advisor_cell_phone: $("#saveUser input[name='advisor_cell_phone']").val(),
                    advisor_mail: $("#saveUser input[name='advisor_mail']").val(),
                    advisor_ocupation: $("#saveUser select[name='advisor_ocupation']").val(),
                    blood_type: $("#saveUser select[name='blood_type']").val(),
                    eps: $("#saveUser input[name='eps']").val(),
                    academy_schedule: $(" #saveUser select[name='academy_schedule']").val(),
                    academy_category_id: $("#saveUser select[name='academy_category']").val(),
                    tshirt_size: $("#saveUser select[name='tshirt_size']").val(),
                    uniform_type: $("#saveUser select[name='uniform_type']").val(),
                    last_inscription_year: $("#saveUser select[name='last_inscription_year']").val(),
                    discounts: $("#saveUser select[name='generalMultiselect']").val(),
                    student_academy_code: $("#saveUser input[name='student_academy_code']").val(),
                    type_academy: typeAcademy,
                    ocupation: $("#saveUser select[name='ocupation']").val(),
                    observation: $("#saveUser textarea[name='observations']").val(),
                    guardian_information: $("#saveUser textarea[name='guardian_information']").val(),
                };

                swal(Lang.get("messagesClient.academy_user_tag8"), {
                    buttons: {
                        cancel: "No",
                        Ok: true,
                    },
                }).then((val) => {
                    if (val == "Ok") {
                        $.ajax({
                            url: "/academy_user/createStudent",
                            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) {
                                    var id = r.d;
                                    var doc = [];
                                    var lis = document.getElementsByName("documentUpload").length;
                                    for (var i = 0; i < lis; i++) {
                                        if (document.getElementsByName("documentUpload")[i].files[0])
                                            doc.push(document.getElementsByName("documentUpload")[i].files[0]);
                                    }
                                    if (doc.length) {
                                        saveDocument(id);
                                    } else {
                                        swal(r.m, {
                                            icon: "success",
                                            buttons: {
                                                Ok: true,
                                            },
                                        }).then((val) => {
                                            if (val == "Ok") {
                                                localStorage.setItem("setPageTable", true);
                                                $(location).attr("href", "/academy_user/" + typeAcademy);
                                            }
                                        });
                                    }
                                } else {
                                    swal("Error", r.m, "error");
                                }
                            },
                            error: function (e) {
                                swal("Error", Lang.get("messagesClient.academy_user_tag9"), "error");
                            },
                        });
                    }
                });
            }
        });
}

function editUserAcademy(typeAcademy) {
    $("#editUser").validator("update");
    $("#editUser")
        .validator("update")
        .on("submit", function (e) {
            e.preventDefault();

            // Validar campos obligatorios
            const isValid = validateRequiredFields([
                { selector: "#editUser select[name='academy_category']", message: "Por favor, selecciona una categoría de academia." }]);

            if (!isValid) {
                return;
            }
            swal(Lang.get("messagesClient.academy_user_tag4"), {
                buttons: {
                    cancel: "No",
                    Ok: true,
                },
            }).then((val) => {
                if (val == "Ok") {
                    $('#loading').show();

                    let payStates = [5, 6, 7];
                    if ($("#editUser input[name='review_state']").val() == 'PENDIENTE' && payStates.includes(parseInt($("#editUser select[name='academy_state_id']").val()))) {
                        swal("Advertencia", "Existe una confirmación de revisión pendiente y NO se puede modificar el estado del alumno!", "warning")
                        $('#loading').hide();
                        return
                    }

                    if ($("#errorDocumentosBox").css("display") != "none" && $("#editUser input[name='message']").val() == "") {
                        swal("Advertencia", "¡Se debe ingresar mensaje!", "warning");
                        $('#loading').hide();
                        return
                    }

                    if ($("#active").is(":checked")) {
                        active_check = 1;
                    } else {
                        active_check = 0;
                    }

                    var date1 = dateNow();
                    var date2 = $("#editUser input[name='date2']").val();
                    var hour1 = hourNow();
                    var hour2 = convertTime12to24($("#editUser input[name='time2']").val());
                    var fecha1 = new Date(date1 + " " + hour1);
                    var fecha2 = new Date(date2 + " " + hour2);
                    if ($("#editUser input[name='date2']").val().trim() == "") {
                        $("#editUser input[name='date2']").val(date1)
                    }
                    if ($("#editUser input[name='time2']").val().trim() == "") {
                        $("#editUser input[name='time2']").val(hour1)
                    }

                    if ((new Date(fecha1).getTime() > new Date(fecha2).getTime()) && $("#editUser select[name='academy_state_id']").val() == 11) {
                        swal(
                            "Advertencia",
                            Lang.get("messagesClient.notification_tag3"),
                            "warning"
                        ).then(() => {
                            $('#loading').hide();
                        });
                        return;
                    }
                    var info = {
                        id: $("#btn-edit-user").attr("data-id"),
                        date: $("#editUser input[name='date']").val(),
                        user_id: $("#editUser input[name='user_id']").val(),
                        student_name: $("#editUser input[name='user_name']").val(),
                        student_last_name: $("#editUser input[name='user_last_name']").val(),
                        student_document_type_id: $("#editUser select[name='student_document_type_id']").val(),
                        identification: $("#editUser input[name='documentID']").val(),
                        school_name: $("#editUser input[name='school_name']").val(),
                        school_grade: $("#editUser select[name='school_grade']").val(),
                        age: $("#editUser input[name='age']").val(),
                        birthdate: $("#editUser input[name='birthdate']").val(),
                        mail: $("#editUser input[name='email']").val(),
                        phone: $("#editUser input[name='mobile']").val(),
                        tags: $(" #editUser select[name='tags']").val(),
                        advisor_name: $("#editUser input[name='advisor_name']").val(),
                        advisor_last_name: $("#editUser input[name='advisor_last_name']").val(),
                        advisor_name_juridic: $("#editUser input[name='advisor_name_juridic']").val(),
                        advisor_last_name_juridic: $("#editUser input[name='advisor_last_name_juridic']").val(),
                        advisor_document_type_id: $("#editUser select[name='advisor_document_type_id']").val(),
                        advisor_identification: $("#editUser input[name='advisor_identification']").val(),
                        advisor_relation: $("#editUser select[name='advisor_relation']").val(),
                        type_person: $("#editUser select[name='type_person']").val(),
                        advisor_ocupation: $("#editUser select[name='advisor_ocupation']").val(),
                        advisor_nit: $("#editUser input[name='advisor_nit']").val(),
                        advisor_property_name: $("#editUser input[name='advisor_property_name']").val(),
                        advisor_isic_code: $("#editUser input[name='advisor_isic_code']").val(),
                        advisor_phone: $("#editUser input[name='advisor_phone']").val(),
                        advisor_cell_phone: $("#editUser input[name='advisor_cell_phone']").val(),
                        advisor_mail: $("#editUser input[name='advisor_mail']").val(),
                        advisor_ocupation: $("#editUser select[name='advisor_ocupation']").val(),
                        advisor_business_name: $("#editUser input[name='advisor_business_name']").val(),
                        /*DIRECCION RESPONSABLE */
                        advisor_direction: $("#editUser input[name='AdvisorDirection']").val(),
                        advisor_address_id: $("#editUser input[name='addressid-advisor_address']").val(),
                        advisor_address: $("#editUser input[name='advisor_address']").val(),
                        advisor_address_lat: $("#editUser input[name='lat-advisor_address']").val(),
                        advisor_address_lng: $("#editUser input[name='lng-advisor_address']").val(),
                        // DIRECCION RESPONSABLE NATURAL
                        advisor_address_natural: $("#editUser input[name='advisor_address_natural']").val(),
                        advisor_address_natural_lat: $("#editUser input[name='lat-advisor_address_natural']").val(),
                        advisor_address_natural_lng: $("#editUser input[name='lng-advisor_address_natural']").val(),
                        /* DIRECCION ALUMNO */
                        direction: $("#editUser input[name='direction']").val(),
                        address_id: $("#editUser input[name='addressid-address']").val(),
                        address: $("#editUser input[name='address']").val(),
                        address_lat: $("#editUser input[name='lat-address']").val(),
                        address_lng: $("#editUser input[name='lng-address']").val(),

                        blood_type: $("#editUser select[name='blood_type']").val(),
                        eps: $("#editUser input[name='eps']").val(),
                        message: $("#editUser textarea[name='message']").val(),
                        when_send:
                            $(" #editUser input[name='date2']").val() +
                            " " +
                            convertTime12to24(
                                $(
                                    " #editUser input[name='time2']"
                                ).val()
                            ),
                        academy_schedule: $("#editUser select[name='academy_schedule']").val(),
                        academy_category_id: $("#editUser select[name='academy_category']").val(),
                        tshirt_size: $("#editUser select[name='tshirt_size']").val(),
                        uniform_type: $("#editUser select[name='uniform_type']").val(),
                        academy_state_id: $("#editUser select[name='academy_state_id']").val(),
                        last_inscription_year: $("#editUser select[name='last_inscription_year']").val(),
                        discounts: $("#editUser select[name='generalMultiselect']").val(),
                        student_academy_code: $("#editUser input[name='student_academy_code']").val(),
                        ocupation: $("#editUser select[name='ocupation']").val(),
                        observation: $("#editUser textarea[name='observations']").val(),
                        guardian_information: $("#editUser textarea[name='guardian_information']").val(),
                        academy_period_id: $("#editUser select[name='academy_period']").val(),
                    };
                    $.ajax({
                        url: "/academy_user/update",
                        type: "PUT",
                        contentType: "application/json",
                        headers: {
                            "X-CSRF-TOKEN": $(
                                'meta[name="csrf-token"]'
                            ).attr("content"),
                            "Content-Type": "application/json",
                        },
                        data: JSON.stringify(info),
                        success: function (r) {
                            $('#loading').hide();
                            if (r.r) {
                                var id = r.d;
                                var doc = [];
                                var lis = document.getElementsByName("documentUpload").length;
                                for (var i = 0; i < lis; i++) {
                                    if (document.getElementsByName("documentUpload")[i].files[0])
                                        doc.push(document.getElementsByName("documentUpload")[i].files[0]);
                                }
                                if (doc.length) {
                                    saveDocument(id);
                                } else {
                                    swal(r.m, {
                                        icon: "success",
                                        buttons: {
                                            Ok: true,
                                        },
                                    }).then((val) => {
                                        if (val == "Ok") {
                                            localStorage.setItem("setPageTable", true);
                                            $(location).attr("href", "/academy_user/" + typeAcademy);
                                        }
                                    });
                                }
                            } else {
                                swal("Error", r.m, "error");
                            }
                        },
                        error: function (response) {
                            $('#loading').hide();
                        
                            if (response.responseJSON && response.responseJSON.errors) {
                                const errors = response.responseJSON.errors;
                                let htmlErrors = '';
                        
                                for (const key in errors) {
                                    if (errors.hasOwnProperty(key)) {
                                        htmlErrors += `<p>• ${errors[key][0]}</p>`;
                                    }
                                }
                        
                                swal({
                                    icon: "error",
                                    title: "Error en el formulario",
                                    content: {
                                        element: "div",
                                        attributes: {
                                            innerHTML: htmlErrors,
                                        },
                                    },
                                    buttons: {
                                        Ok: true,
                                    },
                                });
                            } else {
                                swal("Error", response.responseJSON?.message || "Ocurrió un error inesperado.", "error");
                            }
                        },
                        
                    });
                }
            });
        });
}

function editPaymentUserAcademy() {
    $("#editPayment").validator("update");
    $("#editPayment")
        .validator("update")
        .on("submit", function (e) {
            // if (e.isDefaultPrevented()) {
            // } else {
            e.preventDefault();
            swal(Lang.get("messagesClient.update_register"), {
                buttons: {
                    cancel: "No",
                    Ok: true,
                },
            }).then((val) => {
                if (val == "Ok") {
                    $('#loading').show();
                    if ($("#active_payment").is(":checked")) {
                        active_check = 1;
                    } else {
                        active_check = 0;
                    }
                    var info = {
                        id: $("#btn-edit-payment").attr("data-id"),
                        price_payment: $(
                            " #editPayment input[name='price_payment']"
                        ).val(),
                        term_type: $(" #editPayment input[name='term_type']").val(),
                        term: $(" #editPayment input[name='term']").val(),
                        start_term: $(" #editPayment input[name='start_term']").val(),
                        end_term: $(" #editPayment input[name='end_term']").val(),
                        state_payment: $(
                            " #editPayment select[name='state_payment']"
                        ).val(),
                        active: active_check,
                    };
                    $.ajax({
                        url: "/academy_payment/update",
                        type: "PUT",
                        contentType: "application/json",
                        headers: {
                            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr(
                                "content"
                            ),
                            "Content-Type": "application/json",
                        },
                        data: JSON.stringify(info),
                        success: function (r) {
                            $('#loading').hide();
                            if (r.r) {
                                swal(r.m, {
                                    icon: "success",
                                    buttons: {
                                        Ok: true,
                                    },
                                }).then((val) => {
                                    if (val == "Ok") {
                                        localStorage.setItem("setPageTable", true);
                                        $(location).attr("href", "/user_payments_academy/" + $("#editPayment input[name='academy_user_id']").val());
                                    }
                                });
                            } else {
                                swal("Error", r.m, "error");
                            }
                        },
                        error: function (response) {
                            $('#loading').hide();
                            swal("Error", response.responseJSON ? response.responseJSON.message : Lang.get("messagesClient.user_client_tag6"), "error");
                        },
                    });
                }
            });
            //}
        });
}

function clickDeleteUser(user_id) {
    swal(Lang.get("messagesClient.academy_user_tag1"), {
        buttons: {
            cancel: "No",
            Ok: true,
        },
    }).then((val) => {
        if (val == "Ok") {
            var info = {
                user_id: user_id,
            };
            $.ajax({
                url: "/academy_user/delete",
                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",
                            Lang.get("messagesClient.academy_user_tag2"),
                            "error"
                        );
                    }
                },
                error: function (e) {
                    swal(
                        "Error",
                        Lang.get("messagesClient.academy_user_tag2"),
                        "error"
                    );
                },
            });
        }
    });
}

function chk(value) {
    var state;
    if ($("#Checkactive" + value).is(":checked")) {
        state = 1;
    } else {
        state = 0;
    }

    var info = {
        id: value,
        state: state,
    };

    $.ajax({
        url: "/academy_user/active",
        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",
                Lang.get("messagesClient.academy_states.error_modifying"),
                "error"
            );
        },
    });
}

function chkAcademyStates(typeAcademy) {
    var state = document.getElementById("academy_user_id");
    var nameState = document.getElementById("academy_state_name");
    swal(
        (Lang.get("messagesClient.academy_user_tag3") + nameState.value + " ?"), {
        buttons: {
            cancel: "No",
            Ok: true,
        },
    }).then((val) => {
        if (val == "Ok") {
            var info = {
                id: state.value,
                confirmReview: true,
            };

            $.ajax({
                url: "/academy_user/confirmReview",
                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") {
                                localStorage.setItem("setPageTable", true);
                                $(location).attr("href", "/academy_user/" + typeAcademy);
                            }
                        });
                    } else {
                        swal("Error", r.m, "error");
                    }
                },
                error: function (e) {
                    swal("Error", Lang.get("messagesClient.academy_states.error_modifying"), "error");
                },
            });
        }
    });
}

function modalInfoApp() {
    $("#modal_app").modal("show");
}

function dateNow() {
    var hoy = new Date();
    var dd = hoy.getDate();
    var mm = hoy.getMonth() + 1;
    var yyyy = hoy.getFullYear();

    dd = addZero(dd);
    mm = addZero(mm);

    return yyyy + "-" + mm + "-" + dd;
}

function addZero(i) {
    if (i < 10) {
        i = "0" + i;
    }
    return i;
}

function importAcademyStudents() {
    var fExcel = document.getElementById("importAcademyStudents");
    fExcel = fExcel.files[0];
    if (!fExcel) {
        swal("Advertencia", "¡No hay archivo!", "warning");
        return;
    }

    var t = $("#example22").DataTable();
    t.clear().draw();

    $("#modal_import_students #buttonImport").addClass("displayNone");
    $("#modal_import_students #spinnerImport").removeClass("displayNone");

    var formData = new FormData();
    formData.append("importAcademyStudents", fExcel);
    $.ajax({
        type: "POST",
        dataType: "json",
        processData: false,
        contentType: false,
        headers: {
            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
        },
        data: formData,
        url: "/academy/addStudentsInBulk/import",
        success: function (r) {
            $("#modal_import_students #buttonImport").removeClass("displayNone");
            $("#modal_import_students #spinnerImport").addClass("displayNone");
            if (r.r) {
                if (r.d != null && r.d.length > 0) {
                    for (var i = 0; i < r.d.length; i++) {
                        t.row.add([
                            r.d[i].message,
                            r.d[i].line,
                        ]);
                    }
                    $('#logModal').modal("show");
                    t.draw();
                } else {
                    swal(r.m, {
                        icon: "success",
                        buttons: {
                            Ok: true,
                        },
                    }).then((val) => {
                        if (val == "Ok") {
                            $(location).attr("href", "/academy_user");
                        }
                    });
                }
            } else {
                swal("Error", r.m, "error");
            }
        },
        error: function (err) {
            $("#modal_import_students #buttonImport").removeClass("displayNone");
            $("#modal_import_students #spinnerImport").addClass("displayNone");
            swal("Error", err.responseJSON.message, "error");
        }
    });
}

function importSchedulePayments() {
    var fExcel = document.getElementById("importSchedulePayments");
    fExcel = fExcel.files[0];
    if (!fExcel) {
        swal("Advertencia", "¡No hay archivo!", "warning");
        return;
    }

    var t = $("#example22").DataTable();
    t.clear().draw();

    $("#modal_schedule_payments #buttonImport").addClass("displayNone");
    $("#modal_schedule_payments #spinnerImport").removeClass("displayNone");

    var formData = new FormData();
    formData.append("importSchedulePayments", fExcel);
    $.ajax({
        type: "POST",
        dataType: "json",
        processData: false,
        contentType: false,
        headers: {
            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
        },
        data: formData,
        url: "/academy_purchase/import",
        success: function (r) {
            $("#modal_schedule_payments #buttonImport").removeClass("displayNone");
            $("#modal_schedule_payments #spinnerImport").addClass("displayNone");
            if (r.r) {
                if (r.d != null && r.d.length > 0) {
                    for (var i = 0; i < r.d.length; i++) {
                        t.row.add([
                            r.d[i].message,
                            r.d[i].line,
                        ]);
                    }
                    $('#logModal').modal("show");
                    t.draw();
                } else {
                    swal(r.m, {
                        icon: "success",
                        buttons: {
                            Ok: true,
                        },
                    }).then((val) => {
                        if (val == "Ok") {
                            $(location).attr("href", "/academy_user");
                        }
                    });
                }
            } else {
                swal("Error", r.m, "error");
            }
        },
        error: function (err) {
            $("#modal_schedule_payments #buttonImport").removeClass("displayNone");
            $("#modal_schedule_payments #spinnerImport").addClass("displayNone");
            swal("Error", err.responseJSON.message, "error");
        }
    });
}

function validateRequired() {

    var nameFields = ['user_name', 'user_last_name', 'student_document_type_id', 'documentID', 'school_name', 'school_grade', 'birthdate', 'age', 'emailContact', 'mobile',/* 'advisor_name', 'advisor_last_name', 'advisor_document_type_id', 'advisor_identification', 'advisor_relation', 'type_person', 'advisor_ocupation',  */ 'blood_type', 'academy_schedule', 'tshirt_size', 'uniform_type', 'last_inscription_year'];
    var emptyFields = false;
    nameFields.forEach(nameInput => {
        if ($(`#saveUser input[name='${nameInput}']`).val() === '') {
            emptyFields = true;
            return;
        }
    });
    return emptyFields;

}

function getCardInfo() {
    var data;
    $.ajax({
        type: "GET",
        headers: {
            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
        },
        url: "/carnet/getCarnet/academy",
        data: null,
        async: false,
        success: function (r) {
            if (r.r) {
                data = r.d;
            } else {
                swal("Error", r.m, "error");
            }
        },
        error: function (textStatus, errorThrown) {
            document.getElementById("btn-canvacarne").style.display = "none";
            swal("Error", Lang.get("messagesClient.carnet.if_exists"), "error");
        },
    });
    return data;
}

function loadCard(
    student_id,
    student_name,
    student_last_name,
    identification,
    academy_schedule,
    blood_type,
    studentDocumentType,
    categoryName,
    userPhoto
) {
    var carnet = getCardInfo();
    if (student_id && carnet) {
        $('#modal_carnet').modal('show');

        if (carnet.html) {
            showCarnetFromHtml(
                carnet,
                student_id,
                student_name,
                student_last_name,
                identification,
                studentDocumentType,
                categoryName,
                academy_schedule,
                userPhoto
            );
            return;
        }

        var canvas = document.getElementById("canvasCarnet");
        canvas.style.display = "block";
        setTimeout(() => {
            var ctx = canvas.getContext('2d');
            var background = new Image();
            background.crossOrigin = "*";
            background.src = carnet["url"] + "?v=" + new Date().getTime();
            // Asegúrese de que la imagen se cargue primero, de lo contrario, no se dibujará nada.
            background.onload = function () {
                ctx.drawImage(background, 0, 0);
            }

            var user = `${student_name} ${student_last_name}`;
            var document = identification;
            var documentType = studentDocumentType;
            var cardName = carnet['name'];
            var optionalField = carnet['optional'] ? carnet['optional'] : '';
            var font_type = carnet['font_type'];
            var font_color = carnet['font_color'];

            if (documentType.length > 3) {
                var documentTypeAlias = documentType.obtenerIniciales();
                var identification_Alias;
                if (documentTypeAlias.length == 3) {
                    var deleteletter = documentTypeAlias.replace("d", "");
                    identification_Alias = (deleteletter ? (deleteletter + ': ' + document) : document).toUpperCase();
                } else {
                    identification_Alias = (documentTypeAlias ? (documentTypeAlias + ': ' + document) : document).toUpperCase();
                }
            } else {
                identification_Alias = (documentType ? (documentType + ': ' + document) : document).toUpperCase();
            }

            user = user.toUpperCase();
            cardName = cardName.toUpperCase() + ' - ' + categoryName;

            let qrData = {
                'u': student_id,
                'c': carnet['id'],
                't': 'A'
            };

            var qr = new Image();
            qr.src = String(generate(JSON.stringify(qrData)));

            background.onload = () => {
                canvas.height = canvas.width * (background.height / background.width);
                ctx.drawImage(background, 0, 0, canvas.width, canvas.height);

                ctx.beginPath();
                if (!font_color) {
                    ctx.fillStyle = 'white';
                } else {
                    ctx.fillStyle = font_color;
                }
                if (!font_type) {
                    ctx.font = "bold 20px Arial black";
                } else {
                    let font = 'bold 20px ' + font_type;
                    ctx.font = font;
                }

                ctx.textAlign = 'left';
                let nameSplit = user.split(' ');

                if (nameSplit.length > 3) {
                    ctx.fillText(nameSplit[0] + ' ' + nameSplit[1], 20, 160);
                    ctx.fillText(nameSplit[2] + ' ' + nameSplit[3], 20, 180);
                } else {
                    ctx.fillText(user.length > 23 ? user.substring(0, 22) + '...' : user, 20, 180);
                }

                if (!font_type) {
                    ctx.font = 'bold 14px Arial';
                } else {
                    let cardNameFont = '14px ' + font_type;
                    ctx.font = cardNameFont;
                }
                ctx.fillText(cardName.length > 30 ? cardName.substring(0, 29) + '...' : cardName, 20, 200);
                ctx.fillText(identification_Alias, canvas.width / 4, 230);
                ctx.fillText('SEDE: ' + academy_schedule, canvas.width / 4, 250);
                ctx.fillText('RH: ' + blood_type, canvas.width / 4, 270);

                if (optionalField) ctx.fillText(optionalField.length > 30 ? optionalField.substring(0, 29) + '...' : optionalField, canvas.width / 4, 290);
                if (!font_color) {
                    ctx.fillStyle = '#edd549';
                } else {
                    ctx.fillStyle = font_color;
                }
                ctx.fillText('> ', (canvas.width / 4) - 20, 230);
                if (optionalField) ctx.fillText('✔ ', (canvas.width / 4) - 20, 290);

                var someimage = window.document.getElementById('qr');

                for (var i = 0; i < someimage.getElementsByTagName('img').length; i++) {
                    var myimg = someimage.getElementsByTagName('img')[i];
                }

                ctx.fillStyle = "#FFFFFF";
                ctx.fillRect(canvas.width - 105, canvas.height - 165, 90, 90); // something in the background

                ctx.drawImage(myimg, canvas.width - 100, canvas.height - 160, 80, 80);
                myimg.onload = function () {
                    ctx.drawImage(myimg, canvas.width - 100, canvas.height - 160, 80, 80);
                }
                ctx.closePath();
            };
        }, 200);
    } else {
        document.getElementById("alertModal").style.display = "block";
    }
}


function showCarnetFromHtml(
    carnet,
    student_id,
    student_name,
    student_last_name,
    identification,
    studentDocumentType,
    categoryName,
    academyLocation,
    userPhoto
) {
    $("#canvas-container").html(carnet.html);
    $("#athlete_names").html(student_name);
    $("#athlete_last_names").html(student_last_name);
    $("#identification").html(studentDocumentType + ' ' + identification);
    $("#academy_location").html(academyLocation);
    $("#academy_category").html(categoryName);
    if ($("#user-photo")) {
        $("#user-photo").attr('src', userPhoto + '?_dc=' + new Date().getTime());
    }

    let qrData = {
        'u': student_id,
        'c': carnet['id'],
        't': 'A'
    };

    generate(JSON.stringify(qrData));
    setTimeout(() => {
        const container = document.getElementById("qr");
        const canvas = container.querySelector("canvas");
        if (canvas) {
            const base64 = canvas.toDataURL("image/png");
            $('#qr-code').attr('src', base64);
        } else {
            const img = container.querySelector("img");
            if (img) {
                const base64 = img.src;
                $('#qr-code').attr('src', base64);
            }
        }
    }, 100);
}

function generate(user_input) {
    document.getElementById("qr").innerHTML = "";
    var qrcode = new QRCode(document.getElementById("qr"), {
        text: `${user_input}`,
        width: 170, //default 128
        height: 170,
        colorDark: "#000000",
        colorLight: "#ffffff",
        correctLevel: QRCode.CorrectLevel.H
    });
    return qrcode;
}

function clearQr() {
    var bandera = false;
    $('#modal_carnet').on('hide.bs.modal', function (event) {
        var canvasQr = window.document.getElementById("qr");
        var seeCanvas = canvasQr.getElementsByTagName('canvas')
        if (bandera == false) {
            for (let i = 0; i < canvasQr.getElementsByTagName('canvas').length; i++) {
                var ctx = seeCanvas[i].getContext('2d');
                ctx.clearRect(0, 0, seeCanvas[i].width, seeCanvas[i].height);
            }
            bandera = true;
        }
    });
}

function canvasDownload() {
    var canvas = document.getElementById("canvasCarnet");
    if (canvas) {
        image = canvas.toDataURL("image/png", 1.0).replace("image/png", "image/octet-stream");
        var link = document.createElement('a');
        link.download = "mycarnet.png";
        link.href = image;
        link.click();
    } else {
        const element = document.getElementById("previewDiv");
        html2canvas(element).then(canvas => {
            const link = document.createElement("a");
            link.download = "carnet.png";
            link.href = canvas.toDataURL("image/png");
            link.click();
        });
    }
}

String.prototype.obtenerIniciales = function (glue) {
    if (typeof glue == "undefined") {
        var glue = true;
    }

    var iniciales = this.replace(/[^a-zA-Z- ]/g, "").match(/\b\w/g);

    if (glue) {
        return iniciales.join('');
    }

    return iniciales;
};

function searchStates(state_id) {
    var user_app = $("#editUser input[name='user_id']").val();
    var info = {
        state_id: state_id,
        user_id: user_app,
    };

    $.ajax({
        type: "POST",
        headers: {
            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
        },
        data: info,
        url: "/academy/searchCities",
        async: false,
        success: function (r) {
            if (r.r) {
                data = r.d;
                if (data) {
                    $('#citie_id3 option').remove();
                    data.forEach(function (item) {
                        $('#citie_id3').append(new Option(item.name, item.id));
                    });
                    $('#selected_cities').show();
                    $('#selected_cities_default').hide();
                    $('#btn-edit-user').attr('disabled', false);
                }
            } else {
                swal("Error", r.m, "error");
            }
        },
        error: function (textStatus, errorThrown) {
            swal("Error", Lang.get("Error al seleccionar departamento"), "error");
        },
    });

    select = document.getElementById('citie_id3');
    for (var i = 0; i < data.length; i++) {
        var opt = document.createElement('option');
        opt.innerHTML = '';
        opt.value = data[i]['id'];
        opt.innerHTML = data[i]['name'];
        select.appendChild(opt);
    }

}
function advisorSearchStates(state_id) {
    var user_app = $("#editUser input[name='user_id']").val();
    var info = {
        state_id: state_id,
        user_id: user_app,
    };

    $.ajax({
        type: "POST",
        headers: {
            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
        },
        data: info,
        url: "/academy/searchCities",
        async: false,
        success: function (r) {
            if (r.r) {
                data = r.d;
                if (data) {
                    $('#AdvisorCitie_id3 option').remove();
                    data.forEach(function (item) {
                        $('#AdvisorCitie_id3').append(new Option(item.name, item.id));
                    });
                    $('#advisor_selected_cities').show();
                    $('#advisor_selected_cities_default').hide();
                    $('#btn-edit-user').attr('disabled', false);
                }
            } else {
                swal("Error", r.m, "error");
            }
        },
        error: function (textStatus, errorThrown) {
            swal("Error", Lang.get("Error al seleccionar departamento"), "error");
        },
    });

    select = document.getElementById('citie_id3');
    for (var i = 0; i < data.length; i++) {
        var opt = document.createElement('option');
        opt.innerHTML = '';
        opt.value = data[i]['id'];
        opt.innerHTML = data[i]['name'];
        select.appendChild(opt);
    }

}

function searchCities(citie_id) {
    var select = $("#stateCountry_id option:selected").val();
    var info = {
        citie_id: citie_id,
        state_id: select,
    };

    $.ajax({
        type: "POST",
        headers: {
            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
        },
        data: info,
        url: "/academy/selectCities",
        async: false,
        success: function (r) {
            if (r.r) {
                data = r.d;
                $('#btn-edit-user').attr('disabled', false);
            } else {
                swal("Error", r.m, "error");
                $('#btn-edit-user').attr('disabled', true);
            }
        },
        error: function (textStatus, errorThrown) {
            swal("Error", Lang.get("Error al seleccinar la ciudad"), "error");
        },
    });

}
function advisorSearchCities(citie_id) {
    var select = $("#AdvisorStateCountry_id option:selected").val();
    var info = {
        citie_id: citie_id,
        state_id: select,
    };

    $.ajax({
        type: "POST",
        headers: {
            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
        },
        data: info,
        url: "/academy/selectCities",
        async: false,
        success: function (r) {
            if (r.r) {
                data = r.d;
                $('#btn-edit-user').attr('disabled', false);
            } else {
                swal("Error", r.m, "error");
                $('#btn-edit-user').attr('disabled', true);
            }
        },
        error: function (textStatus, errorThrown) {
            swal("Error", Lang.get("Error al seleccinar la ciudad"), "error");
        },
    });

}

function importStudentSchedule() {
    var fExcel = document.getElementById("importStudentSchedule");
    fExcel = fExcel.files[0];
    if (!fExcel) {
        swal("Advertencia", "¡No hay archivo!", "warning");
        return;
    }

    var t = $("#example22").DataTable();
    t.clear().draw();

    $("#modal_import_schedules #buttonImport").addClass("displayNone");
    $("#modal_import_schedules #spinnerImport").removeClass("displayNone");

    var formData = new FormData();
    formData.append("importStudentSchedule", fExcel);
    $.ajax({
        type: "POST",
        dataType: "json",
        processData: false,
        contentType: false,
        headers: {
            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
        },
        data: formData,
        url: "/academy/studentSchedule/import",
        success: function (r) {
            $("#modal_import_schedules #buttonImport").removeClass("displayNone");
            $("#modal_import_schedules #spinnerImport").addClass("displayNone");
            if (r.r) {
                if (r.d != null && r.d.length > 0) {
                    for (var i = 0; i < r.d.length; i++) {
                        t.row.add([
                            r.d[i].message,
                            r.d[i].line,
                        ]);
                    }
                    $('#logModal').modal("show");
                    t.draw();
                } else {
                    swal(r.m, {
                        icon: "success",
                        buttons: {
                            Ok: true,
                        },
                    }).then((val) => {
                        if (val == "Ok") {
                            $(location).attr("href", "/academy_user");
                        }
                    });
                }
            } else {
                swal("Error", r.m, "error");
            }
        },
        error: function (err) {
            $("#modal_import_schedules #buttonImport").removeClass("displayNone");
            $("#modal_import_schedules #spinnerImport").addClass("displayNone");
            swal("Error", err.responseJSON.message, "error");
        },
    });
}

function alertLogSchedule() {
    swal(Lang.get("messagesClient.coverage_.title_1"), {
        icon: "error",
        buttons: {
            Ok: true,
        },
    }).then((val) => {
        if (val == "Ok") {
            $(location).attr("href", "/academy_user");
        }
    });
}

function alertLogClients() {
    $(location).attr("href", "/academy_user");
}

function alertLogStudents() {
    swal(Lang.get("messagesClient.coverage_.title_1"), {
        icon: "error",
        buttons: {
            Ok: true,
        },
    }).then((val) => {
        if (val == "Ok") {
            $(location).attr("href", "/academy_user");
        }
    });
}

function dateNow() {
    var hoy = new Date();
    var dd = hoy.getDate();
    var mm = hoy.getMonth() + 1;
    var yyyy = hoy.getFullYear();

    dd = addZero(dd);
    mm = addZero(mm);

    return yyyy + "-" + mm + "-" + dd;
}

function convertTime12to24(time12h) {
    const [time, modifier] = time12h.split(" ");

    let [hours, minutes] = time.split(":");

    if (hours === "12") {
        hours = "00";
    }

    if (modifier === "PM") {
        hours = parseInt(hours, 10) + 12;
    }

    return hours + ":" + minutes;
}

function hourNow() {
    var hour = new Date();
    hour = hour.getHours() + ":" + hour.getMinutes();
    return hour;
}

function addZero(i) {
    if (i < 10) {
        i = "0" + i;
    }
    return i;
}

function validateRequiredFields(fields) {
    for (const field of fields) {
        const value = $(field.selector).val();
        if (!value) {
            swal("Error", field.message, "error");
            return false;
        }
    }
    return true;
}

function importAcademyTags() {
    var fExcel = document.getElementById("importAcademyTags");
    fExcel = fExcel.files[0];
    if (!fExcel) {
        swal("Advertencia", "¡No hay archivo!", "warning");
        return;
    }

    var t = $("#example22").DataTable();
    t.clear().draw();

    $("#modal_import_tags #buttonImport").addClass("displayNone");
    $("#modal_import_tags #spinnerImport").removeClass("displayNone");

    var formData = new FormData();
    formData.append("importAcademyTags", fExcel);
    $.ajax({
        type: "POST",
        dataType: "json",
        processData: false,
        contentType: false,
        headers: {
            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
        },
        data: formData,
        url: "/academy/tags/import",
        success: function (r) {
            $("#modal_import_tags #buttonImport").removeClass("displayNone");
            $("#modal_import_tags #spinnerImport").addClass("displayNone");
            if (r.r) {
                if (r.d != null && r.d.length > 0) {
                    for (var i = 0; i < r.d.length; i++) {
                        t.row.add([
                            r.d[i].message,
                            r.d[i].line,
                        ]);
                    }
                    $('#logModal').modal("show");
                    t.draw();
                } else {
                    swal(r.m, {
                        icon: "success",
                        buttons: {
                            Ok: true,
                        },
                    }).then((val) => {
                        if (val == "Ok") {
                            $(location).attr("href", "/academy_user");
                        }
                    });
                }
            } else {
                swal("Error", r.m, "error");
            }
        },
        error: function (err) {
            $("#modal_import_tags #buttonImport").removeClass("displayNone");
            $("#modal_import_tags #spinnerImport").addClass("displayNone");
            swal("Error", err.responseJSON.message, "error");
        },
    });
}