|
@@ -9,12 +9,16 @@ use App\Http\Requests\API\Task\CreateOrUpdateRequest;
|
|
|
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\ObjectAction;
|
|
|
use App\Models\NamingRule;
|
|
|
use App\Models\Project;
|
|
|
use App\Models\Requirement;
|
|
|
use App\Models\RequirementGroup;
|
|
|
use App\Models\Task;
|
|
|
+use App\Repositories\ActionRepository;
|
|
|
use App\Repositories\CustomFieldRepository;
|
|
|
+use App\Services\History\ModelChangeDetector;
|
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
use Illuminate\Support\Facades\Validator;
|
|
@@ -41,23 +45,17 @@ class TaskController extends Controller
|
|
|
*/
|
|
|
public function store(CreateOrUpdateRequest $request, CustomFieldRepository $customFieldRepo)
|
|
|
{
|
|
|
- $asset_id=null;
|
|
|
- $requirement_group_id=null;
|
|
|
-
|
|
|
- if ($request->has('requirement_id')){
|
|
|
- $requirementId=$request->get('requirement_id');
|
|
|
- $requirement=Requirement::query()->findOrFail($requirementId);
|
|
|
- $asset_id=$requirement->asset_id;
|
|
|
- $requirement_group_id=$requirement->requirement_group_id;
|
|
|
- }
|
|
|
+ $requirement = $request->has('requirement_id')
|
|
|
+ ? Requirement::query()->findOrFail($request->get("requirement_id"))
|
|
|
+ : null;
|
|
|
|
|
|
$formData = [
|
|
|
...$request->all(),
|
|
|
'company_id' => Auth::user()->company_id,
|
|
|
'created_by' => Auth::id(),
|
|
|
'whitelist' => $request->whitelist ? sprintf(",%s,", implode(',', $request->whitelist)) : null,
|
|
|
- 'asset_id' => $asset_id,
|
|
|
- 'requirement_group_id'=>$requirement_group_id,
|
|
|
+ 'asset_id' => $requirement?->asset_id,
|
|
|
+ 'requirement_group_id'=> $requirement?->requirement_group_id,
|
|
|
];
|
|
|
|
|
|
if ($request->has("naming_rule_id") && $request->get("naming_rule_id") > 0) {
|
|
@@ -65,7 +63,9 @@ class TaskController extends Controller
|
|
|
$formData['naming_rules'] = $request->only($keys);
|
|
|
}
|
|
|
|
|
|
- Task::create($formData);
|
|
|
+ $task = Task::create($formData);
|
|
|
+
|
|
|
+ ActionRepository::createByTask($task, ObjectAction::CREATED);
|
|
|
|
|
|
return $this->created();
|
|
|
}
|
|
@@ -86,17 +86,14 @@ class TaskController extends Controller
|
|
|
public function update(CreateOrUpdateRequest $request, string $id, CustomFieldRepository $customFieldRepo)
|
|
|
{
|
|
|
$task = Task::query()->allowed($id)->findOrFail($id);
|
|
|
- $asset_id=null;
|
|
|
|
|
|
- if ($requirementId=$request->get('requirement_id')!=$task->requirement_id){
|
|
|
- $requirementId=$request->get('requirement_id');
|
|
|
- $requirement=Requirement::query()->findOrFail($requirementId);
|
|
|
- $asset_id=$requirement->asset_id;
|
|
|
- }
|
|
|
+ $requirement = $request->has('requirement_id') && $task->requirement_id != $request->get('requirement_id')
|
|
|
+ ? Requirement::query()->findOrFail($request->get("requirement_id"))
|
|
|
+ : null;
|
|
|
|
|
|
$formData = [...$request->all(),
|
|
|
'whitelist' => $request->whitelist ? sprintf(",%s,", implode(',', $request->whitelist)) : null,
|
|
|
- '$asset_id' => $asset_id,
|
|
|
+ 'asset_id' => $requirement?->asset_id,
|
|
|
];
|
|
|
|
|
|
if ($request->has("naming_rule_id") && $request->get("naming_rule_id") > 0) {
|
|
@@ -105,8 +102,11 @@ class TaskController extends Controller
|
|
|
}
|
|
|
|
|
|
$task->fill($formData);
|
|
|
+ $changes = ModelChangeDetector::detector(ActionObjectType::TASK, $task);
|
|
|
$task->save();
|
|
|
|
|
|
+ ActionRepository::createByTask($task, ObjectAction::EDITED, objectChanges: $changes);
|
|
|
+
|
|
|
return $this->noContent();
|
|
|
}
|
|
|
|
|
@@ -119,6 +119,8 @@ class TaskController extends Controller
|
|
|
|
|
|
$task->delete();
|
|
|
|
|
|
+ ActionRepository::createByTask($task, ObjectAction::DELETED);
|
|
|
+
|
|
|
return $this->noContent();
|
|
|
}
|
|
|
|
|
@@ -163,13 +165,15 @@ class TaskController extends Controller
|
|
|
$item['naming_rules'] = collect($item)->only($keys)->toArray();
|
|
|
}
|
|
|
|
|
|
- Task::query()->create([
|
|
|
+ $task = Task::query()->create([
|
|
|
...$item,
|
|
|
'project_id' => $project->id,
|
|
|
'parent_id' => 0,
|
|
|
'company_id' => Auth::user()->company_id,
|
|
|
'created_by' => Auth::id(),
|
|
|
]);
|
|
|
+
|
|
|
+ ActionRepository::createByTask($task, ObjectAction::CREATED);
|
|
|
}
|
|
|
|
|
|
return $this->noContent();
|