From d407c603e5c05eb7130896f1453ff61bfa666ac8 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sun, 2 Jul 2017 12:54:22 +0800 Subject: [PATCH] Added user profile update --- app/Http/Controllers/UsersController.php | 26 ++++++++++- .../2014_10_12_000000_create_users_table.php | 4 +- resources/views/users/edit.blade.php | 51 ++++++++++++++++++++++ resources/views/users/show.blade.php | 1 + routes/web.php | 2 + tests/Feature/UsersProfileTest.php | 36 +++++++++++++++ 6 files changed, 117 insertions(+), 3 deletions(-) create mode 100644 resources/views/users/edit.blade.php diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php index ebaeef1..cd56584 100644 --- a/app/Http/Controllers/UsersController.php +++ b/app/Http/Controllers/UsersController.php @@ -102,7 +102,7 @@ class UsersController extends Controller */ public function edit(User $user) { - // + return view('users.edit', compact('user')); } /** @@ -114,7 +114,29 @@ class UsersController extends Controller */ public function update(Request $request, User $user) { - // + $user->nickname = $request->nickname; + $user->name = $request->get('name'); + $user->gender_id = $request->get('gender_id'); + $user->dob = $request->get('dob'); + $user->dod = $request->get('dod'); + + if ($request->get('dod')) + $user->yod = substr($request->get('dod'), 0, 4); + else + $user->yod = $request->get('yod'); + + $user->phone = $request->get('phone'); + $user->address = $request->get('address'); + $user->city = $request->get('city'); + $user->email = $request->get('email'); + + if ($request->get('email')) { + $user->password = bcrypt($request->get('email')); + } + + $user->save(); + + return redirect()->route('users.show', $user->id); } /** diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 1173cd0..79f9b52 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -21,11 +21,13 @@ class CreateUsersTable extends Migration $table->unsignedInteger('father_id')->nullable(); $table->unsignedInteger('mother_id')->nullable(); $table->unsignedInteger('parent_id')->nullable(); - $table->date('dof')->nullable(); + $table->date('dob')->nullable(); $table->date('dod')->nullable(); + $table->date('yod')->nullable(); $table->string('email')->unique()->nullable(); $table->string('password')->nullable(); $table->string('address')->nullable(); + $table->string('city')->nullable(); $table->string('phone')->nullable(); $table->rememberToken(); $table->timestamps(); diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php new file mode 100644 index 0000000..9173197 --- /dev/null +++ b/resources/views/users/edit.blade.php @@ -0,0 +1,51 @@ +@extends('layouts.app') + +@section('content') +
+ {{ link_to_route('users.chart', 'Lihat Chart Keluarga '.$user->name, [$user->id], ['class' => 'btn btn-default']) }} +
+ + {{ Form::model($user, ['route' => ['users.update', $user->id], 'method' =>'patch']) }} +
+
+
+

Edit Profil

+
+ {!! FormField::text('name', ['label' => 'Nama']) !!} + {!! FormField::text('nickname', ['label' => 'Nama Panggilan']) !!} +
+
{!! FormField::radios('gender_id', [1 => 'L', 'P'], ['label' => 'Jenis Kelamin']) !!}
+
{!! FormField::text('dob', ['label' => 'Tanggal Lahir', 'placeholder' => 'Misal: 1959-07-20']) !!}
+
+
+
{!! FormField::text('yod', ['label' => 'Tahun Meninggal', 'placeholder' => 'Misal: 2003']) !!}
+
{!! FormField::text('dod', ['label' => 'Tanggal Meninggal', 'placeholder' => 'Misal: 2003-10-17']) !!}
+
+
+
+
+
+
+

Edit Alamat dan Kontak

+
+ {!! FormField::textarea('address', ['label' => 'Alamat']) !!} + {!! FormField::text('city', ['label' => 'Kota']) !!} + {!! FormField::text('phone', ['label' => 'Telp', 'placeholder' => 'Misal: 081234567890']) !!} +
+
+
+
+
+

Akun Login

+
+ {!! FormField::email('email', ['label' => 'Email', 'placeholder' => 'Misal: nama@mail.com']) !!} + {!! FormField::text('password', ['label' => 'Password', 'placeholder' => '******']) !!} +
+
+
+
+
+ {{ Form::submit('Update', ['class' => 'btn btn-primary']) }} +
+ {{ Form::close() }} +@endsection diff --git a/resources/views/users/show.blade.php b/resources/views/users/show.blade.php index 1b52753..db0dd03 100644 --- a/resources/views/users/show.blade.php +++ b/resources/views/users/show.blade.php @@ -2,6 +2,7 @@ @section('content')
+ {{ link_to_route('users.edit', 'Edit Data '.$currentUser->name, [$currentUser->id], ['class' => 'btn btn-warning']) }} {{ link_to_route('users.chart', 'Lihat Chart Keluarga '.$currentUser->name, [$currentUser->id], ['class' => 'btn btn-default']) }}
diff --git a/routes/web.php b/routes/web.php index ba0020b..6a2393f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -27,4 +27,6 @@ Route::post('family-actions/{user}/add-husband', 'FamilyActionsController@addHus Route::post('family-actions/{user}/set-parent', 'FamilyActionsController@setParent')->name('family-actions.set-parent'); Route::get('users/{user}', 'UsersController@show')->name('users.show'); +Route::get('users/{user}/edit', 'UsersController@edit')->name('users.edit'); +Route::patch('users/{user}', 'UsersController@update')->name('users.update'); Route::get('users/{user}/chart', 'UsersController@chart')->name('users.chart'); diff --git a/tests/Feature/UsersProfileTest.php b/tests/Feature/UsersProfileTest.php index 9ed0fa1..88631af 100644 --- a/tests/Feature/UsersProfileTest.php +++ b/tests/Feature/UsersProfileTest.php @@ -17,4 +17,40 @@ class UsersProfileTest extends TestCase $this->visit(route('users.show', $user->id)); $this->see($user->name); } + + /** @test */ + public function user_can_edit_profile() + { + $user = factory(User::class)->create(); + $this->visit(route('users.edit', $user->id)); + $this->seePageIs(route('users.edit', $user->id)); + + $this->submitForm('Update', [ + 'nickname' => 'Nama Panggilan', + 'name' => 'Nama User', + 'gender_id' => 1, + 'dob' => '1959-06-09', + 'dod' => '2003-10-17', + 'yod' => '', + 'address' => 'Jln. Angkasa, No. 70', + 'city' => 'Nama Kota', + 'phone' => '081234567890', + 'email' => '', + 'password' => '', + ]); + + $this->seeInDatabase('users', [ + 'nickname' => 'Nama Panggilan', + 'name' => 'Nama User', + 'gender_id' => 1, + 'dob' => '1959-06-09', + 'dod' => '2003-10-17', + 'yod' => '2003', + 'address' => 'Jln. Angkasa, No. 70', + 'city' => 'Nama Kota', + 'phone' => '081234567890', + 'email' => null, + 'password' => null, + ]); + } }