<?php

use Illuminate\Support\Facades\Broadcast;
use App\UserConversation;

/*
|--------------------------------------------------------------------------
| Broadcast Channels
|--------------------------------------------------------------------------
|
| Here you may register all of the event broadcasting channels that your
| application supports. The given channel authorization callbacks are
| used to check if an authenticated user can listen to the channel.
|
*/

/*Broadcast::channel('App.User.{id}', function ($user, $id) {
    return (int) $user->id === (int) $id;
});*/

Broadcast::channel('notify.{id}', function ($user, $id) {
    return $id == 'all';
});

Broadcast::channel('notify.user.{id}', function ($user, $id) {
    return (int) $user->id === (int) $id;
});

// Channel cho global user notifications
Broadcast::channel('user.{id}', function ($user, $id) {
    return (int) $user->id === (int) $id;
});

// Channel cho admin
Broadcast::channel('chat.admin.{id}', function ($user, $id) {
    // Kiểm tra xem user hiện tại có phải là admin và có quyền truy cập channel này không
    return (int) $user->id === (int) $id && $user->hasRole(['admin', 'manager']);
});

// Channel cho tất cả admin
Broadcast::channel('chat.admin.all', function ($user) {
    return $user->hasRole(['admin', 'manager']);
});

// Deprecated: Không sử dụng chat.user channels nữa
// Broadcast::channel('chat.user.{userId}', function ($user, $userId) {
//     return (int) $user->id === (int) $userId;
// });

// Channel conversion: Chỉ cho phép user thuộc về channel này
Broadcast::channel('chat.conversion.{conversionId}', function ($user, $conversionId) {
	$conversion = UserConversation::where('user_id', $user->id)->where('conversation_id', $conversionId)->first();
	return isset($conversion);
});