const contaCorrente_ = {
    numero: '',
    nome: '',
    agencia: '',
    banco: {
      codigo: '',
      descricao: '',
    },
}

export default{

    namespaced: true,
  
    //equivalente ao data
    state: {
      contasCorrentes: [],
      contaCorrente: structuredClone(contaCorrente_),
      constantes: constantes,
      modoEdicao: false,
      carregando: false,
      totalContacorrentes: 0,
    },
  
    getters: {
      estaEditando(state) {
        return state.modoEdicao;
      },
      textoBtnConfirmar(state) {
        if (state.modoEdicao) {
          return state.constantes.BOTAO_SALVAR_EDICAO;
        } else {
          return state.constantes.BOTAO_SALVAR_NOVO;
        }
      },
    },

    actions: {
      async listar({ commit }, options) {
        try {
          commit('SET_CARREGANDO');
          const response = await contasCorrentesApi.listar(options);
          commit('SET_CONTASCORRENTES', response.contasCorrentes);
          commit('SET_TOTAL_CONTASCORRENTES', response.total);
        } catch (error) {
          commit('SET_CONTACORRENTE', []);
          commit('setMensagemErro', 'Não foi possível listar as Contas correntes.', { root: true });
          throw error;
        } finally {
          commit('SET_CARREGANDO', false);
        }
      },
    },

    mutations: {
      //ok
      setState(state, newState) {
        Object.keys(newState).forEach((key) => {
          state[key] = newState[key];
        });
      },
      //ok
      SET_CARREGANDO(state, status = true) {
        state.carregando = status;
      },
      //ok
      SET_CONTASCORRENTES(state, contasCorrentes) {
        state.contasCorrentes = contasCorrentes;
        state.carregando = false;
      },
      //ok
      SET_TOTAL_CONTASCORRENTES(state, total) {
        state.totalContacorrentes = total;
      },
      //ok
      SET_CONTACORRENTE(state, contaCorrente) {
        state.contaCorrente = contaCorrente;
      },
      SET_NCM(state, ncm) {
        state.mva.ncm = ncm;
        state.carregando = false;
      },
      EXCLUIR_MVA(state, id) {
        const index = state.mvas.findIndex((mva) => mva._id == id);
        if (index > -1) {
          state.mvas.splice(index, 1);
        }
        state.carregando = false;
      },
      novo(state) {
        state.modoEdicao = false;
        state.mva = structuredClone(mva_)
        state.carregando = false;
      },
      editar(state, editar) {
        state.modoEdicao = true;
        state.mva = structuredClone(editar);
        state.carregando = false;
      },
      ADICIONAR_MVA(state, mva) {
        state.mvas.unshift(mva);
        state.carregando = false;
      },
      ATUALIZAR_MVA(state, mva) {
        let mva_encontrado = state.mvas.find((mva_) => mva_.id == mva.id);
        if (mva_encontrado) {
          mva_encontrado = mva;
        }
        state.carregando = false;
      },
  
    },

}