From 61bc3acd3fba8c15cf1abe345cc1c750e5cd733e Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Wed, 28 Feb 2018 07:57:11 +0800 Subject: [PATCH] Add couple edit page, Closes #4 --- app/Http/Controllers/CouplesController.php | 23 +++++++++++++ resources/lang/en/couple.php | 4 +++ resources/lang/id/couple.php | 4 +++ resources/views/couples/edit.blade.php | 55 ++++++++++++++++++++++++++++++ resources/views/couples/show.blade.php | 11 ++++-- routes/web.php | 2 ++ tests/Feature/EditMarriagesTest.php | 48 ++++++++++++++++++++++++++ 7 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 resources/views/couples/edit.blade.php create mode 100644 tests/Feature/EditMarriagesTest.php diff --git a/app/Http/Controllers/CouplesController.php b/app/Http/Controllers/CouplesController.php index cad560a..dccbc11 100644 --- a/app/Http/Controllers/CouplesController.php +++ b/app/Http/Controllers/CouplesController.php @@ -11,4 +11,27 @@ class CouplesController extends Controller { return view('couples.show', compact('couple')); } + + public function edit(Couple $couple) + { + $this->authorize('edit', $couple); + + return view('couples.edit', compact('couple')); + } + + public function update(Couple $couple) + { + $this->authorize('edit', $couple); + + $coupleData = request()->validate([ + 'marriage_date' => 'nullable|date|date_format:Y-m-d', + 'divorce_date' => 'nullable|date|date_format:Y-m-d', + ]); + + $couple->marriage_date = $coupleData['marriage_date']; + $couple->divorce_date = $coupleData['divorce_date']; + $couple->save(); + + return redirect()->route('couples.show', $couple->id); + } } diff --git a/resources/lang/en/couple.php b/resources/lang/en/couple.php index 45fdf0f..57faa40 100644 --- a/resources/lang/en/couple.php +++ b/resources/lang/en/couple.php @@ -7,6 +7,10 @@ return [ 'childs_count' => 'Childs Count', 'grand_childs_count' => 'Grand Childs Count', + // Actions + 'edit' => 'Edit Marriage', + 'update' => 'Update Marriage', + // Attributes 'husband' => 'Head of Family', 'wife' => 'Wife', diff --git a/resources/lang/id/couple.php b/resources/lang/id/couple.php index 0b27c9b..7264a1b 100644 --- a/resources/lang/id/couple.php +++ b/resources/lang/id/couple.php @@ -7,6 +7,10 @@ return [ 'childs_count' => 'Jumlah Anak', 'grand_childs_count' => 'Jumlah Cucu', + // Actions + 'edit' => 'Edit Pernikahan', + 'update' => 'Update Pernikahan', + // Attributes 'husband' => 'Kepala Keluarga', 'wife' => 'Isteri', diff --git a/resources/views/couples/edit.blade.php b/resources/views/couples/edit.blade.php new file mode 100644 index 0000000..5e54449 --- /dev/null +++ b/resources/views/couples/edit.blade.php @@ -0,0 +1,55 @@ +@extends('layouts.app') + +@section('content') + + +@include('couples.partials.stat') + +
+
+
+

{{ trans('couple.update') }}

+ {!! Form::model($couple, ['route' => ['couples.update', $couple], 'method' => 'patch']) !!} +
+
+
+ {!! FormField::text('marriage_date', ['label' => trans('couple.marriage_date')]) !!} +
+
+ {!! FormField::text('divorce_date', ['label' => trans('couple.divorce_date')]) !!} +
+
+
+ + {!! Form::close() !!} +
+
+
+ +@endsection + +@section ('ext_css') + +@endsection + +@section ('ext_js') + +@endsection + +@section ('script') + +@endsection diff --git a/resources/views/couples/show.blade.php b/resources/views/couples/show.blade.php index 8edd6c7..17cf348 100644 --- a/resources/views/couples/show.blade.php +++ b/resources/views/couples/show.blade.php @@ -2,12 +2,19 @@ @section('content') @include('couples.partials.stat')
- + @if ($couple->childs->isEmpty()) {{ trans('app.childs_were_not_recorded') }} @else diff --git a/routes/web.php b/routes/web.php index c929d84..7923150 100644 --- a/routes/web.php +++ b/routes/web.php @@ -37,6 +37,8 @@ Route::get('users/{user}/marriages', 'UserMarriagesController@index')->name('use * Couple/Marriages Routes */ Route::get('couples/{couple}', ['as'=>'couples.show', 'uses'=>'CouplesController@show']); +Route::get('couples/{couple}/edit', ['as'=>'couples.edit', 'uses'=>'CouplesController@edit']); +Route::patch('couples/{couple}', ['as'=>'couples.update', 'uses'=>'CouplesController@update']); /** * Backup Restore Database Routes diff --git a/tests/Feature/EditMarriagesTest.php b/tests/Feature/EditMarriagesTest.php new file mode 100644 index 0000000..e7a8bda --- /dev/null +++ b/tests/Feature/EditMarriagesTest.php @@ -0,0 +1,48 @@ +create(); + + $this->visit(route('couples.show', $couple)); + + $this->see($couple->husband->name); + $this->see($couple->wife->name); + } + + /** @test */ + public function manager_can_edit_couple_data() + { + $user = $this->loginAsUser(); + $couple = factory(Couple::class)->create(['manager_id' => $user->id]); + + $this->visit(route('couples.show', $couple)); + + $this->click(trans('couple.edit')); + $this->seePageIs(route('couples.edit', $couple)); + + $this->submitForm(trans('couple.update'), [ + 'marriage_date' => '2010-04-04', + 'divorce_date' => '2035-04-04', + ]); + + $this->seePageIs(route('couples.show', $couple)); + + $this->seeInDatabase('couples', [ + 'id' => $couple->id, + 'marriage_date' => '2010-04-04', + 'divorce_date' => '2035-04-04', + ]); + } +}