From a512f8e162e9273cf09d2f55eaace914eaad0df2 Mon Sep 17 00:00:00 2001
From: ale <ale.tasistro@gmail.com>
Date: Wed, 21 May 2025 18:17:36 -0300
Subject: [PATCH] Agregado modulo productos + cambios de nombre

---
 resources/js/store/index.js             | 10 +++--
 resources/js/store/modules/barrio.js    |  1 -
 resources/js/store/modules/productos.js | 59 +++++++++++++++++++++++++
 3 files changed, 65 insertions(+), 5 deletions(-)
 create mode 100644 resources/js/store/modules/productos.js

diff --git a/resources/js/store/index.js b/resources/js/store/index.js
index 240db1b..b184b7f 100644
--- a/resources/js/store/index.js
+++ b/resources/js/store/index.js
@@ -2,8 +2,9 @@ import Vue from 'vue';
 import Vuex from 'vuex';
 import admin from "./modules/admin";
 import login from "./modules/login";
-import chismosa from "./modules/pedido";
-import session from "./modules/barrio";
+import pedido from "./modules/pedido";
+import barrio from "./modules/barrio";
+import productos from "./modules/productos";
 
 Vue.use(Vuex);
 
@@ -11,7 +12,8 @@ export default new Vuex.Store({
     modules: {
         admin,
         login,
-        chismosa,
-        session,
+        pedido,
+        barrio,
+        productos,
     },
 });
diff --git a/resources/js/store/modules/barrio.js b/resources/js/store/modules/barrio.js
index 5d9954a..4b0df5b 100644
--- a/resources/js/store/modules/barrio.js
+++ b/resources/js/store/modules/barrio.js
@@ -1,7 +1,6 @@
 import axios from "axios";
 
 const state = {
-    lastFetch: null,
     grupo_de_compra_id: null,
     grupo_de_compra: null,
     devoluciones_habilitadas: null,
diff --git a/resources/js/store/modules/productos.js b/resources/js/store/modules/productos.js
new file mode 100644
index 0000000..3ff6efe
--- /dev/null
+++ b/resources/js/store/modules/productos.js
@@ -0,0 +1,59 @@
+import axios from "axios";
+
+const state = {
+    lastFetch: null,
+    categorias: [],
+    productos: [],
+    filtro: null,
+};
+
+const mutations = {
+    setCategorias(state, categorias) {
+        state.lastFetch = new Date();
+        state.categorias = categorias;
+        console.log(state);
+    },
+    setProductos(state, productos) {
+        state.lastFetch = new Date();
+        state.productos = productos;
+    },
+    setFiltro(state, filtro) {
+        state.lastFetch = new Date();
+        state.filtro = filtro;
+    },
+};
+
+const actions = {
+    async init({ dispatch }) {
+        if (state.lastFetch)
+            return;
+        dispatch('getCategorias');
+        dispatch('getProductos');
+    },
+    async getCategorias({ commit }) {
+        const response = await axios.get('api/categorias');
+        commit('setCategorias', response.data);
+    },
+    async getProductos({ commit }) {
+        const response = await axios.get("/api/productos");
+        commit('setFiltro', null);
+        commit('setProductos', response.data.data);
+    },
+    async seleccionarCategoria({ commit }, { categoria }) {
+        const response = await axios.get("/api/productos");
+        commit('setFiltro', { clave: "categoria", valor: categoria });
+        commit('setProductos', response.data.data);
+    },
+    async filtrarProductos({ commit }, { filtro, valor }) {
+        const response = await axios.get("/api/productos");
+        commit('setFiltro', { clave: filtro, valor: valor });
+        commit('setProductos', response.data.data);
+    }
+};
+
+export default {
+    namespaced: true,
+    state,
+    mutations,
+    actions,
+};