MsgAnswersController.php
3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Message;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
class MsgAnswersController extends Controller
{
public function messages() {
$Msgs = Message::with('user_from')->with('user_to')->with('response')->orderByDesc('created_at')->paginate(25);
return view('admin.messages', compact('Msgs'));
}
public function admin_messages(Request $request) {
if ($request->ajax()) {
$msg = Message::find($request->id);
$msg->flag_new = !($request->flag_new);
$msg->save();
}
$id_admin = Auth::user()->id;
$users = User::query()->OrderBy('name')->get();
$Msgs = Message::with('user_from')->with('user_to')->with('response')
->where('user_id', '=', $id_admin)
->orWhere('to_user_id', '=', $id_admin)
->orderByDesc('created_at')->paginate(5);
if ($request->ajax())
return view('admin.message.index_ajax', compact('Msgs', 'id_admin', 'users'));
else
return view('admin.message.index', compact('Msgs', 'id_admin', 'users'));
}
public function messages_sql(Request $request) {
$id = Auth::user()->id;
DB::enableQueryLog();
//$query = DB::select('select * from users where id = :id', ['id' => 1]);
$query = DB::select(DB::raw('SELECT u1.name as "To-user", u2.name as "From-user", m1.`text`, m1.created_at
FROM messages m1
JOIN (SELECT MAX(id) id FROM messages
GROUP BY LEAST(user_id, to_user_id),
GREATEST(user_id, to_user_id)
) m2 USING (id)
JOIN users u1 ON u1.id = m1.user_id
JOIN users u2 ON u2.id = m1.to_user_id
Where ((m1.user_id = :uid) or (m1.to_user_id = :uid2))
'), ['uid' => $id, 'uid2' => $id]);
//dump(DB::getQueryLog());
dd($query);
return;
}
public function admin_messages_post(Request $request) {
$rules = [
'title' => 'required|min:3|max:255',
'text' => 'required|min:1'
];
$messages = [
'required' => 'Поле не может быть пустым!',
];
$validator = Validator::make($request->all(), $rules, $messages);
if ($validator->fails()) {
return redirect()->route('admin.admin-messages')->withErrors($validator);
} else {
$params = $request->all();
$id_admin = Auth::user()->id;
if ($request->has('file')) {
$params['file'] = $request->file('file')->store("upload/".$id_admin, 'public');
}
Message::create($params);
return redirect()->route('admin.admin-messages');
}
}
}