From 131bf33a73b8f0f88f0dfcec366be419ca936d08 Mon Sep 17 00:00:00 2001 From: ale Date: Sat, 21 Dec 2024 14:29:48 -0300 Subject: [PATCH] Agregada ruta y logica para cargar canastas --- .gitignore | 1 + app/Http/Controllers/ComprasController.php | 16 ++++++++++++++ .../js/components/compras/CanastaInput.vue | 22 +++++++++---------- routes/web.php | 1 + 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 6de1c86..7c37daf 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ npm-debug.log yarn-error.log .idea /resources/csv/exports/*.csv +/resources/csv/canastas/*.csv /public/css/ /public/js/ /public/mix-manifest.json diff --git a/app/Http/Controllers/ComprasController.php b/app/Http/Controllers/ComprasController.php index 48e9ef4..48ee549 100644 --- a/app/Http/Controllers/ComprasController.php +++ b/app/Http/Controllers/ComprasController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; use App\GrupoDeCompra; use App\Producto; +use Illuminate\Http\Request; class ComprasController { @@ -33,4 +34,19 @@ class ComprasController { return view('auth/compras_login'); } + + public function cargarCanasta(Request $request) + { + $request->validate([ + 'data' => 'required|file|mimes:csv,txt|max:2048', + ]); + + $archivo = $request->file('data'); + $path = resource_path('/csv/canastas/'); + $archivo->move($path, $archivo->getClientOriginalName()); + + return response()->json([ + 'message' => 'Canasta cargada exitosamente', + ], 200); + } } diff --git a/resources/js/components/compras/CanastaInput.vue b/resources/js/components/compras/CanastaInput.vue index 22bc687..0cb55b2 100644 --- a/resources/js/components/compras/CanastaInput.vue +++ b/resources/js/components/compras/CanastaInput.vue @@ -6,14 +6,14 @@ class="file-input" type="file" name="canasta" - @change="onFileChange" + @change="archivoSubido" /> - - - - Subir canasta - + + + + Subir canasta + {{ archivo.nombre }} @@ -34,21 +34,21 @@ export default { }; }, methods: { - async onFileChange(event) { + async archivoSubido(event) { const archivo = event.target.files[0]; if (archivo && archivo.type === "text/csv") { - this.archivo = { file: archivo, nombre: archivo.name }; + this.archivo = {data: archivo, nombre: archivo.name}; const formData = new FormData(); - formData.append("file", this.archivo.file); + formData.append("data", this.archivo.data); try { this.cargando = true; - const response = await axios.post("/cargar-canasta", formData, { + const response = await axios.post("/compras/canasta", formData, { headers: { "Content-Type": "multipart/form-data", }, }); - this.$root.$toast(response.data.message || "Canasta cargada!"); + this.$root.$toast(response.data.message || "Canasta cargada exitosamente"); } catch (error) { this.$root.$toast(error.response?.data?.message || "Hubo errores."); } finally { diff --git a/routes/web.php b/routes/web.php index d6f239f..8604d18 100644 --- a/routes/web.php +++ b/routes/web.php @@ -83,4 +83,5 @@ Route::middleware(['compras'])->group( function() { Route::get('/compras/pedidos/descargar', 'ComprasController@descargarPedidos')->name('compras.pedidos.descargar'); Route::get('/compras/pedidos/notas', 'ComprasController@descargarNotas')->name('compras.pedidos.descargar'); Route::get('/compras/pedidos/transporte', 'ComprasController@descargarTransporte')->name('compras.pedidos.descargar'); + Route::post('/compras/canasta', 'ComprasController@cargarCanasta')->name('compras.canasta'); });