Skip to content

Commit 2d04270

Browse files
committed
fix(campaigns): split campaigns settings and provide correct setting options list
1 parent eb52591 commit 2d04270

11 files changed

+239
-11
lines changed

src/services/campaigns/CampaignsService.php

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,13 @@
99
use directapi\services\campaigns\criterias\CampaignsSelectionCriteria;
1010
use directapi\services\campaigns\enum\CampaignFieldEnum;
1111
use directapi\services\campaigns\enum\CpmBannerCampaignFieldEnum;
12+
use directapi\services\campaigns\enum\CpmCampaignSettingsEnum;
1213
use directapi\services\campaigns\enum\DynamicCampaignFieldEnum;
14+
use directapi\services\campaigns\enum\DynamicCampaignSettingsEnum;
1315
use directapi\services\campaigns\enum\MobileAppCampaignFieldEnum;
16+
use directapi\services\campaigns\enum\MobileAppCampaignSettingsEnum;
1417
use directapi\services\campaigns\enum\SmartCampaignFieldEnum;
18+
use directapi\services\campaigns\enum\SmartCampaignSettingsEnum;
1519
use directapi\services\campaigns\enum\TextCampaignFieldEnum;
1620
use directapi\services\campaigns\enum\TextCampaignSettingsEnum;
1721
use directapi\services\campaigns\models\CampaignAddItem;
@@ -201,7 +205,7 @@ public function toUpdateEntities(array $entities): array
201205
* @var CampaignUpdateItem[] $converted
202206
*/
203207
$converted = $this->convertClass($entities, CampaignUpdateItem::class);
204-
foreach ($converted as &$campaign) {
208+
foreach ($converted as $campaign) {
205209
if ($campaign->TextCampaign && $campaign->TextCampaign->Settings) {
206210
foreach ($campaign->TextCampaign->Settings as $i => $setting) {
207211
if (TextCampaignSettingsEnum::isGetOnly($setting->Option)) {
@@ -212,28 +216,36 @@ public function toUpdateEntities(array $entities): array
212216
}
213217
if ($campaign->CpmBannerCampaign && $campaign->CpmBannerCampaign->Settings) {
214218
foreach ($campaign->CpmBannerCampaign->Settings as $i => $setting) {
215-
if (TextCampaignSettingsEnum::isGetOnly($setting->Option)) {
219+
if (CpmCampaignSettingsEnum::isGetOnly($setting->Option)) {
216220
unset($campaign->CpmBannerCampaign->Settings[$i]);
217221
}
218222
}
219223
$campaign->CpmBannerCampaign->Settings = array_values($campaign->CpmBannerCampaign->Settings);
220224
}
221225
if ($campaign->DynamicTextCampaign && $campaign->DynamicTextCampaign->Settings) {
222226
foreach ($campaign->DynamicTextCampaign->Settings as $i => $setting) {
223-
if (TextCampaignSettingsEnum::isGetOnly($setting->Option)) {
227+
if (DynamicCampaignSettingsEnum::isGetOnly($setting->Option)) {
224228
unset($campaign->DynamicTextCampaign->Settings[$i]);
225229
}
226230
}
227231
$campaign->DynamicTextCampaign->Settings = array_values($campaign->DynamicTextCampaign->Settings);
228232
}
229233
if ($campaign->SmartCampaign && $campaign->SmartCampaign->Settings) {
230234
foreach ($campaign->SmartCampaign->Settings as $i => $setting) {
231-
if (TextCampaignSettingsEnum::isGetOnly($setting->Option)) {
235+
if (SmartCampaignSettingsEnum::isGetOnly($setting->Option)) {
232236
unset($campaign->SmartCampaign->Settings[$i]);
233237
}
234238
}
235239
$campaign->SmartCampaign->Settings = array_values($campaign->SmartCampaign->Settings);
236240
}
241+
if ($campaign->MobileAppCampaign && $campaign->MobileAppCampaign->Settings) {
242+
foreach ($campaign->MobileAppCampaign->Settings as $i => $setting) {
243+
if (MobileAppCampaignSettingsEnum::isGetOnly($setting->Option)) {
244+
unset($campaign->MobileAppCampaign->Settings[$i]);
245+
}
246+
}
247+
$campaign->MobileAppCampaign->Settings = array_values($campaign->MobileAppCampaign->Settings);
248+
}
237249
}
238250
return $converted;
239251
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace directapi\services\campaigns\enum;
4+
5+
use directapi\components\Enum;
6+
7+
class CpmCampaignSettingsEnum extends Enum
8+
{
9+
public const ADD_METRICA_TAG = 'ADD_METRICA_TAG';
10+
public const ADD_OPENSTAT_TAG = 'ADD_OPENSTAT_TAG';
11+
public const ADD_TO_FAVORITES = 'ADD_TO_FAVORITES';
12+
public const ENABLE_AREA_OF_INTEREST_TARGETING = 'ENABLE_AREA_OF_INTEREST_TARGETING';
13+
public const ENABLE_SITE_MONITORING = 'ENABLE_SITE_MONITORING';
14+
public const REQUIRE_SERVICING = 'REQUIRE_SERVICING';
15+
public const SHARED_ACCOUNT_ENABLED = 'SHARED_ACCOUNT_ENABLED';
16+
public const DAILY_BUDGET_ALLOWED = 'DAILY_BUDGET_ALLOWED';
17+
18+
/**
19+
* @var array
20+
*/
21+
private static $getOnly = [
22+
self::SHARED_ACCOUNT_ENABLED,
23+
self::DAILY_BUDGET_ALLOWED,
24+
];
25+
26+
public static function isGetOnly(CpmCampaignSettingsEnum $value): bool
27+
{
28+
if (in_array((string)$value, self::$getOnly, true)) {
29+
return true;
30+
}
31+
return false;
32+
}
33+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
namespace directapi\services\campaigns\enum;
4+
5+
use directapi\components\Enum;
6+
7+
class DynamicCampaignSettingsEnum extends Enum
8+
{
9+
public const ADD_METRICA_TAG = 'ADD_METRICA_TAG';
10+
public const ADD_OPENSTAT_TAG = 'ADD_OPENSTAT_TAG';
11+
public const ADD_TO_FAVORITES = 'ADD_TO_FAVORITES';
12+
public const ENABLE_AREA_OF_INTEREST_TARGETING = 'ENABLE_AREA_OF_INTEREST_TARGETING';
13+
public const ENABLE_COMPANY_INFO = 'ENABLE_COMPANY_INFO';
14+
public const ENABLE_EXTENDED_AD_TITLE = 'ENABLE_EXTENDED_AD_TITLE';
15+
public const ENABLE_SITE_MONITORING = 'ENABLE_SITE_MONITORING';
16+
public const REQUIRE_SERVICING = 'REQUIRE_SERVICING';
17+
public const SHARED_ACCOUNT_ENABLED = 'SHARED_ACCOUNT_ENABLED';
18+
public const DAILY_BUDGET_ALLOWED = 'DAILY_BUDGET_ALLOWED';
19+
public const CAMPAIGN_EXACT_PHRASE_MATCHING_ENABLED = 'CAMPAIGN_EXACT_PHRASE_MATCHING_ENABLED';
20+
21+
/**
22+
* @var array
23+
*/
24+
private static $getOnly = [
25+
self::SHARED_ACCOUNT_ENABLED,
26+
self::DAILY_BUDGET_ALLOWED,
27+
self::CAMPAIGN_EXACT_PHRASE_MATCHING_ENABLED
28+
];
29+
30+
public static function isGetOnly(DynamicCampaignSettingsEnum $value): bool
31+
{
32+
if (\in_array((string)$value, self::$getOnly, true)) {
33+
return true;
34+
}
35+
return false;
36+
}
37+
}

src/services/campaigns/enum/MobileAppCampaignSettingsEnum.php

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,30 @@
77
class MobileAppCampaignSettingsEnum extends Enum
88
{
99
public const ADD_TO_FAVORITES = 'ADD_TO_FAVORITES';
10-
public const ENABLE_BEHAVIORAL_TARGETING = 'ENABLE_BEHAVIORAL_TARGETING';
1110
public const ENABLE_AUTOFOCUS = 'ENABLE_AUTOFOCUS';
1211
public const REQUIRE_SERVICING = 'REQUIRE_SERVICING';
1312
public const MAINTAIN_NETWORK_CPC = 'MAINTAIN_NETWORK_CPC';
13+
public const ENABLE_AREA_OF_INTEREST_TARGETING = 'ENABLE_AREA_OF_INTEREST_TARGETING';
14+
public const SHARED_ACCOUNT_ENABLED = 'SHARED_ACCOUNT_ENABLED';
15+
public const DAILY_BUDGET_ALLOWED = 'DAILY_BUDGET_ALLOWED';
16+
public const CAMPAIGN_EXACT_PHRASE_MATCHING_ENABLED = 'CAMPAIGN_EXACT_PHRASE_MATCHING_ENABLED';
17+
18+
/**
19+
* @var array
20+
*/
21+
private static $getOnly = [
22+
self::ENABLE_AUTOFOCUS,
23+
self::MAINTAIN_NETWORK_CPC,
24+
self::SHARED_ACCOUNT_ENABLED,
25+
self::DAILY_BUDGET_ALLOWED,
26+
self::CAMPAIGN_EXACT_PHRASE_MATCHING_ENABLED
27+
];
28+
29+
public static function isGetOnly(MobileAppCampaignSettingsEnum $value): bool
30+
{
31+
if (\in_array((string)$value, self::$getOnly, true)) {
32+
return true;
33+
}
34+
return false;
35+
}
1436
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
namespace directapi\services\campaigns\enum;
4+
5+
use directapi\components\Enum;
6+
7+
class SmartCampaignSettingsEnum extends Enum
8+
{
9+
public const ADD_TO_FAVORITES = 'ADD_TO_FAVORITES';
10+
public const ENABLE_AREA_OF_INTEREST_TARGETING = 'ENABLE_AREA_OF_INTEREST_TARGETING';
11+
public const REQUIRE_SERVICING = 'REQUIRE_SERVICING';
12+
public const SHARED_ACCOUNT_ENABLED = 'SHARED_ACCOUNT_ENABLED';
13+
public const DAILY_BUDGET_ALLOWED = 'DAILY_BUDGET_ALLOWED';
14+
15+
/**
16+
* @var array
17+
*/
18+
private static $getOnly = [
19+
self::SHARED_ACCOUNT_ENABLED,
20+
self::DAILY_BUDGET_ALLOWED,
21+
self::ENABLE_AREA_OF_INTEREST_TARGETING,
22+
];
23+
24+
public static function isGetOnly(SmartCampaignSettingsEnum $value): bool
25+
{
26+
if (in_array((string)$value, self::$getOnly, true)) {
27+
return true;
28+
}
29+
return false;
30+
}
31+
}

src/services/campaigns/models/CpmBannerCampaignItem.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ class CpmBannerCampaignItem extends Model
1717
public $BiddingStrategy;
1818

1919
/**
20-
* @var TextCampaignSetting[]
20+
* @var CpmCampaignSetting[]
2121
* @Assert\Valid()
22-
* @DirectApiAssert\ArrayOf(type="directapi\services\campaigns\models\TextCampaignSetting")
22+
* @DirectApiAssert\ArrayOf(type="directapi\services\campaigns\models\CpmCampaignSetting")
2323
*/
2424
public $Settings;
2525

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
namespace directapi\services\campaigns\models;
4+
5+
use directapi\common\enum\YesNoEnum;
6+
use directapi\components\constraints as DirectApiAssert;
7+
use directapi\services\campaigns\enum\CpmCampaignSettingsEnum;
8+
use Symfony\Component\Validator\Constraints as Assert;
9+
10+
class CpmCampaignSetting
11+
{
12+
/**
13+
* @var \directapi\services\campaigns\enum\CpmCampaignSettingsEnum
14+
* @Assert\NotBlank()
15+
* @DirectApiAssert\IsEnum(type="directapi\services\campaigns\enum\CpmCampaignSettingsEnum")
16+
*/
17+
public $Option;
18+
19+
/**
20+
* @var \directapi\common\enum\YesNoEnum
21+
* @Assert\NotBlank()
22+
* @DirectApiAssert\IsEnum(type="directapi\common\enum\YesNoEnum")
23+
*/
24+
public $Value;
25+
26+
public function __construct(?CpmCampaignSettingsEnum $option = null, ?YesNoEnum $value = null)
27+
{
28+
$this->Option = $option;
29+
$this->Value = $value;
30+
}
31+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
namespace directapi\services\campaigns\models;
4+
5+
use directapi\common\enum\YesNoEnum;
6+
use directapi\components\constraints as DirectApiAssert;
7+
use directapi\services\campaigns\enum\DynamicCampaignSettingsEnum;
8+
use Symfony\Component\Validator\Constraints as Assert;
9+
10+
class DynamicCampaignSetting
11+
{
12+
/**
13+
* @var \directapi\services\campaigns\enum\DynamicCampaignSettingsEnum
14+
* @Assert\NotBlank()
15+
* @DirectApiAssert\IsEnum(type="directapi\services\campaigns\enum\DynamicCampaignSettingsEnum")
16+
*/
17+
public $Option;
18+
19+
/**
20+
* @var \directapi\common\enum\YesNoEnum
21+
* @Assert\NotBlank()
22+
* @DirectApiAssert\IsEnum(type="directapi\common\enum\YesNoEnum")
23+
*/
24+
public $Value;
25+
26+
public function __construct(?DynamicCampaignSettingsEnum $option = null, ?YesNoEnum $value = null)
27+
{
28+
$this->Option = $option;
29+
$this->Value = $value;
30+
}
31+
}

src/services/campaigns/models/DynamicTextCampaignItem.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ class DynamicTextCampaignItem extends Model
1717
public $BiddingStrategy;
1818

1919
/**
20-
* @var TextCampaignSetting[]
20+
* @var DynamicCampaignSetting[]
2121
* @Assert\Valid()
22-
* @DirectApiAssert\ArrayOf(type="directapi\services\campaigns\models\TextCampaignSetting")
22+
* @DirectApiAssert\ArrayOf(type="directapi\services\campaigns\models\DynamicCampaignSetting")
2323
*/
2424
public $Settings;
2525

src/services/campaigns/models/SmartCampaignItem.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ class SmartCampaignItem extends Model
3030
public $BiddingStrategy;
3131

3232
/**
33-
* @var TextCampaignSetting[]
33+
* @var SmartCampaignSetting[]
3434
* @Assert\Valid()
35-
* @DirectApiAssert\ArrayOf(type="directapi\services\campaigns\models\TextCampaignSetting")
35+
* @DirectApiAssert\ArrayOf(type="directapi\services\campaigns\models\SmartCampaignSetting")
3636
*/
3737
public $Settings;
3838

0 commit comments

Comments
 (0)