Browse Source

文档下资产,项目的attachments

kely 10 months ago
parent
commit
223be8cff6
2 changed files with 33 additions and 0 deletions
  1. 32 0
      app/Http/Controllers/API/ContainerController.php
  2. 1 0
      routes/api.php

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

@@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
 use App\Http\Requests\API\Container\CreateOrUpdateRequest;
 use App\Http\Resources\API\ContainerDetailResource;
 use App\Http\Resources\API\ContainerResource;
+use App\Http\Resources\API\FileByObjectResource;
 use App\Models\Container;
 use App\Models\ContainerContent;
 use App\Models\Enums\ActionObjectType;
@@ -21,6 +22,7 @@ use App\Services\History\ModelChangeDetector;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 
+
 class ContainerController extends Controller
 {
     /**
@@ -217,4 +219,34 @@ class ContainerController extends Controller
             'data' => $items
         ]);
     }
+
+    public function attachments(Request $request){
+        $folderObjectType = FileObjectType::from($request->objectType);
+        $object=$folderObjectType->modelBuilderAllowed()->findOrFail($request->objectId);
+
+        if($folderObjectType->value==='asset'){
+            $requirementsId=$object->requirements->pluck('id');
+            if(!$requirementsId->isEmpty()){
+                $file=File::query()->where('object_type','requirement')
+                    ->whereIn('object_id',$requirementsId)
+                    ->where('is_latest_version',1)
+                    ->where('source',1)
+                    ->get();
+                return FileByObjectResource::collection($file);
+            }
+        }else if($folderObjectType->value==='project'){
+            $tasksId=$object->tasks->pluck('id');
+            if(!$tasksId->isEmpty()){
+                $file=File::query()->where('object_type','task')
+                    ->whereIn('object_id',$tasksId)
+                    ->where('is_latest_version',1)
+                    ->where('source',1)
+                    ->get();
+                return FileByObjectResource::collection($file);
+            }
+        }
+
+        return $this->noContent();
+
+    }
 }

+ 1 - 0
routes/api.php

@@ -181,6 +181,7 @@ Route::middleware(['auth:sanctum'])->group(function () {
         Route::post("notification/mark-as-read", [API\NotificationController::class, "markAsRead"])->name("notification.mark-as-read");
 
         Route::get("container-linkage/{library_id}", [API\ContainerController::class, "linkage"])->name("container.linkage");
+        Route::get("container-attachments", [API\ContainerController::class, "attachments"])->name("container.attachments");
 
         Route::post("share-file", [API\ShareFileController::class, "store"])->name("share-file.store");
         Route::delete("share-file/{share_file}", [API\ShareFileController::class, "destroy"])