HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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'));

      }
}