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 |
|||
|
|||
return [ |
|||
'options' => 'Daftar Option', |
|||
// Labels
|
|||
'list' => 'Pengaturan', |
|||
'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', |
|||
'deleted' => 'Option berhasil dihapus', |
|||
'undeleted' => 'Option tidak berhasil dihapus', |
|||
'deleted' => 'Option berhasil dihapus.', |
|||
'undeleted' => 'Option tidak berhasil dihapus.', |
|||
'key' => 'Key', |
|||
'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