Browse Source
Add option page to set money_sign
Add option page to set money_sign
Set money string format based on money_sign site optionpull/6/head
9 changed files with 185 additions and 9 deletions
-
35app/Http/Controllers/References/SiteOptionsController.php
-
9app/helpers.php
-
17resources/lang/en/option.php
-
15resources/lang/id/option.php
-
35resources/views/options/page-1.blade.php
-
3resources/views/pages/partials/dashboard-nav-tabs.blade.php
-
6routes/web/references.php
-
40tests/Feature/References/SiteOptionsTest.php
-
34tests/Unit/Helpers/MoneyFormatTest.php
@ -0,0 +1,35 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace App\Http\Controllers\References; |
||||
|
|
||||
|
use App\Entities\Options\Option; |
||||
|
use App\Http\Controllers\Controller; |
||||
|
use Illuminate\Http\Request; |
||||
|
|
||||
|
/** |
||||
|
* Site Options Controller. |
||||
|
* |
||||
|
* @author Nafies Luthfi <nafiesL@gmail.com> |
||||
|
*/ |
||||
|
class SiteOptionsController extends Controller |
||||
|
{ |
||||
|
public function page1() |
||||
|
{ |
||||
|
return view('options.page-1', compact('options')); |
||||
|
} |
||||
|
|
||||
|
public function save1(Request $request) |
||||
|
{ |
||||
|
$request->validate([ |
||||
|
'money_sign' => 'required|max:3', |
||||
|
]); |
||||
|
|
||||
|
$option = Option::firstorNew(['key' => 'money_sign']); |
||||
|
$option->value = $request->get('money_sign'); |
||||
|
$option->save(); |
||||
|
|
||||
|
flash()->success(trans('option.updated')); |
||||
|
|
||||
|
return redirect()->route('site-options.page-1'); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,17 @@ |
|||||
|
<?php |
||||
|
|
||||
|
return [ |
||||
|
// Labels
|
||||
|
'list' => 'Settings', |
||||
|
'create' => 'Add New Option', |
||||
|
'created' => 'New Option created.', |
||||
|
'updated' => 'Option updated.', |
||||
|
'delete' => 'Delete Option', |
||||
|
'deleted' => 'Option deleted.', |
||||
|
'undeleted' => 'Option cannot be deleted.', |
||||
|
'key' => 'Key', |
||||
|
'value' => 'Value', |
||||
|
|
||||
|
// Keys
|
||||
|
'money_sign' => 'Money Sign', |
||||
|
]; |
||||
@ -1,14 +1,17 @@ |
|||||
<?php |
<?php |
||||
|
|
||||
return [ |
return [ |
||||
'options' => 'Daftar Option', |
|
||||
|
// Labels
|
||||
|
'list' => 'Pengaturan', |
||||
'create' => 'Buat Option Baru', |
'create' => 'Buat Option Baru', |
||||
'created' => 'Option baru berhasil dibuat', |
|
||||
'updated' => 'Option berhasil disimpan', |
|
||||
|
'created' => 'Option baru berhasil dibuat.', |
||||
|
'updated' => 'Option berhasil disimpan.', |
||||
'delete' => 'Hapus Option', |
'delete' => 'Hapus Option', |
||||
'deleted' => 'Option berhasil dihapus', |
|
||||
'undeleted' => 'Option tidak berhasil dihapus', |
|
||||
|
'deleted' => 'Option berhasil dihapus.', |
||||
|
'undeleted' => 'Option tidak berhasil dihapus.', |
||||
'key' => 'Key', |
'key' => 'Key', |
||||
'value' => 'Value', |
'value' => 'Value', |
||||
'updated' => 'Value', |
|
||||
|
|
||||
|
// Keys
|
||||
|
'money_sign' => 'Tanda Mata Uang', |
||||
]; |
]; |
||||
@ -0,0 +1,35 @@ |
|||||
|
@extends('layouts.dashboard') |
||||
|
|
||||
|
@section('title', trans('option.list')) |
||||
|
|
||||
|
@section('content-dashboard') |
||||
|
<div class="row"> |
||||
|
<div class="col-md-4"> |
||||
|
{{ Form::open(['route' => 'site-options.save-1', 'method' => 'patch']) }} |
||||
|
<table class="table-condensed"> |
||||
|
<tbody> |
||||
|
<tr> |
||||
|
<td class="col-xs-5" style="vertical-align: top">{{ trans('option.money_sign') }}</td> |
||||
|
<td class="col-xs-7"> |
||||
|
{{ Form::text( |
||||
|
'money_sign', |
||||
|
Option::get('money_sign', 'Rp.'), |
||||
|
['class' => 'form-control', 'maxlength' => 3] |
||||
|
) }} |
||||
|
<span class="text-info small"> |
||||
|
Money sign like : <strong>{{ formatRp('9900') }}</strong><br>(Max 3 characters) |
||||
|
</span> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td> |
||||
|
{{ Form::submit(trans('app.update'), ['class' => 'btn btn-warning']) }} |
||||
|
</td> |
||||
|
<td> </td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
{{ Form::close() }} |
||||
|
</div> |
||||
|
</div> |
||||
|
@endsection |
||||
@ -0,0 +1,40 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace Tests\Feature\Users; |
||||
|
|
||||
|
use Tests\TestCase; |
||||
|
|
||||
|
/** |
||||
|
* Site Options Feature Test. |
||||
|
* |
||||
|
* @author Nafies Luthfi <nafiesL@gmail.com> |
||||
|
*/ |
||||
|
class SiteOptionsTest extends TestCase |
||||
|
{ |
||||
|
/** @test */ |
||||
|
public function admin_user_can_visit_site_options_page() |
||||
|
{ |
||||
|
$user = $this->adminUserSigningIn(); |
||||
|
$this->visit(route('site-options.page-1')); |
||||
|
$this->seePageIs(route('site-options.page-1')); |
||||
|
} |
||||
|
|
||||
|
/** @test */ |
||||
|
public function admin_user_can_update_money_sign_data() |
||||
|
{ |
||||
|
$user = $this->adminUserSigningIn(); |
||||
|
$this->visit(route('site-options.page-1')); |
||||
|
|
||||
|
$this->submitForm(trans('app.update'), [ |
||||
|
'money_sign' => '$', |
||||
|
]); |
||||
|
|
||||
|
$this->see(trans('option.updated')); |
||||
|
$this->visit(route('site-options.page-1')); |
||||
|
|
||||
|
$this->seeInDatabase('site_options', [ |
||||
|
'key' => 'money_sign', |
||||
|
'value' => '$', |
||||
|
]); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,34 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace Tests\Unit\Helpers; |
||||
|
|
||||
|
use Tests\TestCase; |
||||
|
|
||||
|
/** |
||||
|
* Money Format Helper Unit Test. |
||||
|
* |
||||
|
* @author Nafies Luthfi <nafiesL@gmail.com> |
||||
|
*/ |
||||
|
class MoneyFormatTest extends TestCase |
||||
|
{ |
||||
|
/** @test */ |
||||
|
public function format_money_returns_string_with_default_money_sign() |
||||
|
{ |
||||
|
$this->assertEquals('Rp. 1.000', formatRp(1000)); |
||||
|
$this->assertEquals('Rp. 0', formatRp(0)); |
||||
|
$this->assertEquals('- Rp. 1.000', formatRp(-1000)); |
||||
|
} |
||||
|
|
||||
|
/** @test */ |
||||
|
public function format_money_returns_string_based_on_site_option_money_sign() |
||||
|
{ |
||||
|
\DB::table('site_options')->insert([ |
||||
|
'key' => 'money_sign', |
||||
|
'value' => 'USD', |
||||
|
]); |
||||
|
|
||||
|
$this->assertEquals('USD 1.000', formatRp(1000)); |
||||
|
$this->assertEquals('USD 0', formatRp(0)); |
||||
|
$this->assertEquals('- USD 1.000', formatRp(-1000)); |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue