$(document).ready(async function () {

  $('#txtBloqRet').autocompleta(1, `JSON={ "tabela":"PED_REGRAS", "camposSelect":[ "CODIGO CHAVE", "REGRA DESCRICAO"], "where": ["TIPO = 'M'"]}`);
  $('#btnBloqRet').pesquisa('#txtBloqRet', 'CODIGO', 'REGRA', `/sisplan/funcoes/v1/pesquisa?JSON={ "tabela":"PED_REGRAS", "camposSelect":[ "CODIGO", "REGRA" ], "where": ["TIPO = 'M'"]}`, 'Pesquisa Regra de Pedido', 'PED_REGRA');
  $("#btnLimpaBloqRet").on("click", function () {
    $("#txtBloqRet").val("");
  })

  $("#btnConfirmarBloqueio").on("click", async function () {
    $.LoadingOverlay("show");
    try {
      await incluirBloqueio();
      $("#txtBloqRet").val("");
      $("#modalIncluirBloqueio").modal("hide");
      $("#txtTitulo").val("");
      $("#txtObservacao").val("");
      $('#btnConsultar').trigger('click')
      criaMensagemSucesso("Bloqueio incluído com sucesso.");
    } catch (error) {
      console.error(error);
      msgAlerta(error.message);
    } finally {
      $.LoadingOverlay("hide");
    }
  })

  async function incluirBloqueio() {
    const codigoBloqueio = pegaChave("#txtBloqRet");

    if (codigoBloqueio == "") {
      throw new Error("Necessário inserir um bloqueio.");
    }

    const table = $("#tabelaPedido").DataTable();
    let linhasSelecionadas = table.rows(".selecionado").data().toArray();

    if (linhasSelecionadas.length === 0) {
      throw new Error("Selecione ao menos um pedido.");
    }

    const numerosUnicos = [...new Set(
      [...linhasSelecionadas].map(r => r.NUMERO)
    )];

    const idsUnicos = [...new Set(
      [...linhasSelecionadas].map(r => r.ID)
    )];

    const numerosFormatados = numerosUnicos.join(",");

    const IDUsuario = getCookie("id_usuario");
    const tela = $("#modalIncluirBloqueio").prop("tela");

    const params =
      `NUMERO_PEDIDO=${numerosFormatados}` +
      `&ID_PEDIDO=${idsUnicos[0]}` +
      `&ID_USUARIO=${IDUsuario}` +
      `&CODIGO_BLOQUEIO=${codigoBloqueio}` +
      `&TELA=${tela}` +
      `&TITULO=${encodeURIComponent($('#txtTitulo').val())}` +
      `&OBSERVACAO=${encodeURIComponent($('#txtObservacao').val())}`;

    const response = await requisicao(
      'POST',
      '/sisplan/pedido/v1/incluirbloqueio?',
      params,
      "",
      120000
    );

    if (!response) {
      throw new Error("Não foi possível gravar o bloqueio.");
    }

    if (response.status != 200) {
      const json = await response.json();
      throw new Error(json.mensagem);
    }
  }

})