commonUtil = $commonUtil; $this->ppUtil = $ppUtil; $this->moduleUtil = $moduleUtil; } protected function authorizeModule() { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'professional_project_module'))) { abort(403, 'Unauthorized action.'); } if (! auth()->user()->can('professionalproject.view_gantt')) { abort(403, 'Unauthorized action.'); } } public function index($project_id) { $this->authorizeModule(); $business_id = request()->session()->get('user.business_id'); $project = PpProject::where('business_id', $business_id)->findOrFail($project_id); if (! $this->ppUtil->canAccessProject(auth()->user(), $business_id, $project_id)) { abort(403, 'Unauthorized action.'); } $tasks = $this->ppUtil->tasksForGantt($project_id); $links = PpGanttLink::where('project_id', $project_id)->get()->map(function ($link) { return [ 'id' => $link->id, 'source' => $link->source_task_id, 'target' => $link->target_task_id, 'type' => (string) $link->link_type, ]; }); return view('professionalproject::gantt.chart') ->with(compact('project', 'tasks', 'links')); } }