commonUtil = $commonUtil; $this->ppUtil = $ppUtil; $this->moduleUtil = $moduleUtil; } protected function authorizeModule() { $business_id = request()->session()->get('user.business_id'); if (! auth()->user()->can('professionalproject.manage_task_statuses')) { abort(403, 'Unauthorized action.'); } $this->ppUtil->ensureTaskStatuses($business_id, auth()->user()->id); } public function index() { $this->authorizeModule(); $business_id = request()->session()->get('user.business_id'); $statuses = PpTaskStatus::where('business_id', $business_id)->orderBy('position')->get(); return view('professionalproject::task_status.index')->with(compact('statuses')); } public function store(Request $request) { $this->authorizeModule(); $business_id = $request->session()->get('user.business_id'); PpTaskStatus::create([ 'business_id' => $business_id, 'title' => $request->input('title'), 'color' => $request->input('color', '#3498db'), 'position' => (PpTaskStatus::where('business_id', $business_id)->max('position') ?? 0) + 1, 'is_completed' => ! empty($request->input('is_completed')), 'created_by' => auth()->user()->id, ]); return ['success' => true, 'msg' => __('lang_v1.success')]; } public function update(Request $request, $id) { $this->authorizeModule(); $business_id = $request->session()->get('user.business_id'); $status = PpTaskStatus::where('business_id', $business_id)->findOrFail($id); $status->update([ 'title' => $request->input('title', $status->title), 'color' => $request->input('color', $status->color), 'position' => $request->input('position', $status->position), 'is_completed' => $request->has('is_completed') ? ! empty($request->input('is_completed')) : $status->is_completed, ]); return ['success' => true, 'msg' => __('lang_v1.success')]; } public function destroy($id) { $this->authorizeModule(); $business_id = request()->session()->get('user.business_id'); $status = PpTaskStatus::where('business_id', $business_id)->findOrFail($id); if (PpTask::where('status_id', $status->id)->exists()) { return ['success' => false, 'msg' => __('professionalproject::lang.status_has_tasks')]; } $status->delete(); return ['success' => true, 'msg' => __('lang_v1.success')]; } }