user()->can('managementtools.urgent_messages'); } protected function canView(): bool { return $this->canManage() || auth()->user()->can('managementtools.urgent_messages_view'); } protected function authorizeManage(): void { if (! $this->canManage()) { abort(403, 'Unauthorized action.'); } } protected function authorizeView(): void { if (! $this->canView()) { abort(403, 'Unauthorized action.'); } } public function index(Request $request) { $this->authorizeView(); $business_id = (int) $request->session()->get('user.business_id'); if ($request->ajax()) { if (! $this->canManage()) { abort(403, 'Unauthorized action.'); } $sentences = MtDefaultSentence::forBusiness($business_id)->ordered(); return DataTables::of($sentences) ->addColumn('action', function ($row) { $html = '
'; $html .= ''; $html .= ' '; $html .= '
'; return $html; }) ->editColumn('sentence', fn ($row) => e(\Str::limit($row->sentence, 120))) ->rawColumns(['action']) ->make(true); } if ($this->canManage()) { return view('managementtools::urgent_messages.index'); } $sentences = MtDefaultSentence::forBusiness($business_id)->ordered()->get(); return view('managementtools::urgent_messages.inbox', compact('sentences')); } public function create() { $this->authorizeManage(); return view('managementtools::urgent_messages.create'); } public function store(Request $request) { $this->authorizeManage(); $business_id = (int) $request->session()->get('user.business_id'); $request->validate([ 'sentence' => 'required|string|max:500', 'sort_order' => 'nullable|integer|min:0|max:255', ]); MtDefaultSentence::create([ 'business_id' => $business_id, 'sentence' => $request->sentence, 'sort_order' => $request->input('sort_order', 0), ]); return response()->json(['success' => true, 'msg' => __('managementtools::lang.sentence_added')]); } public function edit($id) { $this->authorizeManage(); $business_id = (int) request()->session()->get('user.business_id'); $sentence = MtDefaultSentence::forBusiness($business_id)->findOrFail($id); return view('managementtools::urgent_messages.edit', compact('sentence')); } public function update(Request $request, $id) { $this->authorizeManage(); $business_id = (int) $request->session()->get('user.business_id'); $sentence = MtDefaultSentence::forBusiness($business_id)->findOrFail($id); $request->validate([ 'sentence' => 'required|string|max:500', 'sort_order' => 'nullable|integer|min:0|max:255', ]); $sentence->update([ 'sentence' => $request->sentence, 'sort_order' => $request->input('sort_order', 0), ]); return response()->json(['success' => true, 'msg' => __('managementtools::lang.sentence_updated')]); } public function destroy($id) { $this->authorizeManage(); $business_id = (int) request()->session()->get('user.business_id'); $sentence = MtDefaultSentence::forBusiness($business_id)->findOrFail($id); $sentence->delete(); return response()->json(['success' => true, 'msg' => __('managementtools::lang.sentence_deleted')]); } }