files('uploads'); $formattedImages = []; foreach ($images as $image) { $formattedImages[] = [ 'path' => Storage::url($image), 'name' => basename($image), ]; } return response()->json($formattedImages); } public function upload(Request $request) { $request->validate([ 'image' => 'required|image|max:10240', // Max 10MB ]); $path = $request->file('image')->store('uploads', 'public'); $image = Image::create([ 'path' => $path, ]); return response()->json([ 'message' => __('api.image_uploaded_successfully'), 'image_id' => $image->id, 'path' => Storage::url($path), ]); } public function styleChangeRequest(Request $request) { $request->validate([ 'image_id' => 'required|exists:images,id', 'style_id' => 'required|exists:styles,id', ]); $image = Image::find($request->image_id); $style = Style::with('aiModel.apiProviders')->find($request->style_id); if (!$style || !$style->aiModel || $style->aiModel->apiProviders->isEmpty()) { return response()->json(['error' => __('api.style_or_provider_not_found')], 404); } try { $apiProvider = $style->aiModel->apiProviders->first(); // Get the first API provider if (!$apiProvider) { return response()->json(['error' => __('api.style_or_provider_not_found')], 404); } $plugin = PluginLoader::getPlugin($apiProvider->name); $result = $plugin->styleChangeRequest($style->prompt, $image->uuid, $style->parameters); // Annahme: Image Model hat eine UUID // Hier müsste die Logik zum Speichern des neuen Bildes und dessen Verknüpfung implementiert werden // Fürs Erste geben wir das Ergebnis der API zurück return response()->json($result); } catch (\Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function getStatus(Request $request) { $request->validate([ 'image_id' => 'required|exists:images,id', 'api_provider_name' => 'required|string', ]); $image = Image::find($request->image_id); $apiProvider = ApiProvider::where('name', $request->api_provider_name)->first(); if (!$image || !$apiProvider) { return response()->json(['error' => __('api.image_or_provider_not_found')], 404); } try { $plugin = PluginLoader::getPlugin($apiProvider->name); $status = $plugin->getStatus($image->uuid); // Annahme: Image Model hat eine UUID return response()->json($status); } catch (\Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } public function getProgress(Request $request) { $request->validate([ 'image_id' => 'required|exists:images,id', 'api_provider_name' => 'required|string', ]); $image = Image::find($request->image_id); $apiProvider = ApiProvider::where('name', $request->api_provider_name)->first(); if (!$image || !$apiProvider) { return response()->json(['error' => __('api.image_or_provider_not_found')], 404); } try { $plugin = PluginLoader::getPlugin($apiProvider->name); $progress = $plugin->getProgress($image->uuid); // Annahme: Image Model hat eine UUID return response()->json($progress); } catch (\Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } } }