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')]);
}
}