$("#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: "#btnIncluir",
          popover: {
            title: "Botão Incluir",
            description: "Clique aqui para iniciar o cadastro de um Historico.",
            position: "right",
          },
        },
        {
          element: "#tabelaHistorico",
          popover: {
            title: "Tabela CadHistorico",
            description: "Aqui estão os dados dos Historico cadastrados.",
            position: "top",
          },
        },
      ]);
      driver.start();
    });
  });
  
  $(document).ready(async function () {
  
    const permissaoUsuarioLogado = await permissaoAcessos("CADHISTORICO");
  
    $("#txtHistoricoConsulta").autocompleta(
      1, `JSON={ "tabela":"histcp", "camposSelect":[ "historico chave", "descricao descricao"], "where": null}`
    )
  
    $("#btn-historico").pesquisa(
      "#txtHistoricoConsulta",
      "HISTORICO",
      "DESCRICAO",
      `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"histcp", "camposSelect":[ "historico", "descricao"]}`,
      "Pesquisa Historico",
      "histcp"
    );
  
    $("#btn-limpa-historico").on("click", function () {
      $("#txtHistoricoConsulta").val("");
    });
  
    $("#btnFiltros").on("click", function () {
      $("#modal-filtros").modal("show");
    });
  
    $("#btnIncluir").on("click", function () {
      if (permissaoUsuarioLogado.INCLUI == 'S') {
        window.location.href = "cadhistorico/create";
      } else {
          msgAlertaSemConfirmacao("Sem permissão para incluir!");
      }
    });
  
    $("#btnConsultar").on("click", async function () {
      $("#modal-filtros").modal("hide");
      await ConsultaHistorico(true);
    });
  
    $("#btnLimparFiltros").on("click", async function () {
      $("#txtHistoricoConsulta").val("");
    });
  
    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>     ' +
        '    <button class="dropdown-item" type="button" title="Excluir" id="btn-excluir">Excluir</button>  ' +
        '</div>';
      return retorno;
    };
  
  
    ConsultaHistorico();
  
    async function ConsultaHistorico(bBotao = false) {
      try {
        let response;
        $.LoadingOverlay("show");
        let historico =
          pegaChave("#txtHistoricoConsulta") != ""
            ? ` AND HISTORICO = '${pegaChave("#txtHistoricoConsulta")}'`
            : "";
        if (bBotao) {
          response = await requisicao(
            "GET",
            "/Sisplan/Funcoes/V1/pesquisa?",
            `JSON={ "tabela":"histcp", "camposSelect":[ "historico", "descricao"], "where":  ["1=1 ${historico}"]}`,
            null
          );
        } else {
          response = await requisicao(
            "GET",
            "/Sisplan/Funcoes/V1/pesquisa?",
            'JSON={ "tabela":"histcp", "camposSelect":[ "historico", "descricao"], "where": null}',
            null
          );
        }
  
        if (!response) {
          $.LoadingOverlay("hide");
          return;
        }
  
        let jsonStr = await response.json();
        if (response.status != 200) {
          $.LoadingOverlay("hide");
          msgAlerta(jsonStr.RESULT[0].mensagem);
          return;
        }
  
        $("#tabelaHistorico").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: "HISTORICO",
            },
            {
              data: "DESCRICAO",
            },
          ],
          columnDefs: [
            {
              targets: [0], render: function (data, type, row) {
                return retornaBotaoOpcoes(data);
              }
            },
          ],
        });
  
        $.LoadingOverlay("hide");
      } catch (error) {
        console.error(error);
        $.LoadingOverlay("hide");
      }
    }
  
    $("#tabelaHistorico").on("click", "#btn-editar", async function () {
      
      if (permissaoUsuarioLogado.ALTERA == 'S') {
        let data = $("#tabelaHistorico").DataTable().row($(this).parents("tr")).data();
        let registroLiberado = await verificarRegistro("CADHISTORICO", data.HISTORICO);
        if (registroLiberado) {
          window.location.href = `cadhistorico/${data.HISTORICO}`;
        }
      } else {
          msgAlertaSemConfirmacao("Sem permissão para alterar!");
      }
      
    });
  
    $("#tabelaHistorico").on("dblclick", "tr", async function () {
      
      if (permissaoUsuarioLogado.ALTERA == 'S') {
        let data = $("#tabelaHistorico").DataTable().row($(this)).data();
        let registroLiberado = await verificarRegistro("CADHISTORICO", data.HISTORICO);
        if (registroLiberado) {
          window.location.href = `cadhistorico/${data.HISTORICO}`;
        }
      } else {
          msgAlertaSemConfirmacao("Sem permissão para alterar!");
      }
      
    });
  
    $('#tabelaHistorico').on('click', '#btn-excluir', async function () {
      
      if (permissaoUsuarioLogado.EXCLUI == 'S') {
          msgAlerta('Você realmente deseja excluir esse registro?', async () => {
          const data = $("#tabelaHistorico").DataTable().row($(this).parents("tr"));
          await excluiRegistro(data);
        });
      } else {
          msgAlertaSemConfirmacao("Sem permissão para excluir!");
      }
    });
  
    async function excluiRegistro(data) {
      try {
        $.LoadingOverlay("show");
        try {
          let valorLinha = data.data();
          let response = await requisicao("DELETE", "/Sisplan/Cadastros/v1/cadhistorico?", `HISTORICO=${encodeURIComponent(valorLinha.HISTORICO)}`, null);
          if (!response) {
            return;
          }
          if (response.status != 200) {
            let jsonStr = await response.json();
            msgAlerta(jsonStr.mensagem);
            return;
          }
  
          toastr.success("Exclusão efetuada com sucesso!", "Confirmação", {
            toastClass: "success",
            iconClasses: {
              error: "alert-error",
              info: "alert-info",
              success: "alert-success",
              warning: "alert-warning",
            },
            positionClass: "toast-top-center",
            progressBar: true,
            timeOut: 3000,
            fadeOut: 1000,
            onHidden() {
              data.remove().draw(false);
            },
          }).css({
            "margin-top": "20%",
            width: "500px",
            "max-width": "500px",
          });
  
        } catch (error) {
          console.error(error);
        }
      } finally {
        $.LoadingOverlay("hide");
      }
    }
  });