Browse Source

folder open

moell 10 months ago
parent
commit
9bd138c79f
2 changed files with 33 additions and 0 deletions
  1. 32 0
      app/Http/Controllers/API/FolderController.php
  2. 1 0
      routes/api.php

+ 32 - 0
app/Http/Controllers/API/FolderController.php

@@ -7,6 +7,7 @@ use App\Http\Requests\API\Folder\CreateRequest;
 use App\Http\Requests\API\Folder\UpdateRequest;
 use App\Http\Resources\API\FolderDetailResource;
 use App\Models\Enums\FolderObjectType;
+use App\Models\File;
 use App\Models\Folder;
 use App\Models\Library;
 use Illuminate\Http\Request;
@@ -220,4 +221,35 @@ class FolderController extends Controller
 
         return $this->noContent();
     }
+
+    public function open(Request $request)
+    {
+        $folderId = $request->get("id", 0);
+        if ($folderId > 0) {
+            $folder = Folder::query()->findOrFail($folderId);
+            $objectType = $folder->object_type;
+            $objectId = $folder->object_id;
+        } else {
+            $objectType = $request->get("object_type");
+            $objectId = $request->get("object_id");
+        }
+
+        $folderObjectType = FolderObjectType::from($request->object_type);
+
+        $folderObjectType->modelBuilderAllowed()->findOrFail($request->object_id);
+
+        $objectWhere = ['object_type' => $objectType, 'object_id' => $objectId,];
+        $folders = Folder::query()
+            ->where($objectWhere)
+            ->when($folderId, fn($query) => $query->where("parent_id", $folderId))
+            ->when(! $folderId, fn($query) => $query->where("parent_id", 0))
+            ->get(['id', 'name']);
+
+
+        return $this->success([
+            'data' => [
+                'folders' => $folders,
+            ]
+        ]);
+    }
 }

+ 1 - 0
routes/api.php

@@ -137,6 +137,7 @@ Route::middleware(['auth:sanctum'])->group(function () {
         Route::get("folder/{folder}", [API\FolderController::class, "show"])->name("folder.show");
         Route::patch("folder/{folder}", [API\FolderController::class, "update"])->name("folder.update");
         Route::delete("folder/{folder}", [API\FolderController::class, "destroy"])->name("folder.destroy");
+        Route::get("folder-open", [API\FolderController::class, "open"])->name("folder.open");
 
         Route::post("requirement/batch", [API\RequirementController::class, "batchStore"])->name("requirement.batchStore");