Blame view
app/Http/Controllers/Admin/MsgAnswersController.php
6.36 KB
82a9544dc Связи моделей, гр... |
1 2 3 4 5 6 |
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\Message; |
e688e0d8a Статистика работн... |
7 |
use App\Models\User; |
a89ff088a Поисковая система... |
8 |
use Illuminate\Database\Eloquent\Builder; |
82a9544dc Связи моделей, гр... |
9 |
use Illuminate\Http\Request; |
e688e0d8a Статистика работн... |
10 |
use Illuminate\Support\Facades\Auth; |
93a3f79f0 Поисковый движок ... |
11 |
use Illuminate\Support\Facades\DB; |
e688e0d8a Статистика работн... |
12 |
use Illuminate\Support\Facades\Validator; |
82a9544dc Связи моделей, гр... |
13 14 15 |
class MsgAnswersController extends Controller { |
a89ff088a Поисковая система... |
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 86 87 88 89 90 91 92 93 94 95 96 |
public function messages(Request $request) { $find_key = ""; $find_cat = ""; $Msgs = Message::with('user_from')->with('user_to')->with('response'); $Msgs = $this->filter($Msgs, $request, $find_key, $find_cat); $Msgs = $Msgs->orderByDesc('created_at')->paginate(25); return view('admin.messages', compact('Msgs', 'find_key', 'find_cat')); } public function read_message(Message $message) { return view('admin.message-read', compact('message')); } public function filter($Msgs, Request $request, &$find_key, &$find_cat) { if (isset($request->find)) { $find_key = $request->find; $Msgs = $Msgs->where(function($q) use ($find_key) { $q->whereHas('user_from', function (Builder $query) use ($find_key) { $query->where('name', 'LIKE', "%$find_key%"); } )-> orWhereHas('user_to', function (Builder $query) use ($find_key) { $query->where('name', 'LIKE', "%$find_key%"); } ); }); } if (isset($request->category)) { $find_cat = $request->category; switch ($find_cat) { case 'Работодатели': $Msgs = $Msgs->where(function($q) { $q->whereHas('user_to', function (Builder $query) { $query->where('is_worker', '0'); } )->orwhereHas('user_from', function (Builder $query) { $query->where('is_worker', '0'); } ); }); break; case 'Соискатели': $Msgs = $Msgs->where(function($q) { $q->whereHas('user_to', function (Builder $query) { $query->where('is_worker', '1'); } )->orwhereHas('user_from', function (Builder $query) { $query->where('is_worker', '1'); } ); }); break; case 'Администраторы': $Msgs = $Msgs->where(function($q) { $q->whereHas('user_to', function (Builder $query) { $query->where('admin', '1'); } )->orwhereHas('user_from', function (Builder $query) { $query->where('admin', '1'); } ); }); break; default:break; } } return $Msgs; |
82a9544dc Связи моделей, гр... |
97 |
|
82a9544dc Связи моделей, гр... |
98 |
} |
e688e0d8a Статистика работн... |
99 100 |
public function admin_messages(Request $request) { |
f060aa75b Счетчик сообщений... |
101 102 103 104 105 |
if ($request->ajax()) { $msg = Message::find($request->id); $msg->flag_new = !($request->flag_new); $msg->save(); } |
e688e0d8a Статистика работн... |
106 107 |
$id_admin = Auth::user()->id; $users = User::query()->OrderBy('name')->get(); |
00652ea57 Оптимизация запро... |
108 |
$Msgs = Message::with('user_from')->with('user_to')->with('response') |
a89ff088a Поисковая система... |
109 110 111 112 113 114 115 116 117 118 119 |
->where(function($query) use ($id_admin) { $query->where('user_id', '=', $id_admin) ->orWhere('to_user_id', '=', $id_admin); }); $find_key = ''; $find_cat = ''; $Msgs = $this->filter($Msgs, $request, $find_key, $find_cat); $Msgs = $Msgs->orderByDesc('created_at')->paginate(5); |
e688e0d8a Статистика работн... |
120 |
|
f060aa75b Счетчик сообщений... |
121 122 123 |
if ($request->ajax()) return view('admin.message.index_ajax', compact('Msgs', 'id_admin', 'users')); else |
a89ff088a Поисковая система... |
124 |
return view('admin.message.index', compact('Msgs', 'id_admin', 'users', 'find_key', 'find_cat')); |
e688e0d8a Статистика работн... |
125 |
} |
93a3f79f0 Поисковый движок ... |
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
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; } |
e688e0d8a Статистика работн... |
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
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'); } } |
82a9544dc Связи моделей, гр... |
168 |
} |