pedi2/resources/js/store/modules/login.js
2025-06-10 18:06:43 -03:00

81 lines
2.3 KiB
JavaScript
Vendored

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 = {
adminUrl() {
return window.location.pathname.startsWith('/admin');
},
mensajes() {
return {
mensaje: `Contraseña de ${getters.adminUrl() ? 'administración ' : ''}del barrio`,
ayuda: `Si no la sabés, consultá a ${getters.adminUrl() ? 'la comisión informática ' : 'tus compañerxs'}.`
};
},
urlRol() {
let split = window.location.pathname
.replace('login', '')
.split('/')
.filter(x => x.length);
return split[0] ?? 'pedido';
},
titulos() {
let rol = getters.urlRol();
switch (rol) {
case 'admin':
return { titulo: "Administración de Pedidos MPS", subtitlo: "administración de pedidos" };
case 'compras':
return { titulo: "Comisiones MPS", subtitlo: "página de comisiones" };
case 'pedido':
return { titulo: "Pedidos MPS", subtitlo: "aplicación de pedidos" };
default:
throw new Error("Url inválida");
}
},
};
export default {
namespaced: true,
state,
mutations,
actions,
getters,
};