diff --git a/app/Http/Controllers/SystemSettingController.php b/app/Http/Controllers/SystemSettingController.php new file mode 100644 index 0000000..12574b2 --- /dev/null +++ b/app/Http/Controllers/SystemSettingController.php @@ -0,0 +1,28 @@ + config default). + $resolved = $service->all(); + + // Ambil meta dari DB untuk ditampilkan di tabel. + $settings = Setting::query() + ->orderBy('group') + ->orderBy('key') + ->get() + ->groupBy('group'); + + return view('settings.index', [ + 'settingsByGroup' => $settings, + 'resolved' => $resolved, + ]); + } +} diff --git a/resources/views/layouts/components/main-sidebar.blade.php b/resources/views/layouts/components/main-sidebar.blade.php index 5f2649d..733bd0f 100644 --- a/resources/views/layouts/components/main-sidebar.blade.php +++ b/resources/views/layouts/components/main-sidebar.blade.php @@ -1,172 +1,288 @@ + diff --git a/resources/views/settings/index.blade.php b/resources/views/settings/index.blade.php new file mode 100644 index 0000000..e612817 --- /dev/null +++ b/resources/views/settings/index.blade.php @@ -0,0 +1,66 @@ +@extends('layouts.master') + +@section('content') +
+
+

System Settings

+

Semua konfigurasi yang bisa diubah tanpa redeploy.

+
+
+ +
+
+
+
+
+
Daftar Setting
+
Nilai yang ditampilkan sudah menerapkan override dari database.
+
+
+
+ @forelse($settingsByGroup as $group => $items) +
+
+
{{ $group ?: 'general' }}
+
+
+ + + + + + + + + + + @foreach($items as $setting) + + + + + + + @endforeach + +
KeyNilai AktifTipeKeterangan
{{ $setting->key }} + {{-- Nilai yang ditampilkan sudah di-merge dengan config default --}} + @php $value = data_get($resolved, $setting->key); @endphp + @if(is_array($value)) +
{{ json_encode($value, JSON_PRETTY_PRINT) }}
+ @else + {{ var_export($value, true) }} + @endif +
{{ $setting->type }}{{ $setting->description ?? '-' }}
+
+
+ @empty +
+ Belum ada data setting. Jalankan seeder atau tambahkan via UI. +
+ @endforelse +
+
+
+
+@endsection diff --git a/routes/web.php b/routes/web.php index 80e7726..c1c12ba 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,6 +3,7 @@ use Illuminate\Support\Facades\Route; use App\Http\Controllers\DashboardsController; +use App\Http\Controllers\SystemSettingController; use App\Http\Controllers\Controller; Route::get('/', function () { @@ -15,4 +16,6 @@ Route::get('/', function () { }); // Route::get('/', [DashboardsController::class, 'index']); -Route::get('index', [DashboardsController::class, 'index']); \ No newline at end of file +Route::get('index', [DashboardsController::class, 'index']); + +Route::get('settings', [SystemSettingController::class, 'index'])->name('settings.index'); diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php index 8364a84..ad9db6a 100644 --- a/tests/Feature/ExampleTest.php +++ b/tests/Feature/ExampleTest.php @@ -14,6 +14,7 @@ class ExampleTest extends TestCase { $response = $this->get('/'); - $response->assertStatus(200); + // Halaman root meredirect ke /index. + $response->assertRedirect('/index'); } } diff --git a/tests/Feature/SystemSettingsPageTest.php b/tests/Feature/SystemSettingsPageTest.php new file mode 100644 index 0000000..10a88e5 --- /dev/null +++ b/tests/Feature/SystemSettingsPageTest.php @@ -0,0 +1,26 @@ +seed(SettingSeeder::class); + + $response = $this->get(route('settings.index')); + + $response->assertStatus(200); + $response->assertSee('System Settings'); + $response->assertSee('asset.code_prefix'); + $response->assertSee('AST'); + $response->assertSee('ui.table_page_size'); + $response->assertSee('25'); + } +}