Browse Source

project,task,paln,action support rich text files

moell 11 months ago
parent
commit
ca92fb1198

+ 10 - 2
app/Http/Controllers/API/ActionController.php

@@ -6,8 +6,10 @@ use App\Http\Controllers\Controller;
 use App\Http\Requests\API\Action\CommentRequest;
 use App\Models\Action;
 use App\Models\Enums\ActionObjectType;
+use App\Models\Enums\FileObjectType;
 use App\Models\Enums\ObjectAction;
 use App\Repositories\ActionRepository;
+use App\Services\File\FileAssociationService;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 
@@ -32,7 +34,7 @@ class ActionController extends Controller
      * @param string $objectId
      * @return \Illuminate\Http\Response
      */
-    public function comment(CommentRequest $request, string $objectType, string $objectId)
+    public function comment(FileAssociationService $service, CommentRequest $request, string $objectType, string $objectId)
     {
         $actionObjectType =  ActionObjectType::from($objectType);
 
@@ -46,7 +48,7 @@ class ActionController extends Controller
             default => null
         };
 
-        ActionRepository::create(
+        $action = ActionRepository::create(
             $objectId,
             $actionObjectType,
             ObjectAction::COMMENTED,
@@ -54,6 +56,12 @@ class ActionController extends Controller
             comment: $request->comment,
         );
 
+        $service->association(
+            $request->get("file_ids", []),
+            $action->id,
+            FileObjectType::ACTION
+        );
+
         return $this->created();
     }
 

+ 9 - 1
app/Http/Controllers/API/PlanController.php

@@ -7,7 +7,9 @@ use App\Http\Requests\API\Plan\CreateOrUpdateRequest;
 use App\Http\Resources\API\PlanByAssetResource;
 use App\Http\Resources\API\PlanResource;
 use App\Models\Asset;
+use App\Models\Enums\FileObjectType;
 use App\Models\Plan;
+use App\Services\File\FileAssociationService;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 
@@ -56,7 +58,7 @@ class PlanController extends Controller
     /**
      * Store a newly created resource in storage.
      */
-    public function store(CreateOrUpdateRequest $request)
+    public function store(FileAssociationService $service, CreateOrUpdateRequest $request)
     {
         $plan = new Plan();
 
@@ -71,6 +73,12 @@ class PlanController extends Controller
 
         $plan->save();
 
+        $service->association(
+            $request->get("file_ids", []),
+            $plan->id,
+            FileObjectType::PLAN
+        );
+
         return $this->created();
     }
 

+ 10 - 2
app/Http/Controllers/API/ProjectController.php

@@ -23,6 +23,7 @@ use App\Http\Resources\API\SimplePlanResource;
 use App\Http\Resources\API\ProjectRequirementResource;
 use App\Http\Resources\API\ProjectResource;
 use App\Models\Enums\ActionObjectType;
+use App\Models\Enums\FileObjectType;
 use App\Models\Enums\ObjectAction;
 use App\Models\Enums\ProjectStatus;
 use App\Models\Enums\TaskStatus;
@@ -37,6 +38,7 @@ use App\Models\TeamMember;
 use App\Models\User;
 use App\Models\RequirementGroup;
 use App\Repositories\ActionRepository;
+use App\Services\File\FileAssociationService;
 use App\Services\History\ModelChangeDetector;
 use App\Services\Project\ProjectKanbanService;
 use App\Services\Project\ProjectGanttService;
@@ -91,7 +93,7 @@ class ProjectController extends Controller
     /**
      * Store a newly created resource in storage.
      */
-    public function store(CreateOrUpdateRequest $request)
+    public function store(FileAssociationService $service, CreateOrUpdateRequest $request)
     {
         $project = new Project();
 
@@ -99,7 +101,7 @@ class ProjectController extends Controller
             'company_id', 'created_by'
         ]);
 
-        DB::transaction(function () use ($request,$project) {
+        DB::transaction(function () use ($request, $project, $service) {
             $project->fill([
                 ...$request->all(),
                 'company_id' => Auth::user()->company_id,
@@ -111,6 +113,12 @@ class ProjectController extends Controller
 
             ActionRepository::createByProject($project, ObjectAction::CREATED);
 
+            $service->association(
+                $request->get("file_ids", []),
+                $project->id,
+                FileObjectType::PROJECT
+            );
+
             if ($request->has("assets")) {
                 foreach ($request->get("assets", []) as $assetId) {
                     ProjectAsset::create([

+ 9 - 1
app/Http/Controllers/API/TaskController.php

@@ -10,6 +10,7 @@ use App\Http\Resources\API\TaskDetailResource;
 use App\Http\Resources\API\TaskResource;
 use App\Models\CustomField;
 use App\Models\Enums\ActionObjectType;
+use App\Models\Enums\FileObjectType;
 use App\Models\Enums\ObjectAction;
 use App\Models\NamingRule;
 use App\Models\Project;
@@ -18,6 +19,7 @@ use App\Models\Enums\TaskStatus;
 use App\Models\Task;
 use App\Repositories\ActionRepository;
 use App\Repositories\CustomFieldRepository;
+use App\Services\File\FileAssociationService;
 use App\Services\History\ModelChangeDetector;
 use Carbon\Carbon;
 use Illuminate\Http\Request;
@@ -45,7 +47,7 @@ class TaskController extends Controller
     /**
      * Store a newly created resource in storage.
      */
-    public function store(CreateOrUpdateRequest $request, CustomFieldRepository $customFieldRepo)
+    public function store(FileAssociationService $service, CreateOrUpdateRequest $request, CustomFieldRepository $customFieldRepo)
     {
         $requirement = $request->has('requirement_id')
             ? Requirement::query()->findOrFail($request->get("requirement_id"))
@@ -69,6 +71,12 @@ class TaskController extends Controller
 
         ActionRepository::createByTask($task, ObjectAction::CREATED);
 
+        $service->association(
+            $request->get("file_ids", []),
+            $task->id,
+            FileObjectType::TASK
+        );
+
         return $this->created();
     }
 

+ 1 - 0
app/Http/Requests/API/Task/CreateOrUpdateRequest.php

@@ -6,6 +6,7 @@ use App\Http\Requests\CustomFieldRuleHelper;
 use App\Http\Requests\NamingRuleHelper;
 use App\Http\Requests\RuleHelper;
 use App\Models\Enums\TaskACL;
+use App\Models\User;
 use Illuminate\Foundation\Http\FormRequest;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Validation\Rule;

+ 10 - 0
app/Models/Enums/FileObjectType.php

@@ -2,6 +2,8 @@
 
 namespace App\Models\Enums;
 
+use App\Models\Action;
+use App\Models\Plan;
 use App\Models\Project;
 use App\Models\Requirement;
 use App\Models\Task;
@@ -14,12 +16,18 @@ enum FileObjectType: string
 
     case TASK = "task";
 
+    case ACTION = "action";
+
+    case PLAN = "plan";
+
     public function modelBuilder(): \Illuminate\Database\Eloquent\Builder
     {
         return match ($this) {
             self::PROJECT => Project::query(),
             self::TASK => Task::query(),
             self::REQUIREMENT => Requirement::query(),
+            self::ACTION => Action::query(),
+            self::PLAN => Plan::query(),
         };
     }
 
@@ -29,6 +37,8 @@ enum FileObjectType: string
             self::PROJECT => Project::query()->allowed($id),
             self::TASK => Task::query()->allowed($id),
             self::REQUIREMENT => Requirement::query(),
+            self::ACTION => Action::query(),
+            self::PLAN => Plan::query(),
         };
     }
 }