$('#tutorial').on('click', function () {
    $(document).ready(async function () {
        const driver = new Driver({
            doneBtnText: 'Sair',
            closeBtnText: 'Fechar',
            nextBtnText: 'Próximo',
            prevBtnText: 'Anterior',
            allowClose: false
        });
        driver.defineSteps([

            {
                element: '#btnFiltros',
                popover: {
                    title: 'Botão Filtros',
                    description: 'Clique aqui para filtrar a consulta.',
                    position: 'right'
                }
            },
            {
                element: '#btnNovaOperadora',
                popover: {
                    title: 'Botão Incluir',
                    description: 'Clique aqui para iniciar o cadastro de uma operação fiscal.',
                    position: 'right'
                }
            },
            {
                element: '#tabelaInfoTef',
                popover: {
                    title: 'Tabela Regras',
                    description: 'Aqui estão os dados das operações fiscais cadastradas.',
                    position: 'top'
                }
            }
        ]);
        driver.start();
    });
});
$(document).ready(async function () {
    const permissaoUsuarioLogado = await permissaoAcessos("OPERADORATEF");

    $('#txtEmpAdmin').autocompleta(4, `JSON={ "tabela":"ENTIDADE", "camposSelect":[ "CODCLI CHAVE", "NOME DESCRICAO"], "where": null}`);
    $('#btnEmpAdmin').pesquisa('#txtEmpAdmin', 'CODCLI', 'NOME', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"ENTIDADE", "camposSelect":["CODCLI", "NOME"]}`, 'Pesquisa Entidade', 'ENTIDADE');
    $('#btnAEmpAdmin').on('click', function () {
        $('#txtEmpAdmin').val('');
    });

    $('#btnFiltros').on('click', function () {
        $('#modal-filtros').modal('show');
    });

    $('#btnNovaOperadora').on('click', function () {
        if (permissaoUsuarioLogado.INCLUI == 'S') {
            window.location.href = "operadoratef/create";
        } else {
            msgAlertaSemConfirmacao("Sem permissão para incluir!");
        }
    });

    function retornaBotaoOpcoes() {
        return '<div class="divBtnOpcoes"> ' +
            '    <button class="botaoOpcoes" type="button" title="Editar" id="btn-editar"><span class="fas fa-edit" style="color:green"></span></button>      ' +
            '   </div>';
    }

    function retornaBotaoOpcoes(data) {
        var retorno = '<div style="text-align:start;"> ' +
            '    <button class="btn btn-info btn-sm dropdown-toggle btnVerificaOpcoes" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> ' +
            '      ' + data + ' ' +
            '    </button> ' +
            '    <div class="dropdown-menu"> ' +
            '    <button class="dropdown-item" type="button" title="Editar" id="btn-editar">Editar</button>     ' +
            '</div>';
        return retorno;
    };

    consultaOperadora();

    $('#btnConsultar').on('click', async function () {
        $('#modal-filtros').modal('hide');
        await consultaOperadora();
    });

    $('#btnLimparFiltros').on('click', async function () {
        $('#txtEmpAdmin').val('');
        $('#txtTaxaOp').val('');
        $('#txtOperadora').val('');
    });

    async function consultaOperadora() {
        try {
            $.LoadingOverlay("show");
            try {
                const empAdmin = pegaChave('#txtEmpAdmin');
                const operadora = $('#txtOperadora').val() != '' ? ` AND TEF_OPERADORA.OPERADORA = '${$('#txtOperadora').val()}'` : '';
                const taxa = $('#txtTaxaOp').val() != '' ? ` AND TEF_OPERADORA.TAXA = '${$('#txtTaxaOp').val()}'` : '';
                const empId = ` AND TEF_OPERADORA.EMP_ID = '${getCookie('emp_id')}'`;

                let responseEntidade = await requisicao('GET', '/Sisplan/Funcoes/v1/pesquisa?', `JSON={ "tabela":"ENTIDADE", "camposSelect":["ID_ENT", "CODCLI", "CODCLI"], 
                "where": ["CODCLI = '${empAdmin}'"]}`, null);

                let jsonEntidade = await responseEntidade.json();

                const id_entidade = jsonEntidade.RESULT[0].length == 0 ? '' : ` AND TEF_OPERADORA.ID_ENT = '${jsonEntidade.RESULT[0][0].ID_ENT}'`;

                let response = await requisicao('GET', '/Sisplan/Funcoes/V1/pesquisa?', `JSON={ "tabela":"TEF_OPERADORA", "camposSelect":[ "TEF_OPERADORA.ID", "TEF_OPERADORA.ID_ENT", "TEF_OPERADORA.OPERADORA", "TEF_OPERADORA.TAXA", "ENTIDADE.NOME AS NOME_ENT"], 
                "leftjoin": [{ "tabela" : "ENTIDADE", "condicao" : "ENTIDADE.ID_ENT = TEF_OPERADORA.ID_ENT" }],  
                "where": ["1=1 ${id_entidade} ${operadora} ${taxa} ${empId}"]}`, null);

                if (!response) {
                    $.LoadingOverlay("hide");
                    return;
                }

                let jsonStr = await response.json();
                if (response.status != 200) {
                    $.LoadingOverlay("hide");
                    msgErro(jsonStr.RESULT[0].mensagem);
                    return;
                }

                $('#tabelaInfoTef').DataTable({
                    destroy: true,
                    lengthChange: false,
                    serverside: true,
                    "language": {
                        "sEmptyTable": "Nenhum registro encontrado",
                        "sInfo": "_TOTAL_ registros",
                        "sInfoEmpty": " 0 registros",
                        "sInfoFiltered": "(Filtrados de _MAX_ registros)",
                        "sInfoPostFix": "",
                        "sInfoThousands": ".",
                        "sLengthMenu": "_MENU_ resultados",
                        "sLoadingRecords": "Carregando...",
                        "sProcessing": "Processando...",
                        "sZeroRecords": "Nenhum registro encontrado",
                        "sSearch": "Pesquisar",
                        "oPaginate": {
                            "sNext": "Próximo",
                            "sPrevious": "Anterior",
                            "sFirst": "Primeiro",
                            "sLast": "Último"
                        },
                        "oAria": {
                            "sSortAscending": ": Ordenar colunas de forma ascendente",
                            "sSortDescending": ": Ordenar colunas de forma descendente"
                        }
                    },

                    "autoWidth": true,
                    "data": jsonStr.RESULT[0],
                    "columns": [{
                        "data": "ID"
                    },
                    {
                        "data": "OPERADORA"
                    },
                    {
                        "data": "ID_ENT"
                    },
                    {
                        "data": "NOME_ENT"
                    },
                    {
                        "data": "TAXA"
                    },
                    ],
                    "columnDefs": [{
                        targets: [0], render: function (data, type, row) {
                            return retornaBotaoOpcoes(data);
                        }
                    }]
                });

            } catch (error) {
                msgErro('Erro ao consultar as operadoras.');
            }
        } finally {
            $.LoadingOverlay("hide");
        }
    }

    $('#tabelaInfoTef').on('click', '#btn-editar', async function () {
        if (permissaoUsuarioLogado.ALTERA == 'S') {
            let data = $('#tabelaInfoTef').DataTable().row($(this).parents('tr')).data();
            var registroLiberado = await verificarRegistro('OPERADORATEF', data.ID)
            if (registroLiberado) {
                window.location.href = `operadoratef/${data.ID}`;
            }
        } else {
            msgAlertaSemConfirmacao("Sem permissão para alterar!");
        }
    });

    $('#tabelaInfoTef').on('dblclick', 'tr', async function () {
        if (permissaoUsuarioLogado.ALTERA == 'S') {
            let data = $('#tabelaInfoTef').DataTable().row($(this)).data();
            var registroLiberado = await verificarRegistro('OPERADORATEF', data.ID)
            if (registroLiberado) {
                window.location.href = `operadoratef/${data.ID}`;
            }
        } else {
            msgAlertaSemConfirmacao("Sem permissão para alterar!");
        }
    });

});