Agregada ruta y logica para cargar canastas

This commit is contained in:
Alejandro Tasistro 2024-12-21 14:29:48 -03:00
parent 5a4b933f11
commit 131bf33a73
4 changed files with 29 additions and 11 deletions

1
.gitignore vendored
View File

@ -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

View File

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

View File

@ -6,14 +6,14 @@
class="file-input"
type="file"
name="canasta"
@change="onFileChange"
@change="archivoSubido"
/>
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-cloud-upload-alt"></i>
</span>
<span class="file-label">Subir canasta</span>
</span>
<span class="file-icon">
<i class="fas fa-cloud-upload-alt"></i>
</span>
<span class="file-label">Subir canasta</span>
</span>
<span class="file-name" v-if="archivo">
{{ archivo.nombre }}
</span>
@ -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 {

View File

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