From a485994a72c52ab67d7459b176c2ffef2c666e13 Mon Sep 17 00:00:00 2001
From: ale <ale.tasistro@gmail.com>
Date: Sun, 18 May 2025 17:34:14 -0300
Subject: [PATCH] =?UTF-8?q?Agregada=20store=20de=20vuex=20para=20guardar?=
 =?UTF-8?q?=20informaci=C3=B3n=20de=20la=20sesi=C3=B3n=20tras=20login=20+?=
 =?UTF-8?q?=20ruta=20y=20controller=20+=20resource=20reducido=20de=20grupo?=
 =?UTF-8?q?=20de=20compra=20para=20pedidos?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../Api/GrupoDeCompraController.php           |  5 +++
 app/Http/Controllers/UserController.php       | 39 +++++++++++++++++++
 .../GrupoDeCompraReducidoResource.php         | 22 +++++++++++
 resources/js/app.js                           |  2 +
 resources/js/store/index.js                   | 11 ++++++
 resources/js/store/modules/session.js         | 32 +++++++++++++++
 routes/web.php                                |  4 ++
 7 files changed, 115 insertions(+)
 create mode 100644 app/Http/Controllers/UserController.php
 create mode 100644 app/Http/Resources/GrupoDeCompraReducidoResource.php
 create mode 100644 resources/js/store/index.js
 create mode 100644 resources/js/store/modules/session.js

diff --git a/app/Http/Controllers/Api/GrupoDeCompraController.php b/app/Http/Controllers/Api/GrupoDeCompraController.php
index 58f88d5..577c83a 100644
--- a/app/Http/Controllers/Api/GrupoDeCompraController.php
+++ b/app/Http/Controllers/Api/GrupoDeCompraController.php
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api;
 
 use App\GrupoDeCompra;
 use App\Http\Controllers\Controller;
+use App\Http\Resources\GrupoDeCompraReducidoResource;
 use App\Http\Resources\GrupoDeCompraResource;
 
 class GrupoDeCompraController extends Controller
@@ -16,4 +17,8 @@ class GrupoDeCompraController extends Controller
     {
         return new GrupoDeCompraResource($grupoDeCompra);
     }
+    public function reducido(GrupoDeCompra $grupoDeCompra)
+    {
+        return new GrupoDeCompraReducidoResource($grupoDeCompra);
+    }
 }
diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php
new file mode 100644
index 0000000..6a5d79a
--- /dev/null
+++ b/app/Http/Controllers/UserController.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\GrupoDeCompra;
+use App\Http\Resources\GrupoDeCompraReducidoResource;
+use App\Http\Resources\GrupoDeCompraResource;
+use App\UserRole;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
+use App\User;
+use Illuminate\Support\Facades\Log;
+
+class UserController extends Controller
+{
+    public function session(Request $request)
+    {
+        $user = Auth::user();
+        $role = UserRole::find($user->role_id);
+        $grupo_de_compra = GrupoDeCompra::find($user->grupo_de_compra_id);
+        $result = [
+            'role_id' => $user->role_id,
+            'grupo_de_compra' => null,
+        ];
+        switch ($role->nombre ?? 'error') {
+            case 'barrio':
+                $result['grupo_de_compra'] = new GrupoDeCompraReducidoResource($grupo_de_compra);
+                break;
+            case 'admin_barrio':
+                $result['grupo_de_compra'] = new GrupoDeCompraResource($grupo_de_compra);
+                break;
+            case 'comision':
+                break;
+            default:
+                abort(400, 'Rol invalido');
+        }
+        return $result;
+    }
+}
diff --git a/app/Http/Resources/GrupoDeCompraReducidoResource.php b/app/Http/Resources/GrupoDeCompraReducidoResource.php
new file mode 100644
index 0000000..9bf13d6
--- /dev/null
+++ b/app/Http/Resources/GrupoDeCompraReducidoResource.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Http\Resources;
+
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class GrupoDeCompraReducidoResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return array
+     */
+    public function toArray($request): array {
+        return [
+            'id' => $this->id,
+            'nombre' => $this->nombre,
+            'devoluciones_habilitadas' => $this->devoluciones_habilitadas,
+        ];
+    }
+}
diff --git a/resources/js/app.js b/resources/js/app.js
index 51be45f..ae11e80 100644
--- a/resources/js/app.js
+++ b/resources/js/app.js
@@ -18,6 +18,7 @@ window.bulmaToast = require('bulma-toast');
  * Eg. ./components/ExampleComponent.vue -> <example-component></example-component>
  */
 import './components';
+import store from "./store";
 
 /**
  * Constants
@@ -78,6 +79,7 @@ const app = new Vue({
         }
     },
     mounted() {
+        store.dispatch('session/fetchSession');
         Event.$on('obtener-sesion', () => {
             axios.get('/subpedidos/obtener_sesion')
                 .then(response => {
diff --git a/resources/js/store/index.js b/resources/js/store/index.js
new file mode 100644
index 0000000..f2b2ef9
--- /dev/null
+++ b/resources/js/store/index.js
@@ -0,0 +1,11 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import session from './modules/session';
+
+Vue.use(Vuex);
+
+export default new Vuex.Store({
+    modules: {
+        session,
+    },
+});
diff --git a/resources/js/store/modules/session.js b/resources/js/store/modules/session.js
new file mode 100644
index 0000000..9dd00d2
--- /dev/null
+++ b/resources/js/store/modules/session.js
@@ -0,0 +1,32 @@
+const state = {
+    role_id: null,
+    grupo_de_compra_id: null,
+};
+
+const mutations = {
+    SET_SESSION(state, { role_id, grupo_de_compra_id }) {
+        state.role_id = role_id;
+        state.grupo_de_compra_id = grupo_de_compra_id;
+    },
+};
+
+const actions = {
+    async fetchSession({ commit }) {
+        const response = await axios.get('/session');
+        console.log(response.data);
+        commit('SET_SESSION', {
+            role_id: response.data.role_id,
+            grupo_de_compra_id: response.data.grupo_de_compra_id,
+        });
+    },
+};
+
+const getters = {};
+
+export default {
+    namespaced: true,
+    state,
+    mutations,
+    actions,
+    getters,
+};
diff --git a/routes/web.php b/routes/web.php
index b5a9882..b21cfbd 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -24,6 +24,10 @@ Auth::routes(['register' => false]);
 
 Route::get('/', 'RouteController@home')->name('home');
 
+Route::middleware('auth')->group(function () {
+    Route::get('/session', 'UserController@session')->name('session');
+});
+
 Route::middleware(['auth', 'role:barrio'])->group( function() {
     Route::get('/productos', 'ProductoController@index')->name('productos.index');