Browse Source

Merge remote-tracking branch 'origin/dev' into dev

waymen 5 months ago
parent
commit
3f01338ec9

+ 22 - 7
app/Http/Controllers/API/ContainerController.php

@@ -7,6 +7,7 @@ use App\Http\Requests\API\Container\CreateOrUpdateRequest;
 use App\Http\Resources\API\ContainerDetailResource;
 use App\Http\Resources\API\ContainerDetailResource;
 use App\Http\Resources\API\ContainerReportResource;
 use App\Http\Resources\API\ContainerReportResource;
 use App\Http\Resources\API\ContainerResource;
 use App\Http\Resources\API\ContainerResource;
+use App\Http\Resources\API\FileAttachmentResource;
 use App\Http\Resources\API\FileByObjectResource;
 use App\Http\Resources\API\FileByObjectResource;
 use App\Http\Resources\API\LibraryReportResource;
 use App\Http\Resources\API\LibraryReportResource;
 use App\Models\Approval;
 use App\Models\Approval;
@@ -230,26 +231,40 @@ class ContainerController extends Controller
     public function attachments(Request $request){
     public function attachments(Request $request){
         $folderObjectType = FileObjectType::from($request->object_type);
         $folderObjectType = FileObjectType::from($request->object_type);
         $object=$folderObjectType->modelBuilderAllowed()->findOrFail($request->object_id);
         $object=$folderObjectType->modelBuilderAllowed()->findOrFail($request->object_id);
-
         if($folderObjectType->value==='asset'){
         if($folderObjectType->value==='asset'){
+            $object->load('requirements');
             $requirementsId=$object->requirements->pluck('id');
             $requirementsId=$object->requirements->pluck('id');
             if(!$requirementsId->isEmpty()){
             if(!$requirementsId->isEmpty()){
-                $file=File::query()->where('object_type','requirement')
+                $filesWithRequirements = File::query()->where('object_type','requirement')
                     ->whereIn('object_id',$requirementsId)
                     ->whereIn('object_id',$requirementsId)
                     ->where('is_latest_version',1)
                     ->where('is_latest_version',1)
                     ->where('source',1)
                     ->where('source',1)
-                    ->get();
-                return FileByObjectResource::collection($file);
+                    ->get()->map(function (File $file) use($object){
+                        $requirement = $object->requirements->where('id',$file->object_id)->first();
+                        $file->source_name =$requirement ? $requirement->title : null;
+                        $file->type='requirement';
+                        return $file;
+                    });
+
+
+                return FileAttachmentResource::collection($filesWithRequirements);
             }
             }
         }else if($folderObjectType->value==='project'){
         }else if($folderObjectType->value==='project'){
+            $object->load('tasks');
             $tasksId=$object->tasks->pluck('id');
             $tasksId=$object->tasks->pluck('id');
             if(!$tasksId->isEmpty()){
             if(!$tasksId->isEmpty()){
-                $file=File::query()->where('object_type','task')
+                $filesWithTasks=File::query()->where('object_type','task')
                     ->whereIn('object_id',$tasksId)
                     ->whereIn('object_id',$tasksId)
                     ->where('is_latest_version',1)
                     ->where('is_latest_version',1)
                     ->where('source',1)
                     ->where('source',1)
-                    ->get();
-                return FileByObjectResource::collection($file);
+                    ->get()->map(function ($file) use($object){
+                        $task = $object->tasks->where('id',$file->object_id)->first();
+                        $file->source_name =$task ? $task->name : null;
+                        $file->type='task';
+                        return $file;
+
+                    });
+                return FileAttachmentResource::collection($filesWithTasks);
             }
             }
         }
         }
 
 

+ 34 - 0
app/Http/Resources/API/FileAttachmentResource.php

@@ -0,0 +1,34 @@
+<?php
+
+namespace App\Http\Resources\API;
+
+use App\Models\Enums\BimFileConvertStatus;
+use Illuminate\Http\Request;
+use Illuminate\Http\Resources\Json\JsonResource;
+use Illuminate\Support\Facades\Storage;
+
+class FileAttachmentResource extends JsonResource
+{
+    public function toArray(Request $request): array
+    {
+        $data = [
+            'id' => $this->id,
+            'title' => $this->title,
+            'extension' => $this->extension,
+            'download_url' => Storage::url($this->pathname),
+            'size' => $this->size,
+            'created_by' => $this->createdBy ? new UserProfileResource($this->createdBy) : null,
+            'created_at' => (string) $this->created_at,
+            'version' => $this->version,
+            'source_name'=> $this->source_name,
+            'type'=>$this->type
+        ];
+
+        if ($this->is_bim == 1 && $this->bimFile && $this->bimFile->convert_status == BimFileConvertStatus::DONE->value) {
+            $data['model_preview'] = true;
+        }
+
+        return $data;
+    }
+
+}