MsgAnswersController.php 3.08 KB
<?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::query()->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::query()->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');
        }
    }
}