File: /var/www/vhost/disk-apps/agile-selling-wpb/app/Http/Controllers/ChatController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use App\Events\ChatEvent;
use App\Chat;
use App\Message;
use App\ChatMessage;
use DB;
use Datatables;
class ChatController extends Controller
{ public function __construct(Request $request)
{
$this->middleware('auth');
// $this->middleware(function ($request, $next) {
// $this->user = Auth::user();
// if(Auth::user()->rol->id == 1 || Auth::user()->rol->id == 6){
// $this->changeDbDefault($request);
// }
// return $next($request);
// });
}
public function index(){
// $rol = Auth::user()->rol->id;
// if ($rol == 1 || $rol == 6) {
$chats = Chat::orderBy('created_at', 'DESC')->with('user')->with('chatMessages')->get();
return view('chats.chats')->with('chats',$chats);
// }else{
// return redirect()->back();
// }
}
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'));
//Se asigna a una respuesta en array
}
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Ă³ una un chat', json_encode($logObject),"Delete", 7);
$chat->delete();
}
return array('r' => true,'m'=>trans('messages.controller_chats_tag2'));
}
}