|
@@ -15,8 +15,6 @@ use App\Http\Resources\API\ProjectDetailResource;
|
|
use App\Http\Resources\API\SimplePlanResource;
|
|
use App\Http\Resources\API\SimplePlanResource;
|
|
use App\Http\Resources\API\ProjectRequirementResource;
|
|
use App\Http\Resources\API\ProjectRequirementResource;
|
|
use App\Http\Resources\API\ProjectResource;
|
|
use App\Http\Resources\API\ProjectResource;
|
|
-use App\Http\Resources\API\RequirementResource;
|
|
|
|
-use App\Models\Asset;
|
|
|
|
use App\Models\Enums\ObjectAction;
|
|
use App\Models\Enums\ObjectAction;
|
|
use App\Models\Enums\ProjectStatus;
|
|
use App\Models\Enums\ProjectStatus;
|
|
use App\Models\Plan;
|
|
use App\Models\Plan;
|
|
@@ -28,6 +26,7 @@ use App\Models\Requirement;
|
|
use App\Repositories\ActionRepository;
|
|
use App\Repositories\ActionRepository;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
+use Illuminate\Support\Facades\DB;
|
|
|
|
|
|
class ProjectController extends Controller
|
|
class ProjectController extends Controller
|
|
{
|
|
{
|
|
@@ -215,44 +214,59 @@ class ProjectController extends Controller
|
|
|
|
|
|
public function linkRequirement(LinkRequirementRequest $request, string $id)
|
|
public function linkRequirement(LinkRequirementRequest $request, string $id)
|
|
{
|
|
{
|
|
|
|
+
|
|
|
|
+ $requirementIds = $request->get("requirement_id",[]);
|
|
$project = Project::findOrFail($id);
|
|
$project = Project::findOrFail($id);
|
|
|
|
|
|
- $requirement = Requirement::findOrFail($request->requirement_id);
|
|
|
|
|
|
|
|
- $exists = ProjectAsset::query()
|
|
|
|
- ->where('project_id', $project->id)
|
|
|
|
- ->where('asset_id', $requirement->asset_id)
|
|
|
|
- ->count();
|
|
|
|
- if (! $exists) {
|
|
|
|
|
|
+ if(! $requirementIds){
|
|
return $this->forbidden("Please select the correct requirement");
|
|
return $this->forbidden("Please select the correct requirement");
|
|
}
|
|
}
|
|
|
|
|
|
- ProjectRequirement::query()->firstOrCreate([
|
|
|
|
- 'project_id' => $project->id,
|
|
|
|
- 'requirement_id' => $requirement->id,
|
|
|
|
- ]);
|
|
|
|
|
|
+// $requirement = Requirement::findOrFail($request->requirement_id);
|
|
|
|
+
|
|
|
|
+// $exists = ProjectAsset::query()
|
|
|
|
+// ->where('project_id', $project->id)
|
|
|
|
+// ->where('asset_id', $requirement->asset_id)
|
|
|
|
+// ->count();
|
|
|
|
+// if (! $exists) {
|
|
|
|
+// return $this->forbidden("Please select the correct requirement");
|
|
|
|
+// }
|
|
|
|
+ DB::transaction(function () use ($requirementIds,$project) {
|
|
|
|
+ foreach ($requirementIds as $requirementId) {
|
|
|
|
+ ProjectRequirement::query()->firstOrCreate([
|
|
|
|
+ 'project_id' => $project->id,
|
|
|
|
+ 'requirement_id' => $requirementId,
|
|
|
|
+ ]);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
|
|
return $this->noContent();
|
|
return $this->noContent();
|
|
}
|
|
}
|
|
|
|
|
|
public function unlinkRequirement(UnlinkRequirementRequest $request, string $id)
|
|
public function unlinkRequirement(UnlinkRequirementRequest $request, string $id)
|
|
{
|
|
{
|
|
- $project = Project::findOrFail($id);
|
|
|
|
|
|
|
|
- $requirement = Requirement::findOrFail($request->requirement_id);
|
|
|
|
|
|
+ $requirementIds = $request->get("requirement_id",[]);
|
|
|
|
+ $project = Project::findOrFail($id);
|
|
|
|
|
|
- $exists = ProjectAsset::query()
|
|
|
|
- ->where('project_id', $project->id)
|
|
|
|
- ->where('asset_id', $requirement->asset_id)
|
|
|
|
- ->count();
|
|
|
|
- if (! $exists) {
|
|
|
|
|
|
+ if (! $requirementIds) {
|
|
return $this->forbidden("Please select the correct requirement");
|
|
return $this->forbidden("Please select the correct requirement");
|
|
}
|
|
}
|
|
|
|
|
|
- ProjectRequirement::query()->where([
|
|
|
|
- 'project_id' => $project->id,
|
|
|
|
- 'requirement_id' => $requirement->id,
|
|
|
|
- ])->delete();
|
|
|
|
|
|
+ if($project->requirements->isEmpty()){
|
|
|
|
+ return $this->forbidden("Project has no associated requirements");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ DB::transaction(function () use ($requirementIds,$project) {
|
|
|
|
+ foreach ($requirementIds as $requirement) {
|
|
|
|
+ ProjectRequirement::query()->where([
|
|
|
|
+ 'project_id' => $project->id,
|
|
|
|
+ 'requirement_id' => $requirement,
|
|
|
|
+ ])->delete();
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
|
|
return $this->noContent();
|
|
return $this->noContent();
|
|
}
|
|
}
|
|
@@ -291,9 +305,8 @@ class ProjectController extends Controller
|
|
public function notLinkAssetRequirement(string $id)
|
|
public function notLinkAssetRequirement(string $id)
|
|
{
|
|
{
|
|
$project = Project::findOrFail($id);
|
|
$project = Project::findOrFail($id);
|
|
-
|
|
|
|
$requirements = $project->assets
|
|
$requirements = $project->assets
|
|
- ? Requirement::query()->whereIn('asset_id', $project->assets?->pluck('id')->toArray())->simplePaginate()
|
|
|
|
|
|
+ ? Requirement::query()->whereIn('asset_id', $project->assets?->pluck('id')->toArray())->whereNotIn('id', $project->requirements?->pluck('id')->toArray())->simplePaginate()
|
|
: [];
|
|
: [];
|
|
|
|
|
|
return AssetRequirementResource::collection($requirements);
|
|
return AssetRequirementResource::collection($requirements);
|