From 4a2753c7e81b2c222d903ea5b7ac967603058c70 Mon Sep 17 00:00:00 2001 From: PovilasKorop Date: Mon, 22 Nov 2021 12:05:31 +0200 Subject: [PATCH] Task 9 - Filter users --- README.md | 8 ++++++++ app/Http/Controllers/UserController.php | 7 +++++++ resources/views/users/index.blade.php | 5 +++++ routes/web.php | 2 ++ tests/Feature/RelationshipsTest.php | 17 +++++++++++++++++ 5 files changed, 39 insertions(+) create mode 100644 resources/views/users/index.blade.php diff --git a/README.md b/README.md index d97c776..9d64cea 100644 --- a/README.md +++ b/README.md @@ -91,3 +91,11 @@ Test method `test_belongstomany_add()`. --- +## Task 9. Filter BelongsToMany Rows + +In the route `/users`, the list should show only the users with at least one project. Fix the Controller to add this filter. + +Test method `test_filter_users()`. + +--- + diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index f7cd286..7ae1d3d 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -6,6 +6,13 @@ use App\Models\User; class UserController extends Controller { + public function index() + { + $users = User::all(); + + return view('users.index', compact('users')); + } + public function show(User $user) { return view('users.show', compact('user')); diff --git a/resources/views/users/index.blade.php b/resources/views/users/index.blade.php new file mode 100644 index 0000000..2264bfc --- /dev/null +++ b/resources/views/users/index.blade.php @@ -0,0 +1,5 @@ + diff --git a/routes/web.php b/routes/web.php index ead44b9..ff19277 100644 --- a/routes/web.php +++ b/routes/web.php @@ -21,6 +21,7 @@ Route::get('/', function () { Route::get('tasks', [TaskController::class, 'index']); Route::post('tasks', [TaskController::class, 'store'])->middleware('auth'); +Route::get('users', [\App\Http\Controllers\UserController::class, 'index']); Route::get('users/{user}', [\App\Http\Controllers\UserController::class, 'show']); Route::get('roles', [\App\Http\Controllers\RoleController::class, 'index']); @@ -32,3 +33,4 @@ Route::get('countries', [\App\Http\Controllers\CountryController::class, 'index' Route::get('attachments', [\App\Http\Controllers\AttachmentController::class, 'index']); Route::post('projects', [\App\Http\Controllers\ProjectController::class, 'store'])->middleware('auth'); + diff --git a/tests/Feature/RelationshipsTest.php b/tests/Feature/RelationshipsTest.php index c23ec1a..8c01c05 100644 --- a/tests/Feature/RelationshipsTest.php +++ b/tests/Feature/RelationshipsTest.php @@ -153,4 +153,21 @@ class RelationshipsTest extends TestCase 'start_date' => now()->toDateString() ]); } + + // TASK: show only the users who have at least one project + public function test_filter_users() + { + $user1 = User::factory()->create(); + $user2 = User::factory()->create(); + $project = Project::create(['name' => 'Some project']); + DB::table('project_user')->insert([ + 'project_id' => $project->id, + 'user_id' => $user1->id, + 'start_date' => now()->toDateString() + ]); + + $response = $this->get('/users'); + $response->assertSee($user1->email); + $response->assertDontSee($user2->email); + } }