From 004d39cc736b3d7ca5bafbef0fc9bfeb848f6332 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 29 Oct 2019 20:51:23 +1100 Subject: [PATCH] Fixes for blank settings (#3027) --- app/Http/Requests/Client/StoreClientRequest.php | 9 ++++++--- .../Requests/Client/UpdateClientRequest.php | 2 ++ .../GroupSetting/CreateGroupSettingRequest.php | 2 ++ .../GroupSetting/StoreGroupSettingRequest.php | 17 +++++++++++------ .../GroupSetting/UpdateGroupSettingRequest.php | 7 ++++--- app/Libraries/MultiDB.php | 2 +- .../2014_10_13_000000_create_users_table.php | 1 + 7 files changed, 27 insertions(+), 13 deletions(-) diff --git a/app/Http/Requests/Client/StoreClientRequest.php b/app/Http/Requests/Client/StoreClientRequest.php index ec70c6374cf1..e02194dc59b2 100644 --- a/app/Http/Requests/Client/StoreClientRequest.php +++ b/app/Http/Requests/Client/StoreClientRequest.php @@ -11,7 +11,9 @@ namespace App\Http\Requests\Client; +use App\DataMapper\ClientSettings; use App\Http\Requests\Request; +use App\Http\ValidationRules\ValidSettingsRule; use App\Models\Client; use Illuminate\Support\Facades\Log; @@ -32,11 +34,12 @@ class StoreClientRequest extends Request public function rules() { + $this->sanitize(); /* Ensure we have a client name, and that all emails are unique*/ $rules['name'] = 'required|min:1'; $rules['id_number'] = 'unique:clients,id_number,' . $this->id . ',id,company_id,' . $this->company_id; - //$rules['settings'] = 'json'; + $rules['settings'] = new ValidSettingsRule(); $contacts = request('contacts'); @@ -58,8 +61,8 @@ class StoreClientRequest extends Request public function sanitize() { $input = $this->all(); - - $input['settings'] = new \stdClass; + + $input['settings'] = ClientSettings::defaults(); $this->replace($input); diff --git a/app/Http/Requests/Client/UpdateClientRequest.php b/app/Http/Requests/Client/UpdateClientRequest.php index c7df402a8de9..3ce792eddd11 100644 --- a/app/Http/Requests/Client/UpdateClientRequest.php +++ b/app/Http/Requests/Client/UpdateClientRequest.php @@ -12,6 +12,7 @@ namespace App\Http\Requests\Client; use App\Http\Requests\Request; +use App\Http\ValidationRules\ValidSettingsRule; use Illuminate\Support\Facades\Log; use Illuminate\Validation\Rule; @@ -40,6 +41,7 @@ class UpdateClientRequest extends Request $rules['shipping_country_id'] = 'integer|nullable'; //$rules['id_number'] = 'unique:clients,id_number,,id,company_id,' . auth()->user()->company()->id; $rules['id_number'] = 'unique:clients,id_number,' . $this->id . ',id,company_id,' . $this->company_id; + $rules['settings'] = new ValidSettingsRule(); // $rules['settings'] = 'json'; diff --git a/app/Http/Requests/GroupSetting/CreateGroupSettingRequest.php b/app/Http/Requests/GroupSetting/CreateGroupSettingRequest.php index 1108eb8ef0a1..672a6e425b4e 100644 --- a/app/Http/Requests/GroupSetting/CreateGroupSettingRequest.php +++ b/app/Http/Requests/GroupSetting/CreateGroupSettingRequest.php @@ -12,6 +12,7 @@ namespace App\Http\Requests\GroupSetting; use App\Http\Requests\Request; +use App\Http\ValidationRules\ValidSettingsRule; use App\Models\GroupSetting; class CreateGroupSettingRequest extends Request @@ -27,4 +28,5 @@ class CreateGroupSettingRequest extends Request return auth()->user()->can('create', GroupSetting::class); } + } \ No newline at end of file diff --git a/app/Http/Requests/GroupSetting/StoreGroupSettingRequest.php b/app/Http/Requests/GroupSetting/StoreGroupSettingRequest.php index bc38c71d62e0..e512ae60a93f 100644 --- a/app/Http/Requests/GroupSetting/StoreGroupSettingRequest.php +++ b/app/Http/Requests/GroupSetting/StoreGroupSettingRequest.php @@ -11,7 +11,9 @@ namespace App\Http\Requests\GroupSetting; +use App\DataMapper\ClientSettings; use App\Http\Requests\Request; +use App\Http\ValidationRules\ValidSettingsRule; use App\Models\GroupSetting; use Illuminate\Support\Facades\Log; @@ -32,22 +34,25 @@ class StoreGroupSettingRequest extends Request public function rules() { + $this->sanitize(); - return [ - 'name' => 'required', - // 'settings' => 'json', - ]; + $rules['name'] = 'required'; + $rules['settings'] = new ValidSettingsRule(); + return $rules; } - public function sanitize() { $input = $this->all(); - + + $input['settings'] = ClientSettings::defaults(); + $this->replace($input); + } + public function messages() { return [ diff --git a/app/Http/Requests/GroupSetting/UpdateGroupSettingRequest.php b/app/Http/Requests/GroupSetting/UpdateGroupSettingRequest.php index 49691601f1b0..09efcdf5048d 100644 --- a/app/Http/Requests/GroupSetting/UpdateGroupSettingRequest.php +++ b/app/Http/Requests/GroupSetting/UpdateGroupSettingRequest.php @@ -12,6 +12,7 @@ namespace App\Http\Requests\GroupSetting; use App\Http\Requests\Request; +use App\Http\ValidationRules\ValidSettingsRule; use Illuminate\Support\Facades\Log; use Illuminate\Validation\Rule; @@ -31,9 +32,9 @@ class UpdateGroupSettingRequest extends Request public function rules() { - return [ - // 'settings' => 'json', - ]; + $rules['settings'] = new ValidSettingsRule(); + + return $rules; } diff --git a/app/Libraries/MultiDB.php b/app/Libraries/MultiDB.php index 0aa88669f976..c68d49169ab1 100644 --- a/app/Libraries/MultiDB.php +++ b/app/Libraries/MultiDB.php @@ -143,7 +143,7 @@ class MultiDB public static function findAndSetDbByDomain($domain) :bool { -//\Log::error("searching for {$domain}"); + //\Log::error("searching for {$domain}"); foreach (self::$dbs as $db) { diff --git a/database/migrations/2014_10_13_000000_create_users_table.php b/database/migrations/2014_10_13_000000_create_users_table.php index 6f92b7a2481a..132b28dad7e6 100644 --- a/database/migrations/2014_10_13_000000_create_users_table.php +++ b/database/migrations/2014_10_13_000000_create_users_table.php @@ -148,6 +148,7 @@ class CreateUsersTable extends Migration $table->boolean('custom_surcharge_taxes2')->default(false); $table->boolean('custom_surcharge_taxes3')->default(false); $table->boolean('custom_surcharge_taxes4')->default(false); + $table->boolean('show_product_cost')->default(false); $table->unsignedInteger('enabled_tax_rates')->default(1); // $table->string('website')->nullable();