Browse Source

Add couple edit page, Closes #4

pull/8/head
Nafies Luthfi 8 years ago
parent
commit
61bc3acd3f
  1. 23
      app/Http/Controllers/CouplesController.php
  2. 4
      resources/lang/en/couple.php
  3. 4
      resources/lang/id/couple.php
  4. 55
      resources/views/couples/edit.blade.php
  5. 11
      resources/views/couples/show.blade.php
  6. 2
      routes/web.php
  7. 48
      tests/Feature/EditMarriagesTest.php

23
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);
}
}

4
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',

4
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',

55
resources/views/couples/edit.blade.php

@ -0,0 +1,55 @@
@extends('layouts.app')
@section('content')
<h2 class="page-header">
{{ $couple->husband->name }} &amp; {{ $couple->wife->name }} <small>{{ trans('couple.edit') }}</small>
</h2>
@include('couples.partials.stat')
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="panel panel-default">
<div class="panel-heading"><h3 class="panel-title">{{ trans('couple.update') }}</h3></div>
{!! Form::model($couple, ['route' => ['couples.update', $couple], 'method' => 'patch']) !!}
<div class="panel-body">
<div class="row">
<div class="col-md-6">
{!! FormField::text('marriage_date', ['label' => trans('couple.marriage_date')]) !!}
</div>
<div class="col-md-6">
{!! FormField::text('divorce_date', ['label' => trans('couple.divorce_date')]) !!}
</div>
</div>
</div>
<div class="panel-footer">
{!! Form::submit(trans('couple.update'), ['class' => 'btn btn-success']) !!}
{{ link_to_route('couples.show', trans('app.cancel'), [$couple], ['class' => 'btn btn-default']) }}
</div>
{!! Form::close() !!}
</div>
</div>
</div>
@endsection
@section ('ext_css')
<link rel="stylesheet" href="{{ asset('css/plugins/jquery.datetimepicker.css') }}">
@endsection
@section ('ext_js')
<script src="{{ asset('js/plugins/jquery.datetimepicker.js') }}"></script>
@endsection
@section ('script')
<script>
(function () {
$('#marriage_date, #divorce_date').datetimepicker({
timepicker:false,
format:'Y-m-d',
closeOnDateSelect: true,
scrollInput: false
});
})();
</script>
@endsection

11
resources/views/couples/show.blade.php

@ -2,12 +2,19 @@
@section('content')
<h2 class="page-header">
{{ $couple->husband->name }} & {{ $couple->wife->name }} <small>{{ trans('couple.detail') }}</small>
@can('edit', $couple)
<div class="pull-right">
{{ link_to_route('couples.edit', trans('couple.edit'), [$couple], ['class' => 'btn btn-warning']) }}
</div>
@endcan
{{ $couple->husband->name }} & {{ $couple->wife->name }} <small>{{ trans('couple.detail') }}</small>
</h2>
@include('couples.partials.stat')
<br>
<h4 class="page-header">{{ trans('user.childs') }} & {{ trans('user.grand_childs') }}</h4 class="page-header">
<h4 class="page-header">{{ trans('user.childs') }} & {{ trans('user.grand_childs') }}</h4>
@if ($couple->childs->isEmpty())
<i>{{ trans('app.childs_were_not_recorded') }}</i>
@else

2
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

48
tests/Feature/EditMarriagesTest.php

@ -0,0 +1,48 @@
<?php
namespace Tests\Feature;
use App\Couple;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Tests\TestCase;
class EditMarriagesTest extends TestCase
{
use DatabaseMigrations;
/** @test */
public function user_can_visit_a_marriage_detail_page()
{
$couple = factory(Couple::class)->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',
]);
}
}
Loading…
Cancel
Save