import axios from "axios";

const state = {
    grupos_de_compra: [],
};

const mutations = {
    setGruposDeCompra(state, { data }) {
        state.grupos_de_compra = data;
    },
    setSaldo(state, { gdc_id, saldo }) {
        const barrio = state.grupos_de_compra.find(gdc => gdc.id === gdc_id);
        const i = state.grupos_de_compra.indexOf(barrio);
        state.grupos_de_compra[i].saldo = saldo;
    },
};

const actions = {
    async getGruposDeCompra({ commit }) {
        const response = await axios.get('/api/grupos-de-compra/saldos');
        commit('setGruposDeCompra', response.data);
    },
    async setSaldo({ commit, dispatch }, { gdc_id, saldo }) {
        try {
            await axios.post(
                "api/grupos-de-compra/" + gdc_id + "/saldo",
                { saldo: saldo }
            );
            commit('setSaldo', { gdc_id: gdc_id, saldo: saldo });
            dispatch("ui/toast", { mensaje: 'Saldo modificado con éxito' }, { root: true });
        } catch (error) {
            dispatch("ui/error", { error: error }, { root: true });
        }
    },
    async cargarSaldos({ commit, dispatch }, formData) {
        try {
            const response = await axios.post("/comisiones/saldos", formData, {
                headers: {
                    "Content-Type": "multipart/form-data",
                },
            });
            commit('setGruposDeCompra', response);
            dispatch("ui/toast", { mensaje: 'Saldos cargados con éxito' }, { root: true });
        } catch (error) {
            console.log(error);
            dispatch("ui/error", { error: error }, { root: true });
        }
    },
};

const getters = {
    saldo() {
        return (gdc_id) => state.grupos_de_compra.find(gdc => gdc.id === gdc_id)?.saldo ?? 0;
    },
};

export default {
    namespaced: true,
    state,
    mutations,
    actions,
    getters,
};