Browse Source

Merge pull request #33 from nafiesl/bugfix-27

Fix #27
pull/34/head
Nafies Luthfi 7 years ago
committed by GitHub
parent
commit
482138943e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 12
      app/Entities/BaseRepository.php
  2. 18
      app/Http/Controllers/Api/CustomerController.php
  3. 18
      app/Http/Controllers/Api/VendorController.php
  4. 4
      app/Http/Controllers/PaymentsController.php
  5. 3
      resources/lang/de/customer.php
  6. 1
      resources/lang/de/vendor.php
  7. 3
      resources/lang/en/customer.php
  8. 1
      resources/lang/en/vendor.php
  9. 3
      resources/lang/id/customer.php
  10. 1
      resources/lang/id/vendor.php
  11. 49
      resources/views/payments/edit.blade.php
  12. 10
      routes/api.php
  13. 43
      tests/Feature/Api/FetchPartnerListTest.php
  14. 2
      tests/Feature/Payments/ManagePaymentsTest.php

12
app/Entities/BaseRepository.php

@ -22,7 +22,9 @@ abstract class BaseRepository extends EloquentRepository
*/
public function getCustomersList()
{
return Customer::orderBy('name')->pluck('name', 'id');
return Customer::where('is_active', 1)
->orderBy('name')
->pluck('name', 'id');
}
/**
@ -33,8 +35,8 @@ abstract class BaseRepository extends EloquentRepository
public function getCustomersAndVendorsList()
{
$partners = [
'Customer' => Customer::orderBy('name')->pluck('name', 'id')->all(),
'Vendor' => Vendor::orderBy('name')->pluck('name', 'id')->all(),
__('customer.customer') => Customer::orderBy('name')->pluck('name', 'id')->all(),
__('vendor.vendor') => Vendor::orderBy('name')->pluck('name', 'id')->all(),
];
return $partners;
@ -57,7 +59,9 @@ abstract class BaseRepository extends EloquentRepository
*/
public function getVendorsList()
{
return Vendor::orderBy('name')->pluck('name', 'id');
return Vendor::where('is_active', 1)
->orderBy('name')
->pluck('name', 'id');
}
/**

18
app/Http/Controllers/Api/CustomerController.php

@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers\Api;
use App\Entities\Partners\Customer;
use App\Http\Controllers\Controller;
class CustomerController extends Controller
{
public function index()
{
$customers = Customer::where('is_active', 1)
->orderBy('name')
->pluck('name', 'id');
return response()->json($customers);
}
}

18
app/Http/Controllers/Api/VendorController.php

@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers\Api;
use App\Entities\Partners\Vendor;
use App\Http\Controllers\Controller;
class VendorController extends Controller
{
public function index()
{
$vendors = Vendor::where('is_active', 1)
->orderBy('name')
->pluck('name', 'id');
return response()->json($vendors);
}
}

4
app/Http/Controllers/PaymentsController.php

@ -98,8 +98,10 @@ class PaymentsController extends Controller
if ($payment->partner_type == 'App\Entities\Users\User') {
$partners = $this->repo->getWorkersList();
} elseif ($payment->partner_type == 'App\Entities\Partners\Customer') {
$partners = [__('customer.customer') => $this->repo->getCustomersList()];
} else {
$partners = $this->repo->getCustomersAndVendorsList();
$partners = [__('vendor.vendor') => $this->repo->getVendorsList()];
}
return view('payments.edit', compact('payment', 'projects', 'partners'));

3
resources/lang/de/customer.php

@ -4,12 +4,13 @@ return [
// Labels
'customer' => 'Kunde',
'list' => 'Kundenliste',
'detail' => 'Kundendetails',
'search' => 'Kundensuche',
'select' => 'Select Customer',
'not_found' => 'Kunde nicht gefunden.',
'empty' => 'Kunde ist leer.',
'back_to_show' => 'Zurück zu Kundendetails',
'back_to_index' => 'Zurück zur Kundennliste',
'detail' => 'Kundendetails',
'contact' => 'Kundenkontakt',
// Actions

1
resources/lang/de/vendor.php

@ -6,6 +6,7 @@ return [
'list' => 'Hersteller Liste',
'detail' => 'Vendor Detail',
'search' => 'Hersteller suchen',
'select' => 'Select Vendor',
'not_found' => 'Hersteller nicht gefunden.',
'empty' => 'Hersteller Liste ist leer.',
'back_to_show' => 'Zurück zu Herstellerdetails',

3
resources/lang/en/customer.php

@ -4,12 +4,13 @@ return [
// Labels
'customer' => 'Customer',
'list' => 'Customer List',
'detail' => 'Customer Detail',
'search' => 'Search Customer',
'select' => 'Select Customer',
'not_found' => 'Customer not found.',
'empty' => 'Customer is empty.',
'back_to_show' => 'Back to Customer Detail',
'back_to_index' => 'Back to Customer List',
'detail' => 'Customer Detail',
'contact' => 'Customer Contact',
// Actions

1
resources/lang/en/vendor.php

@ -6,6 +6,7 @@ return [
'list' => 'Vendor List',
'detail' => 'Vendor Detail',
'search' => 'Search Vendor',
'select' => 'Select Vendor',
'not_found' => 'Vendor not found.',
'empty' => 'Vendor list is empty.',
'back_to_show' => 'Back to Vendor Detail',

3
resources/lang/id/customer.php

@ -4,12 +4,13 @@ return [
// Labels
'customer' => 'Customer',
'list' => 'Daftar Customer',
'detail' => 'Detail Customer',
'search' => 'Cari Customer',
'select' => 'Pilih Customer',
'not_found' => 'Customer tidak ditemukan',
'empty' => 'Belum ada Customer',
'back_to_show' => 'Kembali ke detail Customer',
'back_to_index' => 'Kembali ke daftar Customer',
'detail' => 'Detail Customer',
'contact' => 'Kontak Customer',
// Actions

1
resources/lang/id/vendor.php

@ -6,6 +6,7 @@ return [
'list' => 'Daftar Vendor',
'detail' => 'Detail Vendor',
'search' => 'Cari Vendor',
'select' => 'Pilih Vendor',
'not_found' => 'Vendor tidak ditemukan',
'empty' => 'Belum ada Vendor',
'back_to_show' => 'Kembali ke detail Vendor',

49
resources/views/payments/edit.blade.php

@ -8,13 +8,13 @@
<div class="row">
<div class="col-md-6">
{!! Form::model($payment, ['route'=>['payments.update', $payment->id], 'method' => 'patch']) !!}
{!! Form::model($payment, ['route' => ['payments.update', $payment], 'method' => 'patch']) !!}
<div class="panel panel-default">
<div class="panel-heading"><h3 class="panel-title">{{ __('payment.edit') }}</h3></div>
<div class="panel-body">
<div class="row">
<div class="col-md-6">
{!! FormField::radios('in_out', [__('payment.out'), __('payment.in')], ['label'=> __('payment.in_out')]) !!}
{!! FormField::radios('in_out', [__('payment.out'), __('payment.in')], ['label' => __('payment.in_out')]) !!}
</div>
<div class="col-md-6">
{!! FormField::radios('type_id', PaymentType::toArray(), ['label' => __('payment.type'), 'list_style' => 'unstyled']) !!}
@ -22,32 +22,33 @@
</div>
<div class="row">
<div class="col-md-6">
{!! FormField::text('date', ['label'=> __('app.date')]) !!}
{!! FormField::text('date', ['label' => __('app.date')]) !!}
</div>
<div class="col-md-6">
{!! FormField::price('amount', ['label'=> __('payment.amount'), 'currency' => Option::get('money_sign', 'Rp')]) !!}
{!! FormField::price('amount', ['label' => __('payment.amount'), 'currency' => Option::get('money_sign', 'Rp')]) !!}
</div>
</div>
<div class="row">
<div class="col-sm-6">
{!! FormField::select('project_id', $projects, ['label'=> __('payment.project')]) !!}
{!! FormField::select('project_id', $projects, ['label' => __('payment.project')]) !!}
</div>
<div class="col-sm-6">
@if ($payment->partner_type == 'App\Entities\Users\User')
{!! FormField::select('partner_id', $partners, ['label'=> __('payment.customer')]) !!}
{{ Form::hidden('partner_type', 'users') }}
@else
{!! FormField::select('partner_id', $partners, ['label'=> __('payment.customer')]) !!}
@endif
{!! FormField::select('partner_id', $partners, [
'label' => __('payment.customer'),
'placeholder' => $payment->in_out ? __('customer.select') : __('vendor.select')
]) !!}
</div>
</div>
{!! FormField::textarea('description', ['label'=> __('payment.description')]) !!}
{!! FormField::textarea('description', ['label' => __('payment.description')]) !!}
</div>
<div class="panel-footer">
{!! Form::submit(__('payment.update'), ['class'=>'btn btn-primary']) !!}
{!! Form::submit(__('payment.update'), ['class' => 'btn btn-primary']) !!}
{!! link_to_route('projects.payments', __('payment.back_to_index'), [$payment->project_id], ['class' => 'btn btn-default']) !!}
{!! link_to_route('payments.delete', __('payment.delete'), [$payment->id], ['class'=>'btn btn-danger pull-right']) !!}
{!! link_to_route('payments.delete', __('payment.delete'), [$payment->id], ['class' => 'btn btn-danger pull-right']) !!}
</div>
</div>
{!! Form::close() !!}
@ -72,6 +73,32 @@
closeOnDateSelect: true,
scrollInput: false
});
$('#in_out_0').click(function() {
$.post("{{ route('api.vendors.index') }}", {},
function(data) {
var string = '<option value="">-- {{ __('vendor.select') }} --</option> ';
string = string + `<optgroup label="Vendor">`;
$.each(data, function(index, value) {
string = string + `<option value="` + index + `">` + value + `</option>`;
});
string = string + `</optgroup>`;
$("#partner_id").html(string);
}
);
});
$('#in_out_1').click(function() {
$.post("{{ route('api.customers.index') }}", {},
function(data) {
var string = '<option value="">-- {{ __('customer.select') }} --</option> ';
string = string + `<optgroup label="Customer">`;
$.each(data, function(index, value) {
string = string + `<option value="` + index + `">` + value + `</option>`;
});
string = string + `</optgroup>`;
$("#partner_id").html(string);
}
);
});
})();
</script>
@endsection

10
routes/api.php

@ -10,4 +10,14 @@ Route::group(['prefix' => 'v1', 'namespace' => 'Api', 'as' => 'api.', 'middlewar
Route::patch('events/update', ['as' => 'events.update', 'uses' => 'EventsController@update']);
Route::patch('events/reschedule', ['as' => 'events.reschedule', 'uses' => 'EventsController@reschedule']);
Route::delete('events/delete', ['as' => 'events.destroy', 'uses' => 'EventsController@destroy']);
/*
* Customer Route
*/
Route::post('customers', 'CustomerController@index')->name('customers.index');
/*
* Vendor Route
*/
Route::post('vendors', 'VendorController@index')->name('vendors.index');
});

43
tests/Feature/Api/FetchPartnerListTest.php

@ -0,0 +1,43 @@
<?php
namespace Tests\Feature\Api;
use Tests\TestCase;
use App\Entities\Partners\Vendor;
use App\Entities\Partners\Customer;
use Illuminate\Foundation\Testing\RefreshDatabase;
class FetchPartnerListTest extends TestCase
{
use RefreshDatabase;
/** @test */
public function user_can_fetch_customer_listing()
{
$user = $this->createUser('admin');
$customer = factory(Customer::class)->create();
$this->postJson(route('api.customers.index'), [], [
'Authorization' => 'Bearer '.$user->api_token,
]);
$this->seeJson([
$customer->id => $customer->name,
]);
}
/** @test */
public function user_can_fetch_vendor_listing()
{
$user = $this->createUser('admin');
$vendor = factory(Vendor::class)->create();
$this->postJson(route('api.vendors.index'), [], [
'Authorization' => 'Bearer '.$user->api_token,
]);
$this->seeJson([
$vendor->id => $vendor->name,
]);
}
}

2
tests/Feature/Payments/ManagePaymentsTest.php

@ -166,7 +166,7 @@ class ManagePaymentsTest extends TestCase
'partner_type' => Vendor::class,
'partner_id' => $vendor->id,
]);
$customer = factory(Customer::class)->create();
$customer = $payment->project->customer;
$this->visit(route('payments.edit', $payment->id));
$this->seePageIs(route('payments.edit', $payment->id));

Loading…
Cancel
Save