$(document).ready(async function () {
  componenteFiltro('entidade', false, false, 'FornecedorSenhaSupervisor')

  $('#formAlterarComSenhaSupervisor').validate({
    errorElement: 'span',
    errorPlacement(error, element) {
      error.addClass('invalid-feedback')
      element.closest('.form-group').append(error)
    },
    highlight(element) {
      $(element).addClass('is-invalid')
    },
    unhighlight(element) {
      $(element).removeClass('is-invalid')
    },
    submitHandler: async (_form, event) => {
      event.preventDefault()
      await senhaSupervisor(
        '',
        () => {
          const dados = retornarDadosConfirmar()
          confirmar(dados)
        },
      )
    }
  })

  const confirmar = (dados) => {
    $.LoadingOverlay('show')
    requisicao(
      'PUT',
      `/sisplan/centralcompras/compra/v1/capa?`,
      'SENHA_SUPERVISOR=true',
      JSON.stringify(dados),
      3600000
    ).then(async (response) => {
      const json = await response.json()
      if (json) {
        const { mensagem } = json
        if (mensagem?.codigo !== 200) {
          throw mensagem?.mensagem
        }

        toastr.success("Dados gravados com sucesso!", "Confirmação", {
          toastClass: "alert",
          iconClasses: {
            error: "alert-error",
            info: "alert-info",
            success: "alert-success",
            warning: "alert-warning",
          },
          positionClass: "toast-top-center",
          progressBar: true,
          timeOut: 1000,
          fadeOut: 1000,
          onShown() {
            const { App } = ModalAlterarComSenhaSupervisor
            App.consultar()
            $('#modalAlterarComSenhaSupervisor').modal('hide')
          },
        }).css({
          "margin-top": "20%",
          width: "500px",
          "max-width": "500px",
        })
      }
    }).finally(() => $.LoadingOverlay('hide'))
  }

  const retornarDadosConfirmar = () => {
    const id = $('#txtIdSenhaSupervisor').val()
    const dataEntrega = $('#txtEntregaSenhaSupervisor').val()
    const fornecedor = retornarChaveDescricao('#txtFornecedorSenhaSupervisor')

    return {
      id,
      dataEntrega,
      fornecedor: fornecedor.chave,
      descricaoFornecedor: fornecedor.descricao,
    }
  }

  $('#modalAlterarComSenhaSupervisor').on('shown.bs.modal', () => ModalAlterarComSenhaSupervisor.carregarApp($('#selectStatus').val()))

  $('#modalAlterarComSenhaSupervisor').on('hide.bs.modal', () => {
    ModalAlterarComSenhaSupervisor.limparModal()
  })
})

window.ModalAlterarComSenhaSupervisor = window.ModalAlterarComSenhaSupervisor || {}

ModalAlterarComSenhaSupervisor.App = null

ModalAlterarComSenhaSupervisor.carregarApp = (status) => {
  switch (status) {
    case 'L':
      ModalAlterarComSenhaSupervisor.App = ComprasLiberadas
      break
    case 'E':
      ModalAlterarComSenhaSupervisor.App = ComprasEnviadas
      break
    default:
      break
  }
}

ModalAlterarComSenhaSupervisor.dadosCapa = {}

ModalAlterarComSenhaSupervisor.limparModal = () => {
  ModalAlterarComSenhaSupervisor.limparCampos()
}

ModalAlterarComSenhaSupervisor.carregar = (dadosEditar, situacao) => {
  ModalAlterarComSenhaSupervisor.preencherDados(dadosEditar)
  $('#selectStatus').val(situacao)
  $('#modalAlterarComSenhaSupervisor').modal('show')
  if (situacao === 'E') {
    $('#txtFornecedorSenhaSupervisor').prop('disabled', true)
    $('#btnFornecedorSenhaSupervisor').prop('disabled', true)
    $('#btnLimpaFornecedorSenhaSupervisor').prop('disabled', true)
  }
}

ModalAlterarComSenhaSupervisor.preencherDados = (dados) => {
  ModalAlterarComSenhaSupervisor.preencherCamposCapa(dados)
  ModalAlterarComSenhaSupervisor.dadosCapa = dados
}

ModalAlterarComSenhaSupervisor.preencherCamposCapa = (dados) => {
  if (!dados || !dados.id) return
  insereValor('#txtIdSenhaSupervisor', dados.id)
  dados.dataEntrega ? insereValor('#txtEntregaSenhaSupervisor', dados.dataEntrega.split('T')[0]) : $('#txtEntregaSenhaSupervisor').val('')
  dados.fornecedor ? insereValor('#txtFornecedorSenhaSupervisor', dados.fornecedor, dados.nomeFornecedor) : $('#txtFornecedorSenhaSupervisor').val('')
}

ModalAlterarComSenhaSupervisor.limparCampos = () => $('.campoSenhaSupervisor').val('')