File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Http/Controllers/ChatController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Events\ChatEvent;
use App\Chat;
use App\Message;
use App\ChatMessage;
class ChatController extends Controller
{
public function index()
{
$chats = Chat::orderBy('created_at', 'DESC')->with('user')->with('chatMessages')->get();
return view('chats.chats')->with('chats', $chats);
}
public function indexCheck($id)
{
$chat = Chat::where('id', $id)->with('user')->first();
$messages = ChatMessage::where('chat_id', $chat->id)->with('messages')->get();
foreach ($messages as $key => $msg) {
$readMsg = Message::find($msg->messages_id);
$readMsg->read_admin = 1;
$readMsg->save();
}
return view('chats.checkChat')
->with('user', $chat)
->with('messages', $messages);
}
public function sendMessage(Request $request)
{
$message = $request['message'];
$chat = $request['idChat'];
$idAdmin = Auth::user()->id;
$name = Auth::user()->first_name . ' ' . Auth::user()->last_name;
$msg = new Message();
$msg->message = $message;
$msg->admin_id = $idAdmin;
$msg->save();
$time = Message::time_elapsed_string($msg->created_at);
$chatMsg = new ChatMessage();
$chatMsg->chat_id = $chat;
$chatMsg->messages_id = $msg->id;
$chatMsg->save();
$chatClient = Chat::find($chat);
event(new ChatEvent($message, $chatClient->user_id, Auth::user()->rol_id));
$r = array('name' => $name, 'message' => $message, 'time' => $time);
return array('r' => true, 'd' => $r);
}
public function searchFilter(Request $request)
{
$txt = $request['text'];
$messages = Message::select('messages.message', 'users.*')
->join('users', 'messages.user_id', '=', 'users.id')
->where(function ($q) use ($txt) {
$q->where('messages.id', $txt)
->orWhere('messages.message', 'LIKE', '%' . $txt . '%')
->orWhere('users.first_name', 'LIKE', '%' . $txt . '%')
->orWhere('users.last_name', 'LIKE', '%' . $txt . '%');
})->get();
return array('r' => true, 'd' => $messages, 'm' => trans('messages.controller_chats_tag1'));
}
public function deleteChat(Request $request)
{
$chats = $request['chats'];
$chatMessagesIds = array();
foreach ($chats as $key => $chat) {
$chatId = $chat['id'];
$copyChatMsgs = ChatMessage::where('chat_id', $chatId)->get();
ChatMessage::where('chat_id', $chatId)->delete();
for ($i = 0; $i < count($copyChatMsgs); $i++) {
Message::find($copyChatMsgs[$i]->messages_id)->delete();
}
$chat = Chat::find($chatId);
$logObject = $chat;
$this->registerLog(Auth::user()->id, 'EliminĂ³ un chat', json_encode($logObject), "Delete", 7);
$chat->delete();
}
return array('r' => true, 'm' => trans('messages.controller_chats_tag2'));
}
}