From 58b17d246f1181ca22f43ecfcbecfa35068ecba7 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Tue, 27 Jun 2017 12:26:40 +0800 Subject: [PATCH] Added User Profile page and profileLink method to User model --- app/Http/Controllers/UsersController.php | 85 ++++++++++++++++++++++++++++++++ app/User.php | 6 +++ resources/views/home.blade.php | 14 +++--- routes/web.php | 6 ++- tests/Feature/UsersProfileTest.php | 20 ++++++++ tests/Unit/UserTest.php | 19 +++++++ 6 files changed, 141 insertions(+), 9 deletions(-) create mode 100644 app/Http/Controllers/UsersController.php create mode 100644 tests/Feature/UsersProfileTest.php create mode 100644 tests/Unit/UserTest.php diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php new file mode 100644 index 0000000..c78daa9 --- /dev/null +++ b/app/Http/Controllers/UsersController.php @@ -0,0 +1,85 @@ + $user]); + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\User $user + * @return \Illuminate\Http\Response + */ + public function edit(User $user) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\User $user + * @return \Illuminate\Http\Response + */ + public function update(Request $request, User $user) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param \App\User $user + * @return \Illuminate\Http\Response + */ + public function destroy(User $user) + { + // + } +} diff --git a/app/User.php b/app/User.php index 420f7c1..178a587 100644 --- a/app/User.php +++ b/app/User.php @@ -89,4 +89,10 @@ class User extends Authenticatable return $this->hasMany(User::class, 'father_id'); } + + public function profileLink() + { + $linkText = $this->name ?: $this->nickname; + return link_to_route('users.show', $linkText, [$this->id]); + } } diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 60c0de0..0761f55 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -5,18 +5,18 @@
-
Profile : {{ $currentUser->name }}
+
Profile : {{ $currentUser->name ?: $currentUser->nickname }}
- - + + - + @@ -26,7 +26,7 @@
Nama Panggilan{{ $currentUser->nickname }}Nama Panggilan{{ $currentUser->nickname }}
Nama{{ $currentUser->name }}{{ $currentUser->profileLink() }}
Jenis KelaminAyah @if ($currentUser->father_id) - {{ $currentUser->father->nickname }} + {{ $currentUser->father->profileLink() }} @else {{ Form::open(['route' => ['family-actions.set-father', $currentUser->id]]) }}
@@ -43,7 +43,7 @@
Ibu @if ($currentUser->mother_id) - {{ $currentUser->mother->nickname }} + {{ $currentUser->mother->profileLink() }} @else {{ Form::open(['route' => ['family-actions.set-mother', $currentUser->id]]) }}
@@ -64,7 +64,7 @@
    @foreach($currentUser->childs as $child)
  • - {{ $child->nickname }} ({{ $child->gender }}) + {{ $child->profileLink() }} ({{ $child->gender }})
  • @endforeach
  • diff --git a/routes/web.php b/routes/web.php index f21a91a..7c9097b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -17,8 +17,10 @@ Route::get('/', function () { Auth::routes(); -Route::get('/home', 'HomeController@index')->name('home'); -Route::get('/profile', 'HomeController@index')->name('profile'); +Route::get('home', 'HomeController@index')->name('home'); +Route::get('profile', 'HomeController@index')->name('profile'); Route::post('family-actions/{user}/set-father', 'FamilyActionsController@setFather')->name('family-actions.set-father'); Route::post('family-actions/{user}/set-mother', 'FamilyActionsController@setMother')->name('family-actions.set-mother'); Route::post('family-actions/{user}/add-child', 'FamilyActionsController@addChild')->name('family-actions.add-child'); + +Route::get('users/{user}', 'UsersController@show')->name('users.show'); diff --git a/tests/Feature/UsersProfileTest.php b/tests/Feature/UsersProfileTest.php new file mode 100644 index 0000000..5a16cbd --- /dev/null +++ b/tests/Feature/UsersProfileTest.php @@ -0,0 +1,20 @@ +create(); + $this->visit(route('users.show', $user->id)); + $this->see('Profile : ' . $user->nickname); + } +} diff --git a/tests/Unit/UserTest.php b/tests/Unit/UserTest.php new file mode 100644 index 0000000..b1e887c --- /dev/null +++ b/tests/Unit/UserTest.php @@ -0,0 +1,19 @@ +create(); + $this->assertEquals(link_to_route('users.show', $user->nickname, [$user->id]), $user->profileLink()); + } +}