getMessage()); return response()->json(['message' => $e->getMessage()], 500); } $pattern = storage_path('csv/exports/pedidos-por-barrio-*.csv'); $files = glob($pattern); usort($files, function ($a, $b) { return filemtime($b) <=> filemtime($a); }); return response()->download($files[0]); } public function descargarPedidosDeOllas() { try { PedidosExportHelper::pedidosDeOllas(); } catch (CannotInsertRecord|InvalidArgument|Exception $e) { return response()->json(['message' => $e->getMessage()], 500); } $pattern = storage_path('csv/exports/pedidos-de-ollas-*.csv'); $files = glob($pattern); usort($files, function ($a, $b) { return filemtime($b) <=> filemtime($a); }); return response()->download($files[0]); } public function descargarNotas() { try { Producto::planillaNotas(); } catch (CannotInsertRecord|InvalidArgument $e) { return response()->json(['message' => $e->getMessage()], 500); } $pattern = storage_path('csv/exports/notas-por-barrio-*.csv'); $files = glob($pattern); usort($files, function ($a, $b) { return filemtime($b) <=> filemtime($a); }); return response()->download($files[0]); } public function pdf() { try { GrupoDeCompra::exportarPedidosBarrialesAPdf(); return response(); } catch (MpdfException $e) { return response()->json(['message' => $e->getMessage()], 500); } } 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); try { CanastaHelper::cargarCanasta(storage_path(self::CANASTAS_PATH . $nombre)); } catch (Exception $e) { return response()->json(['message' => $e->getMessage()], 500); } 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(); try { $records = CsvHelper::getRecords($file, "No se pudo leer el archivo."); } catch (Exception $e) { return response()->json(['message' => $e->getMessage()], 500); } foreach ($records as $record) { $barrio = $record[self::BARRIO]; $saldo = $record[self::SALDO]; GrupoDeCompra::where('nombre', $barrio) ->update(['saldo' => $saldo]); } return response()->json(GrupoDeCompraResource::collection(GrupoDeCompra::all())); } public function descargarSaldosEjemplo(): BinaryFileResponse { $file = resource_path('csv/saldos.csv'); return response()->download($file); } public function obtenerParametros(): JsonResponse { try { $records = self::parametrosRecords(); $result = []; foreach ($records as $record) $result[] = $record; return response()->json($result); } catch (Exception $e) { return response()->json(['message' => $e->getMessage()], 500); } } public function modificarParametros(string $parametro_id, Request $request) { try { if (collect(self::parametrosRecords()) ->contains('id', $parametro_id)) { $valid = $request->validate([ 'valor' => ['required', 'numeric', 'gte:0'], ]); CsvHelper::cambiarParametro($parametro_id, $valid['valor']); TransporteHelper::resetParametros(); return response()->noContent(); } return response()->json(['message' => 'Parametro no encontrado.'], 404); } catch (Exception $e) { return response()->json(['message' => $e->getMessage()], 500); } } /** * @throws Exception */ private static function parametrosRecords(): array { $records = CsvHelper::getRecords(resource_path(self::PARAMETROS_PATH), "No se pudo leer el archivo."); return iterator_to_array($records); } public static function modificarGrupoDeCompra(Request $request, $grupo_de_compra_id) { $request->validate([ 'nombre' => ['nullable','string','regex:/^([a-z]| )+$/i'], 'region' => ['nullable','string','regex:/^([a-z]| |\d)+$/i'], 'passBarrio' => 'nullable|string|alpha_num', 'passAdmin' => 'nullable|string|alpha_num', 'passOllas' => 'nullable|string|alpha_num', ]); $grupoDeCompra = GrupoDeCompra::find($grupo_de_compra_id); if ($request["nombre"]) { $users = User::where([ 'grupo_de_compra_id' => $grupoDeCompra->id, ])->get(); foreach ($users as $user) { $user->name = str_replace($grupoDeCompra->nombre, $request['nombre'], $user->name); $user->save(); } $grupoDeCompra->nombre = $request['nombre']; $grupoDeCompra->save(); } if ($request["region"]) { $grupoDeCompra->region = $request['region']; $grupoDeCompra->save(); } if ($request["passBario"]) { $user = User::where([ 'grupo_de_compra_id' => $grupoDeCompra->id, 'role_id' => UserRole::where(['nombre' => 'barrio'])->first()->id, ]); $user->password = Hash::make($request['passBario']); $user->save(); } if ($request["passAdmin"]) { $user = User::where([ 'grupo_de_compra_id' => $grupoDeCompra->id, 'role_id' => UserRole::where(['nombre' => 'admin_barrio'])->first()->id, ]); $user->password = Hash::make($request['passAdmin']); $user->save(); } if ($request["passOllas"]) { $user = User::where([ 'grupo_de_compra_id' => $grupoDeCompra->id, 'role_id' => UserRole::where(['nombre' => 'ollas'])->first()->id, ]); $user->password = Hash::make($request['passOllas']); $user->save(); } return response()->noContent(); } public static function crearGrupoDeCompra(Request $request) { $request->validate([ 'nombre' => ['required','string','regex:/^([a-z]| )+$/i'], 'region' => ['required','string','regex:/^([a-z]| |\d)+$/i'], 'passBarrio' => 'required|string|alpha_num|min:3', 'passAdmin' => 'required|string|alpha_num|min:3', 'passOllas' => 'required|string|alpha_num|min:3', ]); if (GrupoDeCompra::where(["nombre" => $request["nombre"]])->get()->count()) throw new HttpException(400, "Ya existe un pedido con este nombre"); $gdc = GrupoDeCompra::create([ 'nombre' => $request['nombre'], 'region' => $request['region'], 'saldo' => 0, ]); User::create([ 'grupo_de_compra_id' => $gdc->id, 'name' => $request['nombre'], 'password' => Hash::make($request['passBario']), 'role_id' => UserRole::where('nombre','barrio')->first()->id, ]); User::create([ 'grupo_de_compra_id' => $gdc->id, 'name' => $request['nombre'] . '_admin', 'password' => Hash::make($request['passAdmin']), 'role_id' => UserRole::where('nombre','admin_barrio')->first()->id, ]); User::create([ 'grupo_de_compra_id' => $gdc->id, 'name' => $request['nombre'] . '_ollas', 'password' => Hash::make($request['passOllas']), 'role_id' => UserRole::where('nombre','ollas')->first()->id, ]); return new GrupoDeCompraComisionesResource($gdc); } }