diff --git a/app/Http/Controllers/Api/GroupSearchController.php b/app/Http/Controllers/Api/GroupSearchController.php index 5cc2131..a327afe 100755 --- a/app/Http/Controllers/Api/GroupSearchController.php +++ b/app/Http/Controllers/Api/GroupSearchController.php @@ -11,9 +11,28 @@ class GroupSearchController extends Controller public function __invoke(Request $request) { $query = $request->get('q', ''); + $userId = $request->get('user_id', null); - $groups = Group::query() - ->with('organization') + $groupsQuery = Group::query()->with('organization'); + + // Если указан user_id - фильтруем по доступным группам + if ($userId) { + $user = \App\Models\User::find($userId); + if ($user) { + if ($user->organization_id) { + // Пользователь в организации - показываем общие + группы организации + $groupsQuery->where(function($q) use ($user) { + $q->whereNull('organization_id') + ->orWhere('organization_id', $user->organization_id); + }); + } else { + // Пользователь без организации - только общие группы + $groupsQuery->whereNull('organization_id'); + } + } + } + + $groups = $groupsQuery ->where('name', 'like', "%{$query}%") ->orderBy('name') ->limit(50) diff --git a/resources/views/admin/users/edit.blade.php b/resources/views/admin/users/edit.blade.php index e75a712..78a5c76 100644 --- a/resources/views/admin/users/edit.blade.php +++ b/resources/views/admin/users/edit.blade.php @@ -66,8 +66,9 @@ Выберите группы diff --git a/resources/views/components/tags-input.blade.php b/resources/views/components/tags-input.blade.php index 1d2c1c9..24fb721 100644 --- a/resources/views/components/tags-input.blade.php +++ b/resources/views/components/tags-input.blade.php @@ -1,4 +1,4 @@ -@props(['name', 'url', 'placeholder' => 'Начните вводить...', 'value' => []]) +@props(['name', 'url', 'placeholder' => 'Начните вводить...', 'value' => [], 'user_id' => null])
@@ -69,7 +69,12 @@ document.addEventListener('DOMContentLoaded', function() { load: function(query, callback) { if (query.length < 2) return callback(); - fetch('{{ $url }}?q=' + encodeURIComponent(query)) + let url = '{{ $url }}?q=' + encodeURIComponent(query); + @if($user_id) + url += '&user_id={{ $user_id }}'; + @endif + + fetch(url) .then(response => response.json()) .then(json => { // Фильтруем уже выбранные