diff --git a/app/DataMapper/ClientSettings.php b/app/DataMapper/ClientSettings.php index 14fcd8e1b10e..29846aac72a0 100644 --- a/app/DataMapper/ClientSettings.php +++ b/app/DataMapper/ClientSettings.php @@ -93,7 +93,7 @@ class ClientSettings extends BaseSettings public $design; - public $payment_gateways; + public $company_gateways; /** * Cast object values and return entire class * prevents missing properties from not being returned diff --git a/app/DataMapper/CompanySettings.php b/app/DataMapper/CompanySettings.php index e56d95eb2306..81c5e510d7c3 100644 --- a/app/DataMapper/CompanySettings.php +++ b/app/DataMapper/CompanySettings.php @@ -115,7 +115,7 @@ class CompanySettings extends BaseSettings public $design; - public $payment_gateways; + public $company_gateways; /** * Cast object values and return entire class * prevents missing properties from not being returned diff --git a/app/Utils/Traits/CompanyGatewaySettings.php b/app/Utils/Traits/CompanyGatewaySettings.php index 7544e37cf11e..964c9b8254ef 100644 --- a/app/Utils/Traits/CompanyGatewaySettings.php +++ b/app/Utils/Traits/CompanyGatewaySettings.php @@ -18,14 +18,30 @@ namespace App\Utils\Traits; trait CompanyGatewaySettings { + /** + * + * This method will cascade through a sequence of + * levels and return the first available set of settings + * it hits + * + * @return array A single dimension array of company gateway ids + */ public function findCompanyGateways() { $settings = $this->getMergedSettings(); - if(isset($settings->groups->company_gateways)) - { - + /* Group Level */ + if(isset($settings->groups->company_gateways)){ + $gateways = $this->company->company_gateways->whereIn('id', $settings->group_selectors->{$settings->group->company_gateways}); } + /* Client Level - Company Level*/ + else if(isset($settings->company_gateways)) { + $gateways = $this->company->company_gateways->whereIn('id', $settings->company_gateways); + } + /* DB raw*/ + else + return $this->company->company_gateways; + } } \ No newline at end of file diff --git a/tests/Unit/GroupTest.php b/tests/Unit/GroupTest.php index 0d898f3c8ef5..37e5b65bc55e 100644 --- a/tests/Unit/GroupTest.php +++ b/tests/Unit/GroupTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; /** * @test - * @covers App\DataMapper\Group + * @covers App\Utils\Traits\CompanyGatewaySettings */ class GroupTest extends TestCase { @@ -17,17 +17,15 @@ class GroupTest extends TestCase public function setUp() :void { - parent::setUp(); + parent::setUp(); - // $this->settings = new ClientSettings(ClientSettings::defaults()); $this->settings = ClientSettings::buildClientSettings(new CompanySettings(CompanySettings::defaults()), new ClientSettings(ClientSettings::defaults())); } public function testGroupsPropertiesExistsResponses() { - //$this->assertEquals(print_r($this->settings)); - + $this->assertTrue(property_exists($this->settings->groups, 'company_gateways')); $this->assertTrue(property_exists($this->settings, 'groups'));