mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Documentation for SettingsSaver trait
This commit is contained in:
parent
cb466e4d34
commit
fb150cc1b0
@ -207,7 +207,7 @@ class CompanyController extends BaseController
|
||||
|
||||
$company = CreateCompany::dispatchNow($request->all(), auth()->user()->company()->account);
|
||||
|
||||
$company->saveSettings($request->input('settings'));
|
||||
$company->saveSettings($request->input('settings'), $company);
|
||||
|
||||
$this->uploadLogo($request->file('company_logo'), $company, $company);
|
||||
|
||||
@ -411,7 +411,7 @@ class CompanyController extends BaseController
|
||||
{
|
||||
$company = $this->company_repo->save($request->all(), $company);
|
||||
|
||||
$company->saveSettings($request->input('settings'));
|
||||
$company->saveSettings($request->input('settings'), $company);
|
||||
|
||||
$this->uploadLogo($request->file('company_logo'), $company, $company);
|
||||
|
||||
|
@ -13,7 +13,7 @@ namespace App\Http\ValidationRules;
|
||||
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\User;
|
||||
use App\Utils\Traits\CompanySettingsSaver;
|
||||
use App\Utils\Traits\SettingsSaver;
|
||||
use Illuminate\Contracts\Validation\Rule;
|
||||
|
||||
/**
|
||||
@ -22,7 +22,7 @@ use Illuminate\Contracts\Validation\Rule;
|
||||
*/
|
||||
class ValidSettingsRule implements Rule
|
||||
{
|
||||
use CompanySettingsSaver;
|
||||
use SettingsSaver;
|
||||
/**
|
||||
* @param string $attribute
|
||||
* @param mixed $value
|
||||
|
@ -30,7 +30,7 @@ use App\Models\TaxRate;
|
||||
use App\Models\Timezone;
|
||||
use App\Models\Traits\AccountTrait;
|
||||
use App\Models\User;
|
||||
use App\Utils\Traits\CompanySettingsSaver;
|
||||
use App\Utils\Traits\SettingsSaver;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@ -40,7 +40,7 @@ class Company extends BaseModel
|
||||
{
|
||||
use PresentableTrait;
|
||||
use MakesHash;
|
||||
use CompanySettingsSaver;
|
||||
use SettingsSaver;
|
||||
|
||||
protected $presenter = 'App\Models\Presenters\CompanyPresenter';
|
||||
|
||||
|
@ -14,19 +14,27 @@ namespace App\Utils\Traits;
|
||||
use App\DataMapper\CompanySettings;
|
||||
|
||||
/**
|
||||
* Class CompanySettingsSaver
|
||||
* Class SettingsSaver
|
||||
* @package App\Utils\Traits
|
||||
*/
|
||||
trait CompanySettingsSaver
|
||||
trait SettingsSaver
|
||||
{
|
||||
|
||||
public function saveSettings($settings)
|
||||
/**
|
||||
* Saves a setting object
|
||||
*
|
||||
* Works for groups|clients|companies
|
||||
* @param array $settings The request input settings array
|
||||
* @param object $entity The entity which the settings belongs to
|
||||
* @return void
|
||||
*/
|
||||
public function saveSettings($settings, $entity)
|
||||
{
|
||||
|
||||
if(!$settings)
|
||||
return;
|
||||
|
||||
$company_settings = $this->settings;
|
||||
$entity_settings = $this->settings;
|
||||
|
||||
//unset protected properties.
|
||||
foreach(CompanySettings::$protected_fields as $field)
|
||||
@ -36,12 +44,21 @@ trait CompanySettingsSaver
|
||||
|
||||
//iterate through set properties with new values;
|
||||
foreach($settings as $key => $value)
|
||||
$company_settings->{$key} = $value;
|
||||
$entity_settings->{$key} = $value;
|
||||
|
||||
$this->settings = $company_settings;
|
||||
$this->save();
|
||||
$entity->settings = $entity_settings;
|
||||
$entity->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for custom validation of inbound
|
||||
* settings request.
|
||||
*
|
||||
* Returns an array of errors, or boolean TRUE
|
||||
* on successful validation
|
||||
* @param array $settings The request() settings array
|
||||
* @return array|bool Array on failure, boolean TRUE on success
|
||||
*/
|
||||
public function validateSettings($settings)
|
||||
{
|
||||
$settings = (object)$settings;
|
||||
@ -75,7 +92,18 @@ trait CompanySettingsSaver
|
||||
return true;
|
||||
}
|
||||
|
||||
private function checkSettingType($settings)
|
||||
/**
|
||||
* Checks the settings object for
|
||||
* correct property types.
|
||||
*
|
||||
* The method will drop invalid types from
|
||||
* the object and will also settype() the property
|
||||
* so that it can be saved cleanly
|
||||
*
|
||||
* @param array $settings The settings request() array
|
||||
* @return object stdClass object
|
||||
*/
|
||||
private function checkSettingType($settings) : \stdClass
|
||||
{
|
||||
$settings = (object)$settings;
|
||||
$casts = CompanySettings::$casts;
|
||||
@ -114,7 +142,13 @@ trait CompanySettingsSaver
|
||||
}
|
||||
|
||||
|
||||
private function checkAttribute($key, $value)
|
||||
/**
|
||||
* Type checks a object property.
|
||||
* @param string $key The type
|
||||
* @param string $value The object property
|
||||
* @return bool TRUE if the property is the expected type
|
||||
*/
|
||||
private function checkAttribute($key, $value) :bool
|
||||
{
|
||||
switch ($key)
|
||||
{
|
||||
@ -138,7 +172,7 @@ trait CompanySettingsSaver
|
||||
json_decode($string);
|
||||
return (json_last_error() == JSON_ERROR_NONE);
|
||||
default:
|
||||
return $value;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @covers App\Utils\Traits\CompanySettingsSaver
|
||||
* @covers App\Utils\Traits\SettingsSaver
|
||||
*/
|
||||
class CompanySettingsTest extends TestCase
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user