|
@@ -8,24 +8,34 @@ use App\Http\Requests\API\Project\LinkRequirementByPlanRequest;
|
|
|
use App\Http\Requests\API\Project\LinkRequirementRequest;
|
|
|
use App\Http\Requests\API\Project\PostponeRequest;
|
|
|
use App\Http\Requests\API\Project\UnlinkRequirementRequest;
|
|
|
+use App\Http\Requests\API\Project\UpdateLinkAssetsRequest;
|
|
|
use App\Http\Resources\API\AssetRequirementGroupTreeResource;
|
|
|
use App\Http\Resources\API\AssetRequirementResource;
|
|
|
use App\Http\Resources\API\AssetParentResource;
|
|
|
use App\Http\Resources\API\ProjectAssetResource;
|
|
|
use App\Http\Resources\API\ProjectDetailResource;
|
|
|
+use App\Http\Resources\API\ProjectGroupViewTaskResource;
|
|
|
+use App\Http\Resources\API\ProjectKanbanRequirementResource;
|
|
|
+use App\Http\Resources\API\ProjectKanbanTaskResource;
|
|
|
use App\Http\Resources\API\SimplePlanResource;
|
|
|
use App\Http\Resources\API\ProjectRequirementResource;
|
|
|
use App\Http\Resources\API\ProjectResource;
|
|
|
use App\Models\Enums\ObjectAction;
|
|
|
use App\Models\Enums\ProjectStatus;
|
|
|
+use App\Models\Enums\TaskStatus;
|
|
|
use App\Models\Plan;
|
|
|
use App\Models\Project;
|
|
|
use App\Models\ProjectAsset;
|
|
|
use App\Models\ProjectPlan;
|
|
|
use App\Models\ProjectRequirement;
|
|
|
use App\Models\Requirement;
|
|
|
+use App\Models\Task;
|
|
|
+use App\Models\User;
|
|
|
use App\Models\RequirementGroup;
|
|
|
use App\Repositories\ActionRepository;
|
|
|
+use App\Services\Project\ProjectKanbanService;
|
|
|
+use App\Services\Project\ProjectGanttService;
|
|
|
+use App\Services\Project\ProjectTaskGroupViewService;
|
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
@@ -306,7 +316,6 @@ class ProjectController extends Controller
|
|
|
foreach ($plan->requirements as $requirement) {
|
|
|
ProjectRequirement::query()->firstOrCreate([
|
|
|
'project_id' => $project->id, 'requirement_id' => $requirement->id,
|
|
|
- ''
|
|
|
]);
|
|
|
}
|
|
|
|
|
@@ -338,4 +347,85 @@ class ProjectController extends Controller
|
|
|
|
|
|
return AssetRequirementResource::collection($requirements);
|
|
|
}
|
|
|
+
|
|
|
+ public function updateLinkAssets(UpdateLinkAssetsRequest $request,string $project_id)
|
|
|
+ {
|
|
|
+ $project = Project::find($project_id);
|
|
|
+ if (is_null($project)){
|
|
|
+ return $this->badRequest('project does not exist');
|
|
|
+ }
|
|
|
+ $assetsIds = $request->assets;
|
|
|
+ DB::transaction(function () use ($project_id,$assetsIds) {
|
|
|
+ ProjectAsset::where('project_id', $project_id)->delete();
|
|
|
+ foreach ($assetsIds as $assetId) {
|
|
|
+ ProjectAsset::create([
|
|
|
+ 'project_id' => $project_id,
|
|
|
+ 'asset_id' => $assetId,
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return $this->noContent();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function dynamic(Request $request, string $id)
|
|
|
+ {
|
|
|
+ $project = Project::findOrFail($id);
|
|
|
+
|
|
|
+ return $this->success([
|
|
|
+ 'data' => ActionRepository::dynamic($project, $request->all())
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function kanban(Request $request, ProjectKanbanService $service, string $id)
|
|
|
+ {
|
|
|
+ $project = Project::findOrFail($id);
|
|
|
+
|
|
|
+ return $this->success([
|
|
|
+ 'data' => $service->kanban($project, $request->get("group", "requirement_asc"))
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function groupView(Request $request, string $id)
|
|
|
+ {
|
|
|
+ $project = Project::findOrFail($id);
|
|
|
+
|
|
|
+ $group = in_array(
|
|
|
+ $request->get("group"),
|
|
|
+ ['requirement_id','status','assign','finished_by','closed_by','task_type']
|
|
|
+ ) ? $request->get("group") : "requirement_id";
|
|
|
+
|
|
|
+
|
|
|
+ return $this->success([
|
|
|
+ 'data' => (new ProjectTaskGroupViewService())->groupView($project, $group, $request->all())
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function gantt(Request $request, string $id)
|
|
|
+ {
|
|
|
+ $project = Project::findOrFail($id);
|
|
|
+
|
|
|
+ $group = in_array(
|
|
|
+ $request->get("group"),
|
|
|
+ ['requirement_id','assign','task_type']
|
|
|
+ ) ? $request->get("group") : "task_type";
|
|
|
+
|
|
|
+
|
|
|
+ return $this->success([
|
|
|
+ 'data' => (new ProjectGanttService())->gantt($project, $group)
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function printKanban(string $id)
|
|
|
+ {
|
|
|
+ $project = Project::findOrFail($id);
|
|
|
+
|
|
|
+ return $this->success([
|
|
|
+ 'data' => [
|
|
|
+ 'requirements' => ProjectKanbanRequirementResource::collection($project->requirements),
|
|
|
+ 'tasks' => ProjectKanbanTaskResource::collection($project->tasks),
|
|
|
+ 'task_status' => TaskStatus::cases(),
|
|
|
+ ]
|
|
|
+ ]);
|
|
|
+ }
|
|
|
}
|