import axios from "axios"; const state = { lastFetch: undefined, grupos_de_compra: [], parametros: [], grupo_de_compra_actual: undefined, grupo_de_compra_nuevo: false, }; const mutations = { setGruposDeCompra(state, { data }) { state.grupos_de_compra = data; state.lastFetch = new Date(); }, setParametros(state, parametros) { state.parametros = parametros; state.parametros.forEach( p => p.valor = Number.parseInt(p.valor) ); }, actualizarParametro(state, { parametro_id, valor }) { state.parametros.find(p => p.id === parametro_id).valor = valor; }, 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; }, seleccionarGrupoDeCompra(state, { grupo_de_compra }) { state.grupo_de_compra_actual = grupo_de_compra; if (!grupo_de_compra) state.grupo_de_compra_nuevo = false; }, actualizarGrupoDeCompra(state, { gdc_id, nombre, region }) { const barrio = state.grupos_de_compra.find(gdc => gdc.id === gdc_id); const i = state.grupos_de_compra.indexOf(barrio); if (nombre) state.grupos_de_compra[i].nombre = nombre; if (region) state.grupos_de_compra[i].region = region; }, grupoDeCompraNuevo(state) { state.grupo_de_compra_actual = {}; state.grupo_de_compra_nuevo = true; }, agregarGrupoDeCompra(state, grupo_de_compra) { state.grupos_de_compra.push(grupo_de_compra); }, }; const actions = { async getGruposDeCompra({ commit }) { const response = await axios.get('/api/grupos-de-compra/saldos'); commit('setGruposDeCompra', response.data); }, async getParametros({ commit }) { const response = await axios.get('/api/parametros'); commit('setParametros', response.data); }, async cambiarParametro({ commit, dispatch }, { parametro_id, valor }) { try { await axios.put( `/comisiones/parametros/${parametro_id}`, { valor: valor } ); commit('actualizarParametro', { parametro_id, valor }); dispatch("ui/toast", { mensaje: 'Parámetro modificado con éxito' }, { root: true }); } catch (error) { dispatch("ui/error", { error: error }, { root: true }); } }, 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 }); } }, async modificarBarrio({ commit, dispatch }, { gdc_id, nombre, region, passBarrio, passAdmin, passOllas }) { try { const data = { nombre: nombre, region: region, passBarrio: passBarrio, passAdmin: passAdmin, passOllas: passOllas }; await axios.put(`/comisiones/grupos-de-compra/${gdc_id}`, data); commit('actualizarGrupoDeCompra', { gdc_id: gdc_id, nombre: nombre, region: region }); dispatch("ui/toast", { mensaje: 'Barrio modificado con éxito'}, { root: true }); } catch (error) { console.log(error); dispatch("ui/error", { error: error }, { root: true }); } }, async crearBarrio({ commit, dispatch }, data) { try { const response = await axios.post(`/comisiones/grupos-de-compra/`, data); commit('agregarGrupoDeCompra', response.data.data); dispatch("ui/toast", { mensaje: 'Barrio agregado 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, };