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/events.js
var specialTicketId;
var tickets;

let matchEventId;
$(document).on('ready', function () {
    matchEventId = document.location.href.match(/[0-9]+/)[0];

    let image = document.getElementById('image');
    if (image) {
        image.addEventListener('change', function () {
            const file = this.files[0];
            if (file) {
                if (file.size > 1 * 1024 * 1024) { // 1MB in bytes
                    alert(Lang.get("messagesClient.tournaments.file_size_error"));
                    this.value = "";
                    document.getElementById('file-name').textContent = Lang.get("messagesClient.tournaments.no_selected_image");
                } else {
                    document.getElementById('file-name').textContent = file.name;
                }
            }
        });
    }
});

function create() {
    $("#form_create").validator("update");
    $("#form_create")
        .validator("update")
        .on("submit", function (e) {
            if (e.isDefaultPrevented()) {
            } else {
                e.preventDefault();

                var season_id = $('#form_create').attr('season_id');
                var team_id = $("#form_create select[name='team_id']").val();
                var event_start = $("#form_create input[name='event_start']").val();
                event_start = event_start.replace("T", " ");

                var event_start_sale = $("#form_create input[name='event_start_sale']").val();
                event_start_sale = event_start_sale.replace("T", " ");

                var event_end_sale = $("#form_create input[name='event_end_sale']").val();
                event_end_sale = event_end_sale.replace("T", " ");

                if (!season_id || season_id == "0") {
                    swal(Lang.get("messagesClient.events.tag_3"), {
                        icon: "error",
                    });
                    return;
                }

                if (!team_id || team_id == "0") {
                    swal(Lang.get("messagesClient.events.tag_4"), {
                        icon: "error",
                    });
                    return;
                }

                var salesType = $("#form_create select[name='sales_type']").val();
                if (!salesType || salesType == "0") {
                    swal(Lang.get("messagesClient.events.sales_type_required"), {
                        icon: "error",
                    });
                    return;
                }

                var stadium = $("#form_create select[name='stadium']").val();
                if (!stadium || stadium == "0") {
                    swal(Lang.get("messagesClient.events.stadium_required"), {
                        icon: "error",
                    });
                    return;
                }

                var info = {
                    season_id,
                    team_id,
                    name: $("#form_create input[name='name']").val(),
                    date_name: $("#form_create input[name='date_name']").val(),
                    event_start,
                    event_start_sale,
                    event_end_sale,
                    zone_id: stadium,
                    active: $("#form_create select[name='active']").val(),
                    tags: $("#form_create select[name='generalMultiselect']").val(),
                    sales_type: salesType,
                    door_opening_time: $("#form_create input[name='door_opening_time']").val(),
                };

                $("#btn-create").addClass("displayNone");
                $("#spinnerButton").removeClass("displayNone");

                swal(Lang.get("messagesClient.events.tag_1"), {
                    buttons: {
                        cancel: "No",
                        Ok: true,
                    },
                }).then((val) => {
                    if (val == "Ok") {
                        $.ajax({
                            url: `/season/${season_id}/event`,
                            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) {
                                    onSuccesSave(r, `/season/${season_id}/event`, "/events/saveImage");
                                } 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 clickEdit(event_id, season_id) {
    $(location).attr("href", `/season/${season_id}/event/${event_id}/edit`);
}

function clickInfoEvent(value) {
    $(location).attr("href", "/events/tickets/" + value + "/info");
}

function clickInfoBlocks(value) {
    $(location).attr("href", "/events/tickets/" + value + "/blocks");
}

function clickInfoBlockList(value) {
    $(location).attr("href", "/events/tickets/" + value + "/block/info");
}

function eventPrice(value) {
    $(location).attr("href", "/event_prices/" + value + "/list");
}

function clickMatchEventStage(value) {
    $(location).attr("href", `/event/${value}/stage`);
}

function edit() {
    $("#form_edit").validator("update");
    $("#form_edit")
        .validator("update")
        .on("submit", function (e) {
            if (e.isDefaultPrevented()) {
            } else {
                e.preventDefault();

                var season_id = $('#form_edit').attr('season_id');
                var team_id = $("#form_edit select[name='team_id']").val();
                var event_start = $("#form_edit input[name='event_start']").val();
                event_start = event_start.replace("T", " ");

                var event_start_sale = $("#form_edit input[name='event_start_sale']").val();
                event_start_sale = event_start_sale.replace("T", " ");

                var event_end_sale = $("#form_edit input[name='event_end_sale']").val();
                event_end_sale = event_end_sale.replace("T", " ");

                if (!season_id || season_id == "0") {
                    swal(Lang.get("messagesClient.events.tag_3"), {
                        icon: "error",
                    });
                    return;
                }

                if (!team_id || team_id == "0") {
                    swal(Lang.get("messagesClient.events.tag_4"), {
                        icon: "error",
                    });
                    return;
                }

                var salesType = $("#form_edit select[name='sales_type']").val();
                if (!salesType || salesType == "0") {
                    swal(Lang.get("messagesClient.events.sales_type_required"), {
                        icon: "error",
                    });
                    return;
                }

                var stadium = $("#form_edit select[name='stadium']").val();
                if (!stadium || stadium == "0") {
                    swal(Lang.get("messagesClient.events.stadium_required"), {
                        icon: "error",
                    });
                    return;
                }

                var info = {
                    _method: $("input[name=_method]").val(),
                    season_id,
                    team_id,
                    name: $("#form_edit input[name='name']").val(),
                    date_name: $("#form_edit input[name='date_name']").val(),
                    event_start,
                    event_start_sale,
                    event_end_sale,
                    zone_id: stadium,
                    active: $("#form_edit select[name='active']").val(),
                    tags: $("#form_edit select[name='generalMultiselect']").val(),
                    sales_type: salesType,
                    door_opening_time: $("#form_edit input[name='door_opening_time']").val(),
                };

                var id = $("#form_edit").attr("event_id");

                $("#btn-edit").addClass("displayNone");
                $("#spinnerButton").removeClass("displayNone");

                swal(Lang.get("messagesClient.events.tag_2"), {
                    buttons: {
                        cancel: "No",
                        Ok: true,
                    },
                }).then((val) => {
                    if (val == "Ok") {
                        $.ajax({
                            url: `/season/${season_id}/event/${id}`,
                            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) {
                                if (r.r) {
                                    onSuccesSave(r, `/season/${season_id}/event`, "/events/saveImage");
                                } 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");
                    }
                });
            }
        });
}

/**Activar/Desactivar torneo usando switch*/
function chk(value) {
    var state;
    if ($("#Checkactive" + value).is(":checked")) {
        state = 1;
    } else {
        state = 0;
    }

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

    $.ajax({
        url: "/events/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("Ok", r.m);
            } else {
                swal("Error", r.m, "error");
            }
        },
        error: function (e) {
            swal(
                "Error",
                Lang.get("messagesClient.events.error_update_image"),
                "error"
            );
        },
    });
}

/**Método para eliminar banner*/
function clickDelete(event_id, season_id) {
    swal(Lang.get("messagesClient.events.tag_6"), {
        buttons: {
            cancel: "No",
            Ok: true,
        },
    }).then((val) => {
        if (val == "Ok") {
            var info = {
                _method: "DELETE",
            };

            $.ajax({
                url: `/season/${season_id}/event/${event_id}`,
                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).attr("href", `/season/${season_id}/event`);
                            }
                        });
                    } else {
                        swal(r.m, { icon: "error" });
                    }
                },
                error: function (e) {
                    swal(
                        "Error",
                        Lang.get("messagesClient.events.error_delete"),
                        "error"
                    );
                },
            });
        }
    });
}

function changeSeat(ticket_id, match_event_id) {
    // Obtener las sillas actuales.
    $('#modal-change-seat').modal('show');
    $('#modal-change-seat').data('ticket_id', ticket_id);
    $('#modal-change-seat').data('match_event_id', match_event_id);

    loadTribunes();
}

function loadTribunes() {
    calculateDestino();
    $.ajax({
        url: "/tickets/tribunes",
        method: "GET",
        success: function (data) {
            clearScreenSeatChange();

            data.forEach(element => {
                let optionText = element.name;
                let optionValue = element.id;

                $('#tribune_id').append(`<option value="${optionValue}">${optionText}</option>`);
            });
        }
    });
}

function clearScreenSeatChange() {
    $('#tribune_id')
        .find('option')
        .remove()
        .end()
        .append('<option value="">--Seleccione</option>')
        .val('');

    $('#zone_id')
        .find('option')
        .remove()
        .end()
        .append('<option value="">--Seleccione</option>')
        .val('');

    $('#seat_id')
        .find('option')
        .remove()
        .end()
        .append('<option value="">--Seleccione</option>')
        .val('');

    calculateDestino();
}

function loadSubZones() {
    let tribune_id = $('#tribune_id').val();
    $('#seat_id')
        .find('option')
        .remove()
        .end()
        .append('<option value="">--Seleccione</option>')
        .val('');
    calculateDestino();


    $.ajax({
        url: `/tickets/getTribunesByZone/${tribune_id}`,
        dataType: "json",
        processData: false,
        contentType: false,
        success: function (data) {
            $('#zone_id')
                .find('option')
                .remove()
                .end()
                .append('<option value="">--Seleccione</option>')
                .val('');

            data.data.forEach(element => {
                let optionText = element.name;
                let optionValue = element.id;

                $('#zone_id').append(`<option value="${optionValue}">${optionText}</option>`);
            });
        }
    });
}

function loadSeats() {
    let zone_id = $('#zone_id').val();
    let match_event_id_origin = $('#modal-change-seat').data('match_event_id');
    calculateDestino();

    $.ajax({
        url: `/tickets/getSeatFreeByZone/${zone_id}/${match_event_id_origin}`,
        dataType: "json",
        processData: false,
        contentType: false,
        success: function (data) {
            $('#seat_id')
                .find('option')
                .remove()
                .end()
                .append('<option value="">--Seleccione</option>')
                .val('');

            data.data.forEach(element => {
                let optionText = `${element.letter.name}${element.code}`;
                let optionValue = element.id;

                $('#seat_id').append(`<option value="${optionValue}">${optionText}</option>`);
            });
        }
    });
}

function finishSelectionSeat() {
    calculateDestino();
}

function calculateDestino() {
    let tribune_id = $('#tribune_id').find(":selected").text();
    let zone_id = $('#zone_id').find(":selected").text();
    let seat_id = $('#seat_id').find(":selected").text();
    let labelDestino = $('#labelDestino');
    let textDestino = `${tribune_id} - ${zone_id} - ${seat_id}`;

    labelDestino.text(`Silla destino: ${textDestino}`)
}

function getConfirmationSeatChangeTickets() {
    let tribune_id = $('#tribune_id').val();
    let zone_id = $('#zone_id').val();
    let seat_id = $('#seat_id').val();
    if (!tribune_id || !zone_id || !seat_id) {
        swal("Advertencia", "¡Debes ingresar todos los datos!", "warning");
        return;
    }

    let ticket_id_origin = $('#modal-change-seat').data('ticket_id');

    // Se obtienen para informar los tickets que se modificaran del usuario, adicional se valida si el cambio es posible.
    $.ajax({
        url: `/tickets/getPendingMatchesTickets/${ticket_id_origin}/${tribune_id}/${zone_id}/${seat_id}`,
        method: "GET",
        success: function (data) {
            let msgSwal = "";

            data.forEach(elem => {
                msgSwal = msgSwal + `* (${elem.match_event.date_name}) ${elem.match_event.name} ${elem.code_ticket} - ${elem.door} - ${elem.zone} - ${elem.letter_seat}${elem.code_seat}` + "\n\n";
            });

            swal(msgSwal, {
                title: "Se han encontrado los siguientes tickets:",
                icon: "success",
                buttons: {
                    cancel: "Cancelar",
                    Ok: {
                        text: "Si, Continuar",
                        value: "Ok",
                    },
                },
            }).then((val) => {
                if (val == "Ok") {
                    postChangesChangeSeat(ticket_id_origin, seat_id);
                }
            });
        }
    });
}

function postChangesChangeSeat(ticket_id_origin, seat_id_final) {
    const data = {
        ticket_id_origin,
        seat_id_final
    };

    $.ajax({
        url: "/tickets/changeMassiveTicketSeat",
        method: "POST",
        data: JSON.stringify(data),
        contentType: "application/json",
        headers: {
            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
            "Content-Type": "application/json",
        },
        success: function (data) {
            if (data.r) {
                swal(data.m, {
                    icon: "success",
                    buttons: {
                        Ok: true,
                    },
                }).then((val) => {
                    if (val == "Ok") {
                        window.location.reload();
                    }
                });
            } else {
                swal("Error", data.m, "error");
            }
        }
    })
}

function changeStateTicket(data) {
    const $modal = $('#modal-update-ticket');
    if ($modal.length === 0) {
        swal("Error", "Modal no encontrado", "error");
        return;
    }

    // setea campos directamente antes de mostrar
    $modal.find('select[name="ticket_status_id"]').val(data.ticket_status_id).trigger('change');
    $modal.find('select[name="ticket_type_id"]').val(data.ticket_type_id).trigger('change');
    $modal.find('select[name="special_text"]').val(data.special_text).trigger('change');
    $modal.find('input[name="price"]').val(data.price).trigger('change');

    // guarda data por si la necesitas despues
    $modal.data('data', data);

    // finalmente mostrar modal
    $modal.modal('show');
}

function updateTicket() {
    const $modal = $('#modal-update-ticket');

    let data = {
        id: $modal.data('data').id,
        ticket_status_id: $modal.find('select[name="ticket_status_id"]').val(),
        ticket_type_id: $modal.find('select[name="ticket_type_id"]').val(),
        special_text: $modal.find('select[name="special_text"]').val(),
        price: $modal.find('input[name="price"]').val(),
    };

    $("#btn-update-ticket").addClass("displayNone");
    $("#spinner-update-ticket").removeClass("displayNone");
    $.ajax({
        url: `/tickets/updateTicket`,
        method: "PUT",
        data: JSON.stringify(data),
        contentType: "application/json",
        headers: {
            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
            "Content-Type": "application/json",
        },
        success: function (data) {
            $("#btn-update-ticket").removeClass("displayNone");
            $("#spinner-update-ticket").addClass("displayNone");
            if (data.r) {
                swal(data.m, {
                    icon: "success",
                    buttons: {
                        Ok: true,
                    },
                }).then((val) => {
                    if (val == "Ok") {
                        window.location.reload();
                    }
                });
            } else {
                swal("Error", data.m, "error");
            }
        },
        error: function (error) {
            $("#btn-update-ticket").removeClass("displayNone");
            $("#spinner-update-ticket").addClass("displayNone");
            swal("Error", error.m, "error");
        }
    });
}

/** Método para validar tickets */
function validateTickets(ticketMainId) {
    swal("¿Estás seguro de generar estas boletas?", {
        buttons: {
            cancel: "No",
            Ok: true,
        },
    }).then((val) => {
        if (val == "Ok") {
            var info = {
                ticket_main_id: ticketMainId,
            };
            $.ajax({
                url: "/events/validateTicket",
                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).attr("href", `/events/tickets/${matchEventId}/blocks`);
                            }
                        });
                    } else {
                        swal("Error", r.m, { icon: "error" });
                    }
                },
                error: function (e) {
                    swal("Error", Lang.get("messagesClient.events.error_delete"), "error");
                },
            });
        }
    });
}

/** Método de notificacion email */
function sendEmailNotifications(value, id_event, code_tickets) {
    swal("¿Estás seguro de enviar correo?", {
        buttons: {
            cancel: "No",
            Ok: true,
        },
    }).then((val) => {
        if (val == "Ok") {
            var info = {
                id_user: value,
                code_ticket: code_tickets,
            };
            $.ajax({
                url: "/events/sendEmailNotifications",
                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("Correo enviado", {
                            icon: "success",
                            buttons: {
                                Ok: true,
                            },
                        });
                    } else {
                        swal(r.m, { icon: "error" });
                    }
                },
                error: function (e) {
                    swal(
                        "Error",
                        Lang.get("messagesClient.events.tag_9"),
                        "error"
                    );
                },
            });
        }
    });
}

function clickDeleteBackups(matchEventId) {
    swal({
        icon: "warning",
        text: 'Se eliminará todos los tickets backups para este evento, ¿Desea continuar?',
        buttons: {
            cancel: 'Cancelar',
            ok: {
                text: "Continuar",
                closeModal: false,
            },
        },
        closeOnClickOutside: false,
        closeOnEsc: false
    })
        .then(value => {
            if (value == "ok") {
                var info = {
                    matchEventId: matchEventId,
                };
                $.ajax({
                    url: "/events/delete-backups",
                    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("Proceso exitoso", r.m, {
                                icon: "success",
                                buttons: {
                                    Ok: true,
                                },
                            });
                        } else {
                            swal("Ops...", r.m, {
                                icon: "error",
                                buttons: {
                                    Ok: true,
                                },
                            });
                        }
                    },
                });
            }
        })
        .catch(err => {
            if (err) {
                swal("Ops...", "Ocurrió un error", "error");
            } else {
                swal.stopLoading();
                swal.close();
            }
        });
}

function clickSendToBilling(matchEventId) {
    swal({
        icon: "warning",
        text: 'Se enviará a facturar todas las compras pendientes de este evento, ¿Desea continuar?',
        buttons: {
            cancel: 'Cancelar',
            ok: {
                text: "Continuar",
                closeModal: false,
            },
        },
        closeOnClickOutside: false,
        closeOnEsc: false
    })
        .then(value => {
            if (value == "ok") {
                var info = {
                    matchEventId: matchEventId,
                };
                $.ajax({
                    url: "/events/send-to-billing",
                    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("Proceso exitoso", r.m, {
                                icon: "success",
                                buttons: {
                                    Ok: true,
                                },
                            });
                        } else {
                            swal("Ops...", r.m, {
                                icon: "error",
                                buttons: {
                                    Ok: true,
                                },
                            });
                        }
                    },
                });
            }
        })
        .catch(err => {
            if (err) {
                swal("Ops...", "Ocurrió un error", "error");
            } else {
                swal.stopLoading();
                swal.close();
            }
        });
}


function getTicketsUserid(dataId, emailError, ticketid, code_ticket, ticketRelatedDocument) {

    if (!ticketRelatedDocument) {
        swal({
            icon: "warning",
            text: 'Correo que no tiene la cedula registrada',
            buttons: {
                ok: {
                    text: "Continuar",
                    closeModal: true,
                },
            }
        })
            .then(value => {
                if (value == "ok") {
                    $('#modal_tickets_valid').modal('show');
                    $("#result").html("<div class='alert alert-dismissible alert-danger' id='emailError'>Actual usuario: <strong>'" + emailError + "'</strong> </div>");
                    $("#resultInput").html("<input type='hidden' class='alert alert-dismissible alert-danger' id='ticketRelatedDocument' value='" + ticketRelatedDocument + "'data-options='" + dataId + "'data-event-id='" + ticketid + "'data-code_ticket='" + code_ticket + "'DISABLED>");
                    $('#resultInput').hide();
                }
            })
    } else {
        $('#modal_tickets_valid').modal('show');
        $("#result").html("<div class='alert alert-dismissible alert-danger' id='emailError'>Actual usuario: <strong>'" + emailError + "'</strong> </div>");
        $("#resultInput").html("<input type='hidden' class='alert alert-dismissible alert-danger' id='ticketRelatedDocument' value='" + ticketRelatedDocument + "'data-options='" + dataId + "'data-event-id='" + ticketid + "'data-code_ticket='" + code_ticket + "'DISABLED>");
        $('#resultInput').hide();
    }
}

function searchUser() {
    var document_search = $("#document_search").val();
    $("#user_id").val("0");
    $("#first_name").val("");
    $("#last_name").val("");
    $("#phone").val("");
    $("#email_user").val("");
    if (document_search && document_search != "") {
        $.ajax({
            url: "/tickets/users/" + document_search,
            type: "GET",
            contentType: "application/json",
            headers: {
                "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
                "Content-Type": "application/json",
            },
            success: function (r) {
                if (r.r) {
                    $("#container_data_user").removeClass("displayNone");
                    $("#document").val(document_search);
                    var current_user = r.data;
                    let contentHtml = "";
                    $("#emailUser").html();
                    if (current_user) {
                        for (var i = 0; i < current_user.length; i++) {
                            $("#emailUser").html();
                            contentHtml = contentHtml + "<div> <label class='container' style='background:#ddd; text-align: center;' > <input type='radio' id='infoUser" + i + "' name='infoUser' value='" + current_user[i].document + "'data-options='" + current_user[i].id + "' > <label for='email'>" + current_user[i].email + " </label>    </label> </div>";
                            $("#button_edi_user").prop("disabled", false);
                        }
                        $("#emailUser").html(contentHtml);
                    } else {
                        $("#button_edi_user").prop("disabled", true);
                    }
                }
            }
        });
    } else {
        swal("Advertencia", "¡Debes ingresar un documento válido!", "warning");
    }
}

function editUserTicket() {
    let userSelected;
    let idSelected;
    let cont = 0;

    do {
        userSelected = $("input[id=infoUser" + cont + "]");
        idSelected = $("input[id=infoUser" + cont + "]").data("options");

        cont++;
    }
    while (userSelected && userSelected.is(':checked') == false)

    if (!idSelected) {
        swal("Advertencia", "¡Debes seleccionar un usuario!", "warning");
        return;
    }

    var info = {
        oldUserId: $("input[id='ticketRelatedDocument']").data('options'),
        newUserId: idSelected,
        event_id: $("input[id='ticketRelatedDocument']").data('event-id'),
        code_ticket: $("input[id='ticketRelatedDocument']").data('code_ticket'),
    };
    swal(Lang.get("messagesClient.user_ticket_change.tag_2"), {
        buttons: {
            cancel: "No",
            Ok: {
                text: "Si, Continuar",
                value: "Ok",
            },
        },
    }).then((val) => {
        if (val == "Ok") {
            $.ajax({
                url: "/tickets/toUpdateUsersWithTickets",
                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) {
                    if (r.r) {
                        swal(r.m, {
                            icon: "success",
                            buttons: {
                                Ok: true,
                            },
                        }).then((val) => {
                            if (val == "Ok") {
                                $(location).attr("href", window.location.pathname);
                            }
                        });
                    } else {
                        swal("Error", r.m, "error");
                        $("#button_edi_user").removeClass("displayNone");
                        $("#spinnerButton").addClass("displayNone");
                    }
                },
                error: function (e) {
                    swal("Error", Lang.get("messagesClient.user_ticket_change.tag_1"), "error");
                    $("#button_edi_user").removeClass("displayNone");
                    $("#spinnerButton").addClass("displayNone");
                },
            });
        } else {
            $("#button_edi_user").removeClass("displayNone");
            $("#spinnerButton").addClass("displayNone");
        }
    });
}

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

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

    $("#buttonImportMatchEventSeats").addClass("displayNone");
    $("#spinnerButtonMatchEventSeats").removeClass("displayNone");

    var formData = new FormData();
    formData.append("archivo", archivo);
    formData.append("matchEventId", matchEventId);
    $.ajax({
        type: "POST",
        dataType: "json",
        processData: false,
        contentType: false,
        headers: {
            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
        },
        data: formData,
        url: "/tickets/importMatchEventSeats",
        success: function (r) {
            $("#buttonImportMatchEventSeats").removeClass("displayNone");
            $("#spinnerButtonMatchEventSeats").addClass("displayNone");
            if (r.d != null) {
                if (r.d.length > 0) {
                    for (var i = 0; i < r.d.length; i++) {
                        t.row.add([
                            r.d[i].message,
                            r.d[i].line,
                        ]);
                    }
                    $('#modalMatchEventSeatsImport').modal("hide");
                    $('#logModal').modal("show");
                    t.draw();
                } else if (r.r) {
                    swal(r.m, {
                        icon: "success",
                        buttons: {
                            Ok: true,
                        },
                    }).then((val) => {
                        if (val == "Ok") {
                            $(location).attr("href", window.location.pathname);
                        }
                    });
                }
            } else {
                swal("Error", "¡Error al subir el archivo!", "error");
            }
        },
        error: function (e) {
            $("#buttonImportMatchEventSeats").removeClass("displayNone");
            $("#spinnerButtonMatchEventSeats").addClass("displayNone");
            swal("Error", e.responseJSON ? e.responseJSON.message : 'Hubo un error en el servidor, espere unos segundos e intente de nuevo', "error");
        }
    });
}

function billingOnDemand() {
    email = $("#email").val();
    type = $("#type").val();
    if (!email && !type) {
        swal("Error", "¡Debes ingresar un correo o un tipo!", "error");
        return false;
    }
    $("#button").addClass("displayNone");
    $("#spinner").removeClass("displayNone");
    var info = {
        email: email,
        matchEventId: matchEventId,
        type: type,
    };
    $.ajax({
        url: "/tickets/billingOnDemand",
        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).attr("href", window.location.pathname);
                    }
                });
            } else {
                $("#button").removeClass("displayNone");
                $("#spinner").addClass("displayNone");
                swal(r.m, { icon: "error" });
            }
        },
        error: function (e) {
            $("#button").removeClass("displayNone");
            $("#spinner").addClass("displayNone");
            swal("Error", e.responseJSON ? e.responseJSON.message : 'Hubo un error en el servidor, espere unos segundos e intente de nuevo', "error");
        },
    });
}

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

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

    $("#buttonImportMatchEventSpecialText").addClass("displayNone");
    $("#spinnerButtonMatchEventSpecialText").removeClass("displayNone");

    var formData = new FormData();
    formData.append("archivo", archivo);
    formData.append("matchEventId", matchEventId);
    $.ajax({
        type: "POST",
        dataType: "json",
        processData: false,
        contentType: false,
        headers: {
            "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
        },
        data: formData,
        url: "/tickets/importMatchEventSpecialText",
        success: function (r) {
            $("#buttonImportMatchEventSpecialText").removeClass("displayNone");
            $("#spinnerButtonMatchEventSpecialText").addClass("displayNone");
            if (r.d != null) {
                if (r.d.length > 0) {
                    for (var i = 0; i < r.d.length; i++) {
                        t.row.add([
                            r.d[i].message,
                            r.d[i].line,
                        ]);
                    }
                    $('#modalMassiveLoadSpecialTextInTickets').modal("hide");
                    $('#logModal').modal("show");
                    t.draw();
                } else if (r.r) {
                    swal(r.m, {
                        icon: "success",
                        buttons: {
                            Ok: true,
                        },
                    }).then((val) => {
                        if (val == "Ok") {
                            $(location).attr("href", window.location.pathname);
                        }
                    });
                }
            } else {
                swal("Error", "¡Error al subir el archivo!", "error");
            }
        },
        error: function (e) {
            $("#buttonImportMatchEventSpecialText").removeClass("displayNone");
            $("#spinnerButtonMatchEventSpecialText").addClass("displayNone");
            swal("Error", e.responseJSON ? e.responseJSON.message : 'Hubo un error en el servidor, espere unos segundos e intente de nuevo', "error");
        }
    });
}

function alertLogMatchEventSeats() {
    $(location).attr("href", window.location.pathname);
}

function specialTicketModalClick(value) {
    $('#modal_special_tickets').modal('show');
    specialTicketId = value;
}

function generateSpecialTickets() {
    $("#createSpecialTickets").validator("update");

    var info = {
        special_text: $('#special_text').val(),
        amount: $("#createSpecialTickets input[name='amount']").val(),
        ticket_id: specialTicketId
    };

    if (!info.special_text || !info.amount || !info.ticket_id) {
        swal("Advertencia", "¡Debes ingresar todos los datos!", "warning");
        return;
    }

    swal(Lang.get("messagesClient.match_event_tickets.tag_1"), {
        buttons: {
            cancel: "No",
            Ok: true,
        },
    }).then((val) => {
        if (val == "Ok") {
            $.ajax({
                url: "/events/generateSpecialTickets",
                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).attr("href", window.location.pathname);
                            }
                        });
                    } else {
                        if (r.r == false) {
                            swal("Error", r.m, "warning");
                        } else {
                            swal("Error", Lang.get("messagesClient.user_client_tag3"), "error");
                        }
                    }
                },
            });
        }
    });
}

function openCreditNote(ticketMainId) {
    swal({
        icon: "warning",
        text: 'Se enviará a generar nota de crédito para esta compra, ¿Desea continuar?',
        buttons: {
            cancel: 'Cancelar',
            ok: {
                text: "Continuar",
                closeModal: false,
            },
        },
        closeOnClickOutside: false,
        closeOnEsc: false
    }).then((val) => {
        if (val == "ok") {
            var info = {
                ticketMainId: ticketMainId,
            };
            $.ajax({
                url: "/events/credit-note",
                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).attr("href", window.location.pathname);
                            }
                        });
                    } else {
                        swal("Error", r.m, { icon: "error" });
                    }
                },
                error: function (e) {
                    swal("Error", Lang.get("messagesClient.events.tag_9"), "error");
                },
            });
        }
    }).catch(err => {
        if (err) {
            swal("Ops...", "Ocurrió un error", "error");
        } else {
            swal.stopLoading();
            swal.close();
        }
    });
}

function openReInvoice(ticketMainId) {
    swal({
        icon: "warning",
        text: 'Se enviará a re-facturar esta compra, ¿Desea continuar?',
        buttons: {
            cancel: 'Cancelar',
            ok: {
                text: "Continuar",
                closeModal: false,
            },
        },
        closeOnClickOutside: false,
        closeOnEsc: false
    }).then((val) => {
        if (val == "ok") {
            var info = {
                ticketMainId: ticketMainId,
            };
            $.ajax({
                url: "/events/re-invoice",
                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).attr("href", window.location.pathname);
                            }
                        });
                    } else {
                        swal("Error", r.m, { icon: "error" });
                    }
                },
                error: function (e) {
                    swal("Error", Lang.get("messagesClient.events.tag_9"), "error");
                },
            });
        }
    }).catch(err => {
        if (err) {
            swal("Ops...", "Ocurrió un error", "error");
        } else {
            swal.stopLoading();
            swal.close();
        }
    });
}

function ticketNotifications(ticketMainId, codeTicket) {
    tickets = codeTicket;
    localStorage.setItem('ticket_main_id', ticketMainId);
    swal({
        title: "Envio boleta",
        text: "Boleta a enviar: " + tickets,
        buttons: false,
        closeOnClickOutside: false,
        content: createCustomButtons()
    });

    function createCustomButtons() {
        const container = document.createElement('div');
        container.className = 'swal-buttons-container';
        container.innerHTML = `
                                <span id="keepSelling" class="swal-button-cancel" title="Cerrar">&times;</span>
                                <button id="sendEmail" class="swal-button swal-button-action">
                                    <i class="fa fa-envelope"></i> Enviar por correo
                                </button>
                                <button id="sendWhatsApp" class="swal-button swal-button-action">
                                    <i class="fa fa-whatsapp"></i> Enviar por WhatsApp
                                </button>
                                <button id="printTicket" class="swal-button swal-button-action">
                                    <i class="fa fa-print"></i> Imprimir
                                </button>
                            `;
        return container;
    }

    // Escuchar clicks después de que se muestre
    setTimeout(() => {
        document.getElementById('keepSelling').addEventListener('click', () => {
            swal.close();
        });
        document.getElementById('sendEmail').addEventListener('click', () => {
            swal.close();
            $('#emailModal').modal('show');
        });
        document.getElementById('printTicket').addEventListener('click', () => {
            swal.close();
            printTickets(tickets);
        });
        document.getElementById('sendWhatsApp').addEventListener('click', () => {
            swal.close();
            $('#whatsappModal').modal('show');
        });
    }, 100);
}

function printTickets(tickets) {
    window.open(window.location.origin + '/tickets/pdf/' + tickets);
}

function sendTicketByEmail(event) {
    event.preventDefault();
    email = $('#email_address').val();

    if (email != $('#confirm_email_address').val()) {
        swal("Advertencia", "Los correos electrónicos no coinciden", "warning");
        return;
    }

    ticket_main_id = localStorage.getItem("ticket_main_id");
    var info = {
        ticket_main_id: ticket_main_id,
        email: email,
        url: window.location.origin + '/tickets/pdf/' + tickets
    };

    $('#loading').show();
    $.ajax({
        url: "/flash_ticket/sendByEmail",
        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) {
            $('#loading').hide();
            if (r.r) {
                swal(r.m, {
                    icon: "success",
                    buttons: {
                        Ok: "Aceptar",
                    },
                }).then((val) => {
                    $(location).attr("href", window.location.pathname);
                });
            } else {
                if (r.r == false) {
                    swal("Error", r.m, "error");
                } else {
                    swal("Error", "No se puede enviar por correo la boleta(s)", "error");
                }
            }
        },
    });

    return false;
}

function sendTicketByWhatsApp(event) {
    event.preventDefault();
    var phone = $('#dial-code').val() + $('#phone').val();
    var phoneConfirmation = $('#dial-code-confirmation').val() + $('#phone-confirmation').val();

    if (phone != phoneConfirmation) {
        swal("Advertencia", "Los números de WhatsApp no coinciden", "warning");
        return;
    }

    ticket_main_id = localStorage.getItem("ticket_main_id");
    var info = {
        ticket_main_id: ticket_main_id,
        phone: phone,
        tickets: tickets
    };

    $('#loading').show();
    $.ajax({
        url: "/flash_ticket/sendByWhatsApp",
        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) {
            $('#loading').hide();
            if (r.r) {
                swal(r.m, {
                    icon: "success",
                    buttons: {
                        Ok: "Aceptar",
                    },
                }).then((val) => {
                    $(location).attr("href", window.location.pathname);
                });
            } else {
                if (r.r == false) {
                    swal("Error", r.m, "error");
                } else {
                    swal("Error", "No se puede enviar por WhatsApp la boleta(s)", "error");
                }
            }
        },
        catch: function (e) {
            console.error(e);
            $('#loading').hide();
            swal("Error", e.message || "No se puede enviar por WhatsApp la boleta(s)", "error");
        }
    });

    return false;
}

function reloadPage() {
    $(location).attr("href", window.location.pathname);
}

function initIntlTelInput(phoneInputId, dialCodeInputId, countryCodeInputId) {
    const phoneInput = document.querySelector(phoneInputId);
    const dialCodeInput = document.querySelector(dialCodeInputId);
    const countryCodeInput = document.querySelector(countryCodeInputId);

    if (phoneInput && window.intlTelInput) {
        const iti = window.intlTelInput(phoneInput, {
            initialCountry: "co", // o "auto"
            preferredCountries: ["co", "us", "pa", "ec", "cl"],
            separateDialCode: true,
            utilsScript: "https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/js/utils.js",
        });

        if (dialCodeInput) dialCodeInput.value = iti.getSelectedCountryData().dialCode;
        if (countryCodeInput) countryCodeInput.value = iti.getSelectedCountryData().iso2;

        phoneInput.addEventListener("countrychange", function () {
            if (dialCodeInput) dialCodeInput.value = iti.getSelectedCountryData().dialCode;
            if (countryCodeInput) countryCodeInput.value = iti.getSelectedCountryData().iso2;
        });

        return iti;
    }
    return null;
}

const iti1 = initIntlTelInput("#phone", "#dial-code", "#country-code");
const iti2 = initIntlTelInput("#phone-confirmation", "#dial-code-confirmation", "#country-code-confirmation");

function isValidPhoneNumber(itiInstance) {
    return itiInstance && itiInstance.isValidNumber();
}