diff --git a/app/Http/Controllers/ChatController.php b/app/Http/Controllers/ChatController.php index 447b6091..5b0cf315 100644 --- a/app/Http/Controllers/ChatController.php +++ b/app/Http/Controllers/ChatController.php @@ -10,16 +10,21 @@ use Illuminate\Support\Facades\Storage; class ChatController extends Controller { - // Lista de usuarios con quienes puedo chatear + // Lista de amigos con quienes puedo chatear public function index() { - $users = User::where('id', '!=', auth()->id())->get(); - return view('chat.index', compact('users')); + $me = auth()->user(); + $friends = User::whereIn('id', $me->friendIds())->orderBy('name')->get(); + return view('chat.index', compact('friends')); } // Mensajes entre yo y otro usuario public function show(User $user) { + $me = auth()->user(); + $isFriend = $me->isFriendWith($user); + $friendship = $me->friendshipWith($user); + $messages = Message::where(function ($q) use ($user) { $q->where('user_id', auth()->id()) ->where('receiver_id', $user->id); @@ -32,13 +37,15 @@ class ChatController extends Controller ->orderBy('created_at', 'asc') ->get(); - // marcar como leídos - Message::where('user_id', $user->id) - ->where('receiver_id', auth()->id()) - ->whereNull('read_at') - ->update(['read_at' => now()]); + // marcar como leídos solo si son amigos + if ($isFriend) { + Message::where('user_id', $user->id) + ->where('receiver_id', $me->id) + ->whereNull('read_at') + ->update(['read_at' => now()]); + } - return view('chat.show', compact('user', 'messages')); + return view('chat.show', compact('user', 'messages', 'isFriend', 'friendship')); } // Enviar mensaje @@ -50,6 +57,9 @@ class ChatController extends Controller 'attachment' => 'nullable|file|max:20480', ]); + $receiver = User::findOrFail($request->receiver_id); + abort_unless(auth()->user()->isFriendWith($receiver), 403, 'No puedes enviar mensajes a esta persona.'); + $attachment = null; $attachmentType = null; diff --git a/resources/views/chat/index.blade.php b/resources/views/chat/index.blade.php index eb405eb7..ea22d060 100644 --- a/resources/views/chat/index.blade.php +++ b/resources/views/chat/index.blade.php @@ -9,20 +9,28 @@
Chats
- @foreach($users as $user) - + @forelse($friends as $friend) +
-
-
{{ $user->name }}
- {{ $user->getRoleNames()->first() }} +
{{ $friend->name }}
+ {{ $friend->getRoleNames()->first() }}
- @endforeach + @empty +
+ +

Aún no tienes amigos para chatear.

+ + Buscar personas + +
+ @endforelse
diff --git a/resources/views/chat/show.blade.php b/resources/views/chat/show.blade.php index a09642e6..4aada1eb 100644 --- a/resources/views/chat/show.blade.php +++ b/resources/views/chat/show.blade.php @@ -51,23 +51,51 @@ diff --git a/resources/views/layouts/_partials/header.blade.php b/resources/views/layouts/_partials/header.blade.php index 8fbe384c..d8526016 100644 --- a/resources/views/layouts/_partials/header.blade.php +++ b/resources/views/layouts/_partials/header.blade.php @@ -28,24 +28,25 @@