Browse Source

Rebuild partner create form, edit form, and delete partner

pull/1/head
Nafies Luthfi 8 years ago
parent
commit
f48d18d651
  1. 38
      app/Http/Controllers/Partners/PartnersController.php
  2. 3
      resources/lang/id/partner.php
  3. 44
      resources/views/partners/create.blade.php
  4. 53
      resources/views/partners/edit.blade.php
  5. 59
      resources/views/partners/forms.blade.php
  6. 19
      resources/views/partners/index.blade.php
  7. 13
      resources/views/partners/show.blade.php
  8. 2
      routes/web.php
  9. 16
      tests/Feature/ManagePartnersTest.php

38
app/Http/Controllers/Partners/PartnersController.php

@ -36,6 +36,21 @@ class PartnersController extends Controller
}
/**
* Show the create partner form.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$partnerTypes = [
1 => trans('partner.types.customer'),
2 => trans('partner.types.vendor'),
];
return view('partners.create', compact('partnerTypes'));
}
/**
* Store a newly created partner in storage.
*
* @param \Illuminate\Http\Request $request
@ -74,6 +89,22 @@ class PartnersController extends Controller
}
/**
* Show the edit partner form.
*
* @param \App\Entities\Partners\Partner $partner
* @return \Illuminate\Http\Response
*/
public function edit(Partner $partner)
{
$partnerTypes = [
1 => trans('partner.types.customer'),
2 => trans('partner.types.vendor'),
];
return view('partners.edit', compact('partnerTypes', 'partner'));
}
/**
* Update the specified partner in storage.
*
* @param \Illuminate\Http\Request $request
@ -93,12 +124,11 @@ class PartnersController extends Controller
'is_active' => 'required|boolean',
]);
$routeParam = request()->only('page', 'q');
$partner = $partner->update($partnerData);
$partner->update($partnerData);
flash(trans('partner.updated'), 'success');
return redirect()->route('partners.index', $routeParam);
return redirect()->route('partners.show', $partner->id);
}
/**

3
resources/lang/id/partner.php

@ -9,6 +9,9 @@ return [
'empty' => 'Belum ada Partner',
'back_to_show' => 'Kembali ke detail Partner',
'back_to_index' => 'Kembali ke daftar Partner',
'type' => 'Jenis Partner',
'detail' => 'Detail Partner',
'contact' => 'Kontak Partner',
// Actions
'create' => 'Input Partner Baru',

44
resources/views/partners/create.blade.php

@ -0,0 +1,44 @@
@extends('layouts.app')
@section('title', trans('partner.create'))
@section('content')
<h1 class="page-header">
<div class="pull-right">
{{ link_to_route('partners.index', trans('app.cancel'), [], ['class' => 'btn btn-default']) }}
</div>
{{ trans('partner.create') }}
</h1>
{!! Form::open(['route' => 'partners.store']) !!}
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-body">
<div class="row">
<div class="col-md-6">
<legend>@lang('partner.detail')</legend>
{!! FormField::text('name', ['required' => true]) !!}
{!! FormField::radios('type_id', $partnerTypes, ['required' => true]) !!}
{!! FormField::textarea('notes') !!}
</div>
<div class="col-md-6">
<legend>@lang('partner.contact')</legend>
{!! FormField::text('pic') !!}
<div class="row">
<div class="col-xs-7">{!! FormField::email('email') !!}</div>
<div class="col-xs-5">{!! FormField::text('phone') !!}</div>
</div>
{!! FormField::textarea('address') !!}
</div>
</div>
</div>
<div class="panel-footer">
{!! Form::submit(trans('partner.create'), ['class' => 'btn btn-success']) !!}
{{ link_to_route('partners.index', trans('app.cancel'), [], ['class' => 'btn btn-default']) }}
</div>
</div>
</div>
</div>
{!! Form::close() !!}
@endsection

53
resources/views/partners/edit.blade.php

@ -0,0 +1,53 @@
@extends('layouts.app')
@section('title', trans('partner.edit').' '.$partner->name)
@section('content')
<h1 class="page-header">
<div class="pull-right">
{{ link_to_route('partners.show', trans('partner.back_to_show'), [$partner->id], ['class' => 'btn btn-default']) }}
</div>
{{ $partner->name }} <small>{{ trans('partner.edit') }}</small>
</h1>
@includeWhen(Request::has('action'), 'partners.forms')
{!! Form::model($partner, ['route' => ['partners.update', $partner->id],'method' => 'patch']) !!}
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-body">
<div class="row">
<div class="col-md-6">
<legend>@lang('partner.detail')</legend>
{!! FormField::text('name', ['required' => true]) !!}
<div class="row">
<div class="col-xs-6">{!! FormField::radios('type_id', $partnerTypes, ['required' => true]) !!}</div>
<div class="col-xs-6">{!! FormField::radios('is_active', ['Non Aktif', 'Aktif']) !!}</div>
</div>
{!! FormField::textarea('notes') !!}
</div>
<div class="col-md-6">
<legend>@lang('partner.contact')</legend>
{!! FormField::text('pic') !!}
<div class="row">
<div class="col-xs-7">{!! FormField::email('email') !!}</div>
<div class="col-xs-5">{!! FormField::text('phone') !!}</div>
</div>
{!! FormField::textarea('address') !!}
</div>
</div>
</div>
<div class="panel-footer">
{!! Form::submit(trans('partner.update'), ['class' => 'btn btn-success']) !!}
{{ link_to_route('partners.index', trans('app.cancel'), [], ['class' => 'btn btn-default']) }}
{!! link_to_route('partners.edit', trans('app.delete'), [$partner->id, 'action' => 'delete'], [
'id' => 'del-partner-'.$partner->id,
'class' => 'btn btn-link pull-right'
] ) !!}
</div>
</div>
</div>
</div>
{!! Form::close() !!}
@endsection

59
resources/views/partners/forms.blade.php

@ -1,68 +1,39 @@
@if (Request::get('action') == 'create')
{!! Form::open(['route' => 'partners.store']) !!}
{!! FormField::text('name', ['required' => true]) !!}
{!! FormField::radios('type_id', $partnerTypes, ['required' => true]) !!}
{!! FormField::email('email') !!}
{!! FormField::text('phone') !!}
{!! FormField::text('pic') !!}
{!! FormField::textarea('address') !!}
{!! FormField::textarea('notes') !!}
{!! Form::submit(trans('partner.create'), ['class' => 'btn btn-success']) !!}
{{ link_to_route('partners.index', trans('app.cancel'), [], ['class' => 'btn btn-default']) }}
{!! Form::close() !!}
@endif
@if (Request::get('action') == 'edit' && $editablePartner)
{!! Form::model($editablePartner, ['route' => ['partners.update', $editablePartner->id],'method' => 'patch']) !!}
{!! FormField::text('name', ['required' => true]) !!}
{!! FormField::radios('type_id', $partnerTypes, ['required' => true]) !!}
{!! FormField::email('email') !!}
{!! FormField::text('phone') !!}
{!! FormField::text('pic') !!}
{!! FormField::textarea('address') !!}
{!! FormField::textarea('notes') !!}
{!! FormField::radios('is_active', ['Non Aktif', 'Aktif']) !!}
@if (request('q'))
{{ Form::hidden('q', request('q')) }}
@endif
@if (request('page'))
{{ Form::hidden('page', request('page')) }}
@endif
{!! Form::submit(trans('partner.update'), ['class' => 'btn btn-success']) !!}
{{ link_to_route('partners.index', trans('app.cancel'), [], ['class' => 'btn btn-default']) }}
{!! Form::close() !!}
@endif
@if (Request::get('action') == 'delete' && $editablePartner)
@if (Request::get('action') == 'delete' && $partner)
<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('partner.delete') }}</h3></div>
<div class="panel-body">
<label class="control-label">{{ trans('partner.name') }}</label>
<p>{{ $editablePartner->name }}</p>
<p>{{ $partner->name }}</p>
<label class="control-label">{{ trans('contact.email') }}</label>
<p>{{ $editablePartner->email }}</p>
<p>{{ $partner->email }}</p>
<label class="control-label">{{ trans('contact.phone') }}</label>
<p>{{ $editablePartner->phone }}</p>
<label class="control-label">{{ trans('app.address') }}</label>
<p>{{ $editablePartner->address }}</p>
<p>{{ $partner->phone }}</p>
<label class="control-label">{{ trans('address.address') }}</label>
<p>{{ $partner->address }}</p>
<label class="control-label">{{ trans('app.status') }}</label>
<p>{{ $editablePartner->is_active }}</p>
<p>{{ $partner->is_active }}</p>
<label class="control-label">{{ trans('app.notes') }}</label>
<p>{{ $editablePartner->notes }}</p>
<p>{{ $partner->notes }}</p>
{!! $errors->first('partner_id', '<span class="form-error small">:message</span>') !!}
</div>
<hr style="margin:0">
<div class="panel-body">{{ trans('app.delete_confirm') }}</div>
<div class="panel-footer">
{!! FormField::delete(
['route'=>['partners.destroy',$editablePartner->id]],
['route'=>['partners.destroy',$partner->id]],
trans('app.delete_confirm_button'),
['class'=>'btn btn-danger'],
[
'partner_id' => $editablePartner->id,
'partner_id' => $partner->id,
'page' => request('page'),
'q' => request('q'),
]
) !!}
{{ link_to_route('partners.index', trans('app.cancel'), [], ['class' => 'btn btn-default']) }}
{{ link_to_route('partners.edit', trans('app.cancel'), [$partner->id], ['class' => 'btn btn-default']) }}
</div>
</div>
</div>
</div>
@endif

19
resources/views/partners/index.blade.php

@ -5,14 +5,12 @@
@section('content')
<h1 class="page-header">
<div class="pull-right">
{{ link_to_route('partners.index', trans('partner.create'), ['action' => 'create'], ['class' => 'btn btn-success']) }}
{{ link_to_route('partners.create', trans('partner.create'), [], ['class' => 'btn btn-success']) }}
</div>
{{ trans('partner.list') }}
<small>{{ trans('app.total') }} : {{ $partners->total() }} {{ trans('partner.partner') }}</small>
</h1>
@includeWhen(Request::has('action'), 'partners.forms')
<div class="panel panel-default table-responsive">
<div class="panel-heading">
{{ Form::open(['method' => 'get','class' => 'form-inline']) }}
@ -42,20 +40,7 @@
<td>{{ $partner->phone }}</td>
<td class="text-center">{{ $partner->projects_count }}</td>
<td class="text-center">{{ $partner->is_active }}</td>
<td class="text-center">
{!! link_to_route(
'partners.index',
trans('app.edit'),
['action' => 'edit', 'id' => $partner->id] + Request::only('page', 'q'),
['id' => 'edit-partner-' . $partner->id]
) !!} |
{!! link_to_route(
'partners.index',
trans('app.delete'),
['action' => 'delete', 'id' => $partner->id] + Request::only('page', 'q'),
['id' => 'del-partner-' . $partner->id]
) !!}
</td>
<td class="text-center"></td>
</tr>
@endforeach
</tbody>

13
resources/views/partners/show.blade.php

@ -3,7 +3,14 @@
@section('title', trans('partner.show'))
@section('content')
<h1 class="page-header">{{ $partner->name }} <small>{{ trans('partner.show') }}</small></h1>
<h1 class="page-header">
<div class="pull-right">
{!! link_to_route('partners.edit', trans('partner.edit'), [$partner->id], ['id' => 'edit-partner-' . $partner->id, 'class' => 'btn btn-warning']) !!}
{!! link_to_route('partners.index', trans('partner.back_to_index'), [], ['class' => 'btn btn-default']) !!}
</div>
{{ $partner->name }} <small>{{ trans('partner.show') }}</small>
</h1>
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
@ -19,10 +26,6 @@
<tr><td>{{ trans('app.notes') }}</td><td>{!! nl2br($partner->notes) !!}</td></tr>
</tbody>
</table>
<div class="panel-footer">
{{-- {!! link_to_route('partners.edit', trans('partner.edit'), [$partner->id], ['class' => 'btn btn-warning']) !!} --}}
{!! link_to_route('partners.index', trans('partner.back_to_index'), [], ['class' => 'btn btn-default']) !!}
</div>
</div>
</div>
<div class="col-md-6">

2
routes/web.php

@ -24,5 +24,5 @@ Route::group(['middleware' => ['web', 'auth']], function () {
/*
* Partners Routes
*/
Route::apiResource('partners', 'Partners\PartnersController');
Route::resource('partners', 'Partners\PartnersController');
});

16
tests/Feature/ManagePartnersTest.php

@ -29,7 +29,7 @@ class ManagePartnersTest extends TestCase
$this->visit(route('partners.index'));
$this->click(trans('partner.create'));
$this->seePageIs(route('partners.index', ['action' => 'create']));
$this->seePageIs(route('partners.create'));
$this->submitForm(trans('partner.create'), [
'name' => 'Partner 1 name',
@ -41,7 +41,7 @@ class ManagePartnersTest extends TestCase
'notes' => '',
]);
$this->seePageIs(route('partners.index'));
$this->see(trans('partner.created'));
$this->seeInDatabase('partners', [
'name' => 'Partner 1 name',
@ -56,14 +56,14 @@ class ManagePartnersTest extends TestCase
}
/** @test */
public function user_can_edit_a_partner_within_search_query()
public function user_can_edit_a_partner()
{
$user = $this->adminUserSigningIn();
$partner = factory(Partner::class)->create(['owner_id' => $user->agency->id, 'name' => 'Testing 123']);
$this->visit(route('partners.index', ['q' => '123']));
$this->visit(route('partners.show', [$partner->id]));
$this->click('edit-partner-'.$partner->id);
$this->seePageIs(route('partners.index', ['action' => 'edit', 'id' => $partner->id, 'q' => '123']));
$this->seePageIs(route('partners.edit', [$partner->id]));
$this->submitForm(trans('partner.update'), [
'name' => 'Partner 1 name',
@ -76,7 +76,7 @@ class ManagePartnersTest extends TestCase
'is_active' => 0,
]);
$this->seePageIs(route('partners.index', ['q' => '123']));
$this->seePageIs(route('partners.show', $partner->id));
$this->seeInDatabase('partners', [
'name' => 'Partner 1 name',
@ -96,9 +96,9 @@ class ManagePartnersTest extends TestCase
$user = $this->adminUserSigningIn();
$partner = factory(Partner::class)->create(['owner_id' => $user->agency->id]);
$this->visit(route('partners.index', [$partner->id]));
$this->visit(route('partners.edit', [$partner->id]));
$this->click('del-partner-'.$partner->id);
$this->seePageIs(route('partners.index', ['action' => 'delete', 'id' => $partner->id]));
$this->seePageIs(route('partners.edit', [$partner->id, 'action' => 'delete']));
$this->seeInDatabase('partners', [
'id' => $partner->id,

Loading…
Cancel
Save