1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-10 05:02:36 +01:00

Create settings getter on Client Model

This commit is contained in:
David Bomba 2019-04-29 10:54:26 +10:00
parent 2a032ab253
commit 50a43720d1
4 changed files with 19 additions and 18 deletions

View File

@ -66,7 +66,7 @@ class ClientSettings extends BaseSettings
public $shared_invoice_quote_counter; public $shared_invoice_quote_counter;
/** /**
* settings which which are unique to client settings * Settings which which are unique to client settings
*/ */
public $industry_id; public $industry_id;
public $size_id; public $size_id;

View File

@ -3,6 +3,7 @@
namespace App\Models; namespace App\Models;
use App\DataMapper\ClientSettings; use App\DataMapper\ClientSettings;
use App\DataMapper\CompanySettings;
use App\Models\Company; use App\Models\Company;
use App\Models\Country; use App\Models\Country;
use App\Models\Filterable; use App\Models\Filterable;
@ -22,7 +23,6 @@ class Client extends BaseModel
protected $presenter = 'App\Models\Presenters\ClientPresenter'; protected $presenter = 'App\Models\Presenters\ClientPresenter';
protected $appends = [ protected $appends = [
'client_settings_object'
]; ];
protected $guarded = [ protected $guarded = [
@ -38,22 +38,18 @@ class Client extends BaseModel
'shipping_country' 'shipping_country'
]; ];
protected $with = ['contacts', 'primary_contact', 'country', 'shipping_country', 'company']; protected $with = [
'contacts',
'primary_contact',
'country',
'shipping_country',
'company'
];
protected $casts = [ protected $casts = [
'settings' => 'object' 'settings' => 'object'
]; ];
public function getClientSettingsObjectAttribute()
{
return new ClientSettings($this->settings);
}
public function getHashedIdAttribute()
{
return $this->encodePrimaryKey($this->id);
}
public function contacts() public function contacts()
{ {
return $this->hasMany(ClientContact::class)->orderBy('is_primary', 'desc'); return $this->hasMany(ClientContact::class)->orderBy('is_primary', 'desc');
@ -81,12 +77,17 @@ class Client extends BaseModel
public function timezone() public function timezone()
{ {
return Timezone::find($this->getSettings()->timezone_id); return Timezone::find($this->getMergedSettings()->timezone_id);
} }
public function getSettings() public function getSettings()
{ {
return ClientSettings::buildClientSettings($this->company->settings, $this->settings); return new ClientSettings($this->settings);
}
public function getMergedSettings()
{
return ClientSettings::buildClientSettings(new CompanySettings($this->company->settings), new ClientSettings($this->settings));
} }
public function documents() public function documents()

View File

@ -242,12 +242,12 @@ class ClientTest extends TestCase
$this->assertNotNull($client); $this->assertNotNull($client);
/* Make sure we have a valid settings object*/ /* Make sure we have a valid settings object*/
$this->assertEquals($client->getSettings()->timezone_id, 15); $this->assertEquals($client->getMergedSettings()->timezone_id, 15);
/* Make sure we are harvesting valid data */ /* Make sure we are harvesting valid data */
$this->assertEquals($client->timezone()->name, 'US/Eastern'); $this->assertEquals($client->timezone()->name, 'US/Eastern');
$contacts = ClientContact::whereIn('id', explode(',', $client->getSettings()->invoice_email_list))->get(); $contacts = ClientContact::whereIn('id', explode(',', $client->getMergedSettings()->invoice_email_list))->get();
/* Make sure NULL settings return the correct count (0) instead of throwing an exception*/ /* Make sure NULL settings return the correct count (0) instead of throwing an exception*/
$this->assertEquals(count($contacts), 0); $this->assertEquals(count($contacts), 0);

View File

@ -158,7 +158,7 @@ class InvoiceTest extends TestCase
factory(\App\Models\Invoice::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]); factory(\App\Models\Invoice::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]);
$invoice = Invoice::where('user_id',$user->id)->first(); $invoice = Invoice::where('user_id',$user->id)->first();
$invoice->settings = ClientSettings::buildClientSettings(new CompanySettings($company->settings), new ClientSettings($client->getSettings())); $invoice->settings = $client->getMergedSettings();
$invoice->save(); $invoice->save();