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');
});