diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 0e4cf8b..9c639ba 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -14,12 +14,37 @@ class UserController extends Controller /** * Wyświetla listę wszystkich użytkowników. */ - public function index() - { - $users = User::with('roles')->paginate(10); + public function index(Request $request) + { + $allowedSorts = ['name', 'email']; - return view('users.index', compact('users')); - } + $sort = in_array($request->query('sort'), $allowedSorts) ? $request->query('sort') : 'name'; + $direction = $request->query('direction') === 'desc' ? 'desc' : 'asc'; + $search = trim($request->query('search')); + + $query = User::with('roles'); + + // Wyszukiwanie w imieniu, nazwisku i adresie email + if ($search) { + $query->where(function ($q) use ($search) { + $q->where('name', 'like', "%{$search}%") + ->orWhere('surname', 'like', "%{$search}%") + ->orWhere('email', 'like', "%{$search}%"); + }); + } + + // Sortowanie + if ($sort === 'name') { + $query->orderBy('name', $direction)->orderBy('surname', $direction); + } else { + $query->orderBy($sort, $direction); + } + + // Zachowujemy query string w paginacji bezpośrednio z poziomu controllera + $users = $query->paginate(10)->withQueryString(); + + return view('users.index', compact('users')); + } /** * Formularz dodawania nowego użytkownika. diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php index 09b6fa2..a8380ba 100644 --- a/database/seeders/UserSeeder.php +++ b/database/seeders/UserSeeder.php @@ -45,7 +45,7 @@ class UserSeeder extends Seeder $pracownik->assignRole($pracownikRole); // 2. Generowanie dodatkowych 30 losowych użytkowników z rolami (password = 'password') - User::factory(30)->create()->each(function ($user) use ($pracownikRole, $kierownikRole) { + User::factory(300)->create()->each(function ($user) use ($pracownikRole, $kierownikRole) { $role = rand(1, 100) <= 80 ? $pracownikRole : $kierownikRole; $user->assignRole($role); }); diff --git a/resources/views/users/index.blade.php b/resources/views/users/index.blade.php index cf9ce30..0a1c657 100644 --- a/resources/views/users/index.blade.php +++ b/resources/views/users/index.blade.php @@ -1,24 +1,22 @@ - -
-

- {{ __('Lista użytkowników') }} -

+ +
+

+ {{ __('Lista użytkowników') }} +

- {{-- Dostęp tylko dla Admina i Kierownika --}} - @hasanyrole('admin|kierownik') - - - - - {{ __('Dodaj użytkownika') }} - - @endhasanyrole -
-
+ @hasanyrole('admin|kierownik') + + + + + {{ __('Dodaj użytkownika') }} + + @endhasanyrole +
+
-