diff --git a/app/Http/Controllers/ComprasController.php b/app/Http/Controllers/ComprasController.php new file mode 100644 index 0000000..40daea7 --- /dev/null +++ b/app/Http/Controllers/ComprasController.php @@ -0,0 +1,98 @@ +download($file); + } + + public function descargarNotas(): BinaryFileResponse + { + Producto::planillaNotas(); + $file = resource_path('csv/exports/notas-por-barrio.csv'); + return response()->download($file); + } + + public function pdf() { + GrupoDeCompra::exportarPedidosBarrialesAPdf(); + } + + public function show() + { + return view('auth/login'); + } + + public function cargarCanasta(Request $request): JsonResponse + { + $request->validate([ + 'data' => 'required|file|mimes:csv,txt|max:2048', + ]); + + $nombre = CanastaHelper::guardarCanasta($request->file('data'), self::CANASTAS_PATH); + CanastaHelper::cargarCanasta(self::CANASTAS_PATH . $nombre); + + return response()->json([ + 'message' => 'Canasta cargada exitosamente', + ]); + } + + public function descargarCanastaEjemplo(): BinaryFileResponse + { + $file = resource_path('csv/productos.csv'); + return response()->download($file); + } + + public function cargarSaldos(Request $request): JsonResponse + { + $request->validate([ + 'data' => 'required|file|mimes:csv,txt|max:2048', + ]); + + $file = $request->file('data')->getPathname(); + $csv = Reader::createFromPath($file, 'r'); + try { + $csv->setDelimiter("|"); + $csv->setEnclosure("'"); + $csv->setHeaderOffset(0); + $records = $csv->getRecords(); + } catch (InvalidArgument|Exception $e) { + Log::error($e->getMessage()); + return response()->json([ + 'message' => 'No se pudo leer el csv', + ]); + } + + foreach ($records as $record) { + $barrio = $record[self::BARRIO]; + $saldo = $record[self::SALDO]; + GrupoDeCompra::where('nombre', $barrio) + ->update(['saldo' => $saldo]); + } + + return response()->json([ + 'message' => 'Saldos cargados exitosamente', + ]); + } +} diff --git a/resources/js/components/comisiones/Body.vue b/resources/js/components/comisiones/Body.vue index eef8c6b..be1e47a 100644 --- a/resources/js/components/comisiones/Body.vue +++ b/resources/js/components/comisiones/Body.vue @@ -9,7 +9,7 @@
-
+

Formato de la canasta

diff --git a/routes/web.php b/routes/web.php index 73d3165..f5bc448 100644 --- a/routes/web.php +++ b/routes/web.php @@ -54,5 +54,5 @@ Route::middleware(['auth', 'role:comision'])->group( function() { Route::get('/comisiones/pedidos/pdf', 'ComisionesController@pdf')->name('comisiones.pedidos.pdf'); Route::get('/comisiones/canasta/ejemplo', 'ComisionesController@descargarCanastaEjemplo')->name('comisiones.canasta.ejemplo'); Route::post('/comisiones/canasta', 'ComisionesController@cargarCanasta')->name('comisiones.canasta'); - Route::post('/comisiones/saldos', 'ComisionesController@cargarSaldos')->name('comisiones.canasta'); + Route::post('/comisiones/saldos', 'ComisionesController@cargarSaldos')->name('comisiones.saldos'); }); diff --git a/run_watch.sh b/run_watch.sh new file mode 100755 index 0000000..f0fbd92 --- /dev/null +++ b/run_watch.sh @@ -0,0 +1 @@ +sudo docker compose exec app npm run watch