import axios from "axios"; const state = { regiones: null, grupos_de_compra: null, region_elegida: null, grupo_de_compra_elegido: null, rol: null, }; const mutations = { setRegiones(state, { regiones }) { state.regiones = regiones; }, setRegionYBarrios(state, { region, grupos_de_compra }) { state.region_elegida = region; state.grupos_de_compra = grupos_de_compra; }, selectGrupoDeCompra(state, { grupo_de_compra }) { state.grupo_de_compra_elegido = grupo_de_compra; }, setRol(state, { rol }) { state.rol = rol; }, }; const actions = { async getRegiones({ commit }) { const response = await axios.get("/api/regiones"); commit('setRegiones', { regiones: response.data }); }, async selectRegion({ commit }, { region }) { const response = await axios.get(`/api/regiones/${region}`); commit('setRegionYBarrios', { region: region, grupos_de_compra: response.data }); }, async getRol({ commit }) { const response = await axios.get("/user/rol"); commit('setRol', { rol: response.data.rol }); } }; const getters = { urlRol() { let split = window.location.pathname .replace('login', '') .split('/') .filter(x => x.length); return split[0] ?? 'pedido'; }, textos() { let rol = getters.urlRol(); switch (rol) { case 'admin': return { titulo: "Administración de Pedidos MPS", subtitlo: "administración de pedidos", password: "Contraseña de administración del barrio", ayuda: "Si no la sabés, consultá a la comisión informática", label: "Seleccioná tu región" }; case 'compras': return { titulo: "Comisiones MPS", subtitlo: "página de comisiones", password: "Contraseña del barrio", ayuda: "Si no la sabés, consultá a tus compañerxs", label: "Usuario" }; case 'pedido': return { titulo: "Pedidos MPS", subtitlo: "aplicación de pedidos", password: "Contraseña", ayuda: "Si no la sabés, consultá a la comisión informática", label: "Seleccioná tu región" }; default: throw new Error("Url inválida"); } }, estilos() { let rol = getters.urlRol(); switch (rol) { case 'admin': return { fondo: "has-background-danger", texto: "has-text-white", botones: "is-warning", }; case 'compras': return { fondo: "has-background-warning", texto: "", botones: "is-dark" }; case 'pedido': return { fondo: "", texto: "", botones: "is-danger" }; default: throw new Error("Url inválida"); } }, opcionesLogin() { let rol = getters.urlRol(); switch (rol) { case 'admin': return [ { nombre: "Pedidos", href: "/" }, { nombre: "Compras", href: "/compras" } ]; case 'compras': return [ { nombre: "Pedidos", href: "/" }, { nombre: "Administración", href: "/admin" } ]; case 'pedido': return [ { nombre: "Administración", href: "/admin" }, { nombre: "Compras", href: "/compras" } ]; default: throw new Error("Url inválida"); } }, nombre() { return `${state.grupo_de_compra_elegido}${ getters.urlRol() === 'admin' ? '_admin' : ''}`; } }; export default { namespaced: true, state, mutations, actions, getters, };