diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 65338723c8..f3be10cf7a 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -57,7 +57,6 @@ class UsersController extends Controller $users = $users->GetDeleted(); } - if ($request->has('company_id')) { $users = $users->where('company_id', '=', $request->input('company_id')); } @@ -65,6 +64,10 @@ class UsersController extends Controller if ($request->has('location_id')) { $users = $users->where('location_id', '=', $request->input('location_id')); } + + if ($request->has('group_id')) { + $users = $users->ByGroup($request->has('group_id')); + } if ($request->has('department_id')) { $users = $users->where('department_id','=',$request->input('department_id')); diff --git a/app/Http/Controllers/GroupsController.php b/app/Http/Controllers/GroupsController.php index c2519fcc6c..fabccf190c 100755 --- a/app/Http/Controllers/GroupsController.php +++ b/app/Http/Controllers/GroupsController.php @@ -87,10 +87,15 @@ class GroupsController extends Controller public function edit($id = null) { $group = Group::find($id); - $permissions = config('permissions'); - $groupPermissions = $group->decodePermissions(); - $selected_array = Helper::selectedPermissionsArray($permissions, $groupPermissions); - return view('groups.edit', compact('group', 'permissions', 'selected_array', 'groupPermissions')); + + if ($group) { + $permissions = config('permissions'); + $groupPermissions = $group->decodePermissions(); + $selected_array = Helper::selectedPermissionsArray($permissions, $groupPermissions); + return view('groups.edit', compact('group', 'permissions', 'selected_array', 'groupPermissions')); + } + + return redirect()->route('groups.index')->with('error', trans('admin/groups/message.group_not_found', compact('id'))); } /** @@ -142,4 +147,24 @@ class GroupsController extends Controller return redirect()->route('groups.index')->with('error', trans('general.feature_disabled')); } + /** + * Returns a view that invokes the ajax tables which actually contains + * the content for the group detail page. + * + * @author [A. Gianotto] [] + * @param int $locationId + * @since [v4.0.11] + * @return \Illuminate\Contracts\View\View + */ + public function show($id) + { + $group = Group::find($id); + + if ($group) { + return view('groups/view', compact('group')); + } + + return redirect()->route('groups.index')->with('error', trans('admin/groups/message.group_not_found', compact('id'))); + } + } diff --git a/app/Models/User.php b/app/Models/User.php index cbe0a2b60c..0639865a88 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -378,6 +378,14 @@ class User extends SnipeModel implements AuthenticatableContract, CanResetPasswo return json_decode($this->permissions, true); } + + public function scopeByGroup($query, $id) { + return $query->whereHas('groups', function ($query) use ($id) { + $query->where('id', '=', $id); + }); + } + + /** * Query builder scope to search on text * diff --git a/resources/views/groups/index.blade.php b/resources/views/groups/index.blade.php index dc665ea717..140307a9af 100755 --- a/resources/views/groups/index.blade.php +++ b/resources/views/groups/index.blade.php @@ -31,7 +31,7 @@ {{ trans('general.id') }} - {{ trans('admin/groups/table.name') }} + {{ trans('admin/groups/table.name') }} {{ trans('admin/groups/table.users') }} {{ trans('general.created_at') }} {{ trans('table.actions') }} diff --git a/resources/views/groups/view.blade.php b/resources/views/groups/view.blade.php index 875d818aef..a4ce704c0b 100644 --- a/resources/views/groups/view.blade.php +++ b/resources/views/groups/view.blade.php @@ -2,56 +2,63 @@ {{-- Page title --}} @section('title') -{{ trans('admin/groups/table.view') }} - -{{ $group->name }} -@parent + {{ $group->name }} + @parent @stop +@section('header_right') + {{ trans('admin/groups/titles.update') }} + {{ trans('general.back') }} +@stop + + + {{-- Page content --}} @section('content') -
-
- - {{ trans('admin/groups/table.update') }} - - - {{ trans('general.back') }} - -

{{ trans('admin/groups/titles.group_management') }} - {{ $group->name }}

-
-
+
+
+
+
+
+
+
+ + -
- - - - - - - @foreach ($users as $user) - - - - @endforeach - -
{{ trans('admin/groups/table.name') }}
- {{ $user->first_name }} {{ $user->last_name }} -
- - @else -
-
- - {{ trans('general.no_results') }} + +
+
+
- @endif
-
-
+
+ +
    + @foreach ($group->decodePermissions() as $permission_name => $permission) +
  • {!! ($permission == '1') ? '' : '' !!} {{ e(str_replace('.', ': ', ucwords($permission_name))) }}
  • + @endforeach + +
+ +
+
+ +@stop + +@section('moar_scripts') + @include ('partials.bootstrap-table', [ + 'exportFile' => 'groups-export', + 'search' => true, + 'columns' => \App\Presenters\UserPresenter::dataTableLayout() + ]) + @stop diff --git a/resources/views/partials/bootstrap-table.blade.php b/resources/views/partials/bootstrap-table.blade.php index e640d277a0..896cb97caf 100644 --- a/resources/views/partials/bootstrap-table.blade.php +++ b/resources/views/partials/bootstrap-table.blade.php @@ -332,6 +332,21 @@ $('.snipe-table').bootstrapTable({ } } + function groupsFormatter(value) { + + if (value) { + var groups = ''; + for (var index in value.rows) { + groups += ' ' + value.rows[index].name + ' '; + } + return groups; + } + } + + function groupsAdminLinkFormatter(value, row) { + return ' ' + value + ''; + } + function trueFalseFormatter(value, row) { if ((value) && ((value == 'true') || (value == '1'))) { return ''; diff --git a/resources/views/users/index.blade.php b/resources/views/users/index.blade.php index 29a7d6bf03..1fcd3a10b2 100755 --- a/resources/views/users/index.blade.php +++ b/resources/views/users/index.blade.php @@ -86,20 +86,5 @@ 'columns' => \App\Presenters\UserPresenter::dataTableLayout() ]) - @stop diff --git a/resources/views/users/view.blade.php b/resources/views/users/view.blade.php index 340d5e288c..05389e4c3e 100755 --- a/resources/views/users/view.blade.php +++ b/resources/views/users/view.blade.php @@ -536,7 +536,6 @@ $(function () { $('.progress-checkmark').fadeIn('fast').html(''); $.each(data.result.file, function (index, file) { $('' + file.notes + '<' + file.name + 'Just now' + file.filesize + ' Process').prependTo("#upload-table > tbody"); - //$('').text(file.name).appendTo(document.body); }); } $('#progress').removeClass('active'); diff --git a/routes/web.php b/routes/web.php index 31bda2239b..bb78fa8a80 100644 --- a/routes/web.php +++ b/routes/web.php @@ -190,7 +190,10 @@ Route::group([ 'prefix' => 'admin','middleware' => ['authorize:superuser']], fun Route::get('requests', [ 'as' => 'requests', 'middleware' => 'authorize:admin', 'uses' => 'ViewAssetsController@getRequestedIndex']); - + Route::resource('groups', 'GroupsController', [ + 'middleware' => ['auth'], + 'parameters' => ['group' => 'group_id'] + ]); Route::get('/', ['as' => 'settings.index', 'uses' => 'SettingsController@index' ]); @@ -198,10 +201,7 @@ Route::group([ 'prefix' => 'admin','middleware' => ['authorize:superuser']], fun }); -Route::resource('groups', 'GroupsController', [ - 'middleware' => ['auth'], - 'parameters' => ['group' => 'group_id'] -]); + /* |--------------------------------------------------------------------------