Files
Paymenter-Version-Tracks/app/Console/Commands/Settings/Change.php
Muhammad Tamir 85c03cef82 v1.3.4
2025-11-14 10:57:49 +07:00

67 lines
2.1 KiB
PHP

<?php
namespace App\Console\Commands\Settings;
use App\Classes\Settings;
use App\Models\Setting;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Config;
use function Laravel\Prompts\form;
use function Laravel\Prompts\select;
use function Laravel\Prompts\text;
class Change extends Command
{
protected $signature = 'app:settings:change {key?} {value?}';
protected $description = 'Change a setting';
public function handle()
{
Config::set('audit.console', true);
$key = $this->argument('key');
$value = $this->argument('value');
$form = form();
if (!$key) {
// Settings::settings is a array with first level keys as categories and second level keys as settings, so we need to flatten it
$settings = collect(Settings::settings())->flatten(1)->map(function ($item) {
return $item['name'];
})->toArray();
$form->suggest('Which setting would you like to change?', $settings, name: 'key');
}
if (!$value) {
$form->add(function ($responses) use ($key) {
$key = $responses['key'] ?? $key;
$setting = Settings::getSetting($key);
if (!isset($setting->type)) {
return text('What value should the setting have?', default: '', hint: 'Could not find setting but you can still change it');
}
// What type is the setting?
if ($setting->type === 'select') {
return select('What value should the setting have?', $setting->options);
} else {
return text('What value should the setting have?', default: $setting->value ?? '');
}
});
}
$form = $form->submit();
if (isset($form['key'])) {
$key = $form['key'];
}
if (isset($form[0]) || isset($form[1])) {
$value = $form[0] ?? $form[1];
}
Setting::updateOrCreate(
['key' => $key],
['value' => $value]
);
}
}