|
@@ -13,6 +13,7 @@ use App\Http\Controllers\Admin\AdminReportController;
|
|
|
use App\Http\Controllers\Admin\AdminSettingsController;
|
|
|
use App\Http\Controllers\Admin\AdminUserController;
|
|
|
use App\Instance;
|
|
|
+use App\Mail\AdminMessageResponse;
|
|
|
use App\Models\CustomEmoji;
|
|
|
use App\Newsroom;
|
|
|
use App\OauthClient;
|
|
@@ -29,6 +30,7 @@ use Cache;
|
|
|
use DB;
|
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Validation\Rule;
|
|
|
+use Mail;
|
|
|
use Storage;
|
|
|
|
|
|
class AdminController extends Controller
|
|
@@ -221,18 +223,62 @@ class AdminController extends Controller
|
|
|
|
|
|
public function messagesHome(Request $request)
|
|
|
{
|
|
|
- $messages = Contact::orderByDesc('id')->paginate(10);
|
|
|
+ $this->validate($request, [
|
|
|
+ 'sort' => 'sometimes|string|in:all,open,closed',
|
|
|
+ ]);
|
|
|
+ $sort = $request->input('sort', 'open');
|
|
|
|
|
|
- return view('admin.messages.home', compact('messages'));
|
|
|
+ $messages = Contact::when($sort, function ($query, $sort) {
|
|
|
+ if ($sort === 'open') {
|
|
|
+ $query->whereNull('read_at');
|
|
|
+ }
|
|
|
+ if ($sort === 'closed') {
|
|
|
+ $query->whereNotNull('read_at');
|
|
|
+ }
|
|
|
+ })
|
|
|
+ ->orderByDesc('id')
|
|
|
+ ->paginate(10)
|
|
|
+ ->withQueryString();
|
|
|
+
|
|
|
+ return view('admin.messages.home', compact('messages', 'sort'));
|
|
|
}
|
|
|
|
|
|
public function messagesShow(Request $request, $id)
|
|
|
{
|
|
|
$message = Contact::findOrFail($id);
|
|
|
+ $user = User::whereNull('status')->findOrFail($message->user_id);
|
|
|
|
|
|
return view('admin.messages.show', compact('message'));
|
|
|
}
|
|
|
|
|
|
+ public function messagesReply(Request $request, $id)
|
|
|
+ {
|
|
|
+ $this->validate($request, [
|
|
|
+ 'message' => 'required|string|min:1|max:500',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $message = Contact::whereNull('responded_at')->findOrFail($id);
|
|
|
+ $message->response = $request->input('message');
|
|
|
+ $message->read_at = now();
|
|
|
+ $message->responded_at = now();
|
|
|
+ $message->save();
|
|
|
+
|
|
|
+ Mail::to($message->user->email)->send(new AdminMessageResponse($message));
|
|
|
+
|
|
|
+ return redirect('/i/admin/messages/home')->with('status', 'Sent response to '.$message->user->username);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function messagesReplyPreview(Request $request, $id)
|
|
|
+ {
|
|
|
+ $this->validate($request, [
|
|
|
+ 'message' => 'required|string|min:1|max:500',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $message = Contact::whereNull('read_at')->findOrFail($id);
|
|
|
+
|
|
|
+ return new AdminMessageResponse($message);
|
|
|
+ }
|
|
|
+
|
|
|
public function messagesMarkRead(Request $request)
|
|
|
{
|
|
|
$this->validate($request, [
|
|
@@ -245,7 +291,9 @@ class AdminController extends Controller
|
|
|
}
|
|
|
$message->read_at = now();
|
|
|
$message->save();
|
|
|
+ $request->session()->flash('status', 'Marked response from '.$message->user->username.' as read!');
|
|
|
|
|
|
+ return ['status' => 200];
|
|
|
}
|
|
|
|
|
|
public function newsroomHome(Request $request)
|
|
@@ -355,7 +403,7 @@ class AdminController extends Controller
|
|
|
if (Newsroom::whereSlug($slug)->exists()) {
|
|
|
$slug = $slug.'-'.str_random(4);
|
|
|
}
|
|
|
- $news = new Newsroom();
|
|
|
+ $news = new Newsroom;
|
|
|
$fields = [
|
|
|
'title' => 'string',
|
|
|
'summary' => 'string',
|