window.PerfilSolicitacoes = window.PerfilSolicitacoes || {}

PerfilSolicitacoes.preencherFiltrosPerfilCompras = async function (sufixo = '') {
  $.LoadingOverlay('show')
  try {
    const dados = await PerfilSolicitacoes.buscarFiltrosPerfilCompras()

    if (!dados) {
      msgErro(
        'Perfil de compras não cadastrado para o usuário logado, impossível continuar.',
        () => window.history.back(),
        () => window.history.back(),
      )
      return false
    }

    if (dados.centrosCusto) {
      dados.centrosCusto.forEach((item) => adicionaValorPadraoVarios(`centroCusto${sufixo}`, item?.codigo, item?.descricao))
      $(`#txtCentroCusto${sufixo}`).prop('disabled', true)
      $(`#btnCentroCusto${sufixo}`).prop('disabled', true)
      $(`#btnLimpaCentroCusto${sufixo}`).prop('disabled', true)
    }
    if (dados.tipos) {
      dados.tipos.forEach((item) => adicionaValorPadraoVarios(`tipo${sufixo}`, item?.codigo, item?.descricao))
      $(`#txtTipo${sufixo}`).prop('disabled', true)
      $(`#btnTipo${sufixo}`).prop('disabled', true)
      $(`#btnLimpaTipo${sufixo}`).prop('disabled', true)
    }
    if (dados.gruposMaterial) {
      dados.gruposMaterial.forEach((item) => adicionaValorPadraoVarios(`grupoMaterial${sufixo}`, item?.codigo, item?.descricao))
      $(`#txtGrupoMaterial${sufixo}`).prop('disabled', true)
      $(`#btnGrupoMaterial${sufixo}`).prop('disabled', true)
      $(`#btnLimpaGrupoMaterial${sufixo}`).prop('disabled', true)
    }
    if (dados.gruposProduto) {
      dados.gruposProduto.forEach((item) => adicionaValorPadraoVarios(`grupoProduto${sufixo}`, item?.codigo, item?.descricao))
      $(`#txtGrupoProduto${sufixo}`).prop('disabled', true)
      $(`#btnGrupoProduto${sufixo}`).prop('disabled', true)
      $(`#btnLimpaGrupoProduto${sufixo}`).prop('disabled', true)
    }
    if (dados.gruposServico) {
      dados.gruposServico.forEach((item) => adicionaValorPadraoVarios(`grupoServico${sufixo}`, item?.codigo, item?.descricao))
      $(`#txtGrupoServico${sufixo}`).prop('disabled', true)
      $(`#btnGrupoServico${sufixo}`).prop('disabled', true)
      $(`#btnLimpaGrupoServico${sufixo}`).prop('disabled', true)
    }
    if (dados.subgruposMaterial) {
      dados.subgruposMaterial.forEach((item) => adicionaValorPadraoVarios(`subgrupoMaterial${sufixo}`, item?.codigo, item?.descricao))
      $(`#txtSubgrupoMaterial${sufixo}`).prop('disabled', true)
      $(`#btnSubgrupoMaterial${sufixo}`).prop('disabled', true)
      $(`#btnLimpaSubgrupoMaterial${sufixo}`).prop('disabled', true)
    }

    return true
  } catch (error) {
    console.error(error)
    msgErro('Não foi possível preencher os filtros do perfil de compras.')
    return false
  } finally {
    $.LoadingOverlay('hide')
  }
}

PerfilSolicitacoes.buscarFiltrosPerfilCompras = async function () {
  const response = await requisicao(
    'GET',
    `/sisplan/centralcompras/solicitacao/v1/filtrosperfil?`,
    `ID=${getCookie('id_usuario')}`,
    '',
    3600000
  )

  const json = await response.json()

  if (json) {
    const { resultado, mensagem } = json
    if (mensagem?.codigo !== 200) {
      throw mensagem?.mensagem
    }

    return resultado
  }
}

PerfilSolicitacoes.buscarFiltrosPerfilCompras = async function () {
  const response = await requisicao(
    'GET',
    `/sisplan/centralcompras/solicitacao/v1/filtrosperfil?`,
    `ID=${getCookie('id_usuario')}`,
    '',
    3600000
  )

  const json = await response.json()

  if (json) {
    const { resultado, mensagem } = json
    if (mensagem?.codigo !== 200) {
      throw mensagem?.mensagem
    }

    return resultado
  }
}