$(document).ready(async function () {
  $('#modalHistorico').on('hide.bs.modal', function () {
    ModalHistorico.limparModal()
  })
})

window.ModalHistorico = window.ModalHistorico || {}

ModalHistorico.numero = null

ModalHistorico.buscarDados = async function (numero) {
  try {
    $.LoadingOverlay('show')

    const response = await requisicao('GET', '/sisplan/centralcompras/compra/v1/historico?', `NUMERO=${numero}`, '', 90000)
    const dados = await response.json()

    if (!dados) {
      throw new Error('Não foi possível buscar os dados.')
    }

    const { mensagem } = dados
    if (mensagem?.codigo !== 200) {
      throw mensagem?.mensagem
    }

    const { resultado } = dados

    return resultado

  } catch (error) {
    console.error(error)
    msgErro(error)
  } finally {
    $.LoadingOverlay('hide')
  }
}

ModalHistorico.carregar = function ({ numero, historico }) {
  try {
    ModalHistorico.numero = numero
    ModalHistorico.criarTabela({ dados: historico })
    $('#modalHistorico').modal('show')
  } catch (error) {
    console.error(error)
    msgErro('Não foi possível carregar os dados.')
  }
}

ModalHistorico.criarTabela = function ({ dados }) {
  if ($.fn.DataTable.isDataTable('#tabelaHistorico')) {
    $('#tabelaHistorico').DataTable().destroy()
    $('#tabelaHistorico').empty()
  }

  const columns = [
    {
      data: 'usuario',
      title: 'Usuário',
    },
    {
      data: 'data',
      title: 'Data/Hora',
      render: function (data) {
        return retornarDataISOEmYMD({ dataISO: data, usarUTC: true, reverso: true, separadorData: '/', incluirHora: true })
      }
    },
    {
      data: 'descricaoAcao',
      title: 'Ação',
    },
    {
      data: 'motivo',
      title: 'Motivo',
    }
  ]

  const tabela = $('#tabelaHistorico').DataTable({
    sort: false,
    paging: false,
    destroy: true,
    lengthChange: false,
    filter: false,
    info: false,
    ordering: false,
    sorting: false,
    order: false,
    autoWidth: true,
    data: dados ?? [],
    columns,
    scrollX: true,
    scrollY: '50vh',
  })

  setTimeout(() => {
    tabela.columns.adjust()
  }, 300)
}

ModalHistorico.limparModal = () => {
  if ($.fn.DataTable.isDataTable('#tabelaHistorico')) {
    $('#tabelaHistorico').DataTable().destroy()
    $('#tabelaHistorico').empty()
  }
}