Commit e92049f3 by Vladislav

#19465 Реализация синхронизации данных по РК

1 parent 381b24ea
...@@ -22,8 +22,8 @@ use Illuminate\Database\Eloquent\Relations\Pivot; ...@@ -22,8 +22,8 @@ use Illuminate\Database\Eloquent\Relations\Pivot;
* @property int $campaign_id * @property int $campaign_id
* @property int $dictionary_id * @property int $dictionary_id
* @property string|null $name * @property string|null $name
* @property string|null $negative_keywords * @property array|null $negative_keywords
* @property string|null $excluded_sites * @property array|null $excluded_sites
* @property int $updated * @property int $updated
* @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at * @property \Illuminate\Support\Carbon|null $updated_at
...@@ -63,7 +63,7 @@ class DictionaryCampaign extends Pivot ...@@ -63,7 +63,7 @@ class DictionaryCampaign extends Pivot
'external_upload_at', 'external_upload_at',
]; ];
protected $cast = [ protected $casts = [
'external_id' => 'int', 'external_id' => 'int',
'campaign_id' => 'int', 'campaign_id' => 'int',
'dictionary_id' => 'int', 'dictionary_id' => 'int',
......
...@@ -29,6 +29,7 @@ class AddCampaigns extends DirectRequest ...@@ -29,6 +29,7 @@ class AddCampaigns extends DirectRequest
public function handle($response) public function handle($response)
{ {
try { try {
dd($response);
foreach ($response['result']['AddResults'] as $key => $add_result) { foreach ($response['result']['AddResults'] as $key => $add_result) {
$id = $add_result['Id'] ?? ''; $id = $add_result['Id'] ?? '';
...@@ -52,11 +53,6 @@ class AddCampaigns extends DirectRequest ...@@ -52,11 +53,6 @@ class AddCampaigns extends DirectRequest
{ {
$this->dictionaryCampaigns = $params['dictionaryCampaigns']; $this->dictionaryCampaigns = $params['dictionaryCampaigns'];
$this->variables = $params['variables']; $this->variables = $params['variables'];
$this->assertEquals('String "custom var value"', StrReplaceByVariables::getInstance('String "%var%"', $variable_list)->get());
} }
private function requestPrepare($params) private function requestPrepare($params)
...@@ -84,11 +80,10 @@ class AddCampaigns extends DirectRequest ...@@ -84,11 +80,10 @@ class AddCampaigns extends DirectRequest
$variable_list[$variable->name] = $value; $variable_list[$variable->name] = $value;
} }
$data = [
return [
'Name' => StrReplaceByVariables::getInstance($dictionaryCampaign->name, $variable_list)->get(), 'Name' => StrReplaceByVariables::getInstance($dictionaryCampaign->name, $variable_list)->get(),
'StartDate' => Carbon::now()->format('Y-m-d'), 'StartDate' => Carbon::now()->format('Y-m-d'),
'NegativeKeywords' => StrReplaceByVariables::getInstance($dictionaryCampaign->campaign->negative_keywords, $variable_list)->get(), 'DailyBudget' => $dictionaryCampaign->campaign->daily_budget,
'TextCampaign' => [ 'TextCampaign' => [
'BiddingStrategy' => [ 'BiddingStrategy' => [
'Search' => [ 'Search' => [
...@@ -98,8 +93,45 @@ class AddCampaigns extends DirectRequest ...@@ -98,8 +93,45 @@ class AddCampaigns extends DirectRequest
'BiddingStrategyType' => $dictionaryCampaign->campaign->text_campaign_strategy_network, 'BiddingStrategyType' => $dictionaryCampaign->campaign->text_campaign_strategy_network,
], ],
], ],
'Settings' => $dictionaryCampaign->campaign->settings,
'RelevantKeywords' => [
'BudgetPercent' => $dictionaryCampaign->campaign->relevant_keywords_setting_budget_percent,
'OptimizeGoalId' => $dictionaryCampaign->campaign->relevant_keywords_setting_optimize_goal_id,
],
'AttributionModel' => $dictionaryCampaign->campaign->attribution_model,
'PriorityGoals' => $dictionaryCampaign->campaign->priority_goals,
], ],
]; ];
if (count($dictionaryCampaign->negative_keywords)) {
$data['NegativeKeywords'] = [
'Items' => array_map(function ($value) use ($variable_list) {
return StrReplaceByVariables::getInstance($value, $variable_list)->get();
}, $dictionaryCampaign->negative_keywords),
];
}
if (count($dictionaryCampaign->campaign->blocked_ips)) {
$data['BlockedIps'] = [
'Items' => $dictionaryCampaign->campaign->blocked_ips,
];
}
if (count($dictionaryCampaign->excluded_sites)) {
$data['ExcludedSites'] = [
'Items' => array_map(function ($value) use ($variable_list) {
return StrReplaceByVariables::getInstance($value, $variable_list)->get();
}, $dictionaryCampaign->excluded_sites),
];
}
if (count($dictionaryCampaign->campaign->counter_ids)) {
$data['TextCampaign']['CounterIds'] = [
'Items' => $dictionaryCampaign->campaign->counter_ids,
];
}
return $data;
}), }),
]); ]);
} }
......
...@@ -31,7 +31,7 @@ class GetCampaigns extends DirectRequest ...@@ -31,7 +31,7 @@ class GetCampaigns extends DirectRequest
'negative_keywords' => json_encode($campaign['NegativeKeywords']['Items'] ?? []), 'negative_keywords' => json_encode($campaign['NegativeKeywords']['Items'] ?? []),
'blocked_ips' => json_encode($campaign['BlockedIps']['Items'] ?? []), 'blocked_ips' => json_encode($campaign['BlockedIps']['Items'] ?? []),
'excluded_sites' => json_encode($campaign['ExcludedSites']['Items'] ?? []), 'excluded_sites' => json_encode($campaign['ExcludedSites']['Items'] ?? []),
'daily_budget' => json_encode($campaign['DailyBudget']['Items'] ?? []), 'daily_budget' => json_encode($campaign['DailyBudget'] ?? []),
'text_campaign_strategy_search' => $campaign['TextCampaign']['BiddingStrategy']['Search']['BiddingStrategyType'], 'text_campaign_strategy_search' => $campaign['TextCampaign']['BiddingStrategy']['Search']['BiddingStrategyType'],
'text_campaign_strategy_network' => $campaign['TextCampaign']['BiddingStrategy']['Network']['BiddingStrategyType'], 'text_campaign_strategy_network' => $campaign['TextCampaign']['BiddingStrategy']['Network']['BiddingStrategyType'],
'settings' => json_encode($campaign['TextCampaign']['Settings']), 'settings' => json_encode($campaign['TextCampaign']['Settings']),
......
...@@ -65,7 +65,10 @@ class GetCampaignsTest extends TestCase ...@@ -65,7 +65,10 @@ class GetCampaignsTest extends TestCase
'NegativeKeywords' => ['Items' => [1, 2, 3]], 'NegativeKeywords' => ['Items' => [1, 2, 3]],
'BlockedIps' => ['Items' => [1, 2, 3]], 'BlockedIps' => ['Items' => [1, 2, 3]],
'ExcludedSites' => ['Items' => [1, 2, 3]], 'ExcludedSites' => ['Items' => [1, 2, 3]],
'DailyBudget' => ['Items' => [1, 2, 3]], 'DailyBudget' => [
'Amount' => 123,
'Mode' => 'STANDARD',
],
'TextCampaign' => [ 'TextCampaign' => [
'BiddingStrategy' => [ 'BiddingStrategy' => [
'Search' => [ 'Search' => [
...@@ -103,7 +106,7 @@ class GetCampaignsTest extends TestCase ...@@ -103,7 +106,7 @@ class GetCampaignsTest extends TestCase
$this->assertEquals($campaign->negative_keywords, $data_campaign['NegativeKeywords']['Items']); $this->assertEquals($campaign->negative_keywords, $data_campaign['NegativeKeywords']['Items']);
$this->assertEquals($campaign->blocked_ips, $data_campaign['BlockedIps']['Items']); $this->assertEquals($campaign->blocked_ips, $data_campaign['BlockedIps']['Items']);
$this->assertEquals($campaign->excluded_sites, $data_campaign['ExcludedSites']['Items']); $this->assertEquals($campaign->excluded_sites, $data_campaign['ExcludedSites']['Items']);
$this->assertEquals($campaign->daily_budget, $data_campaign['DailyBudget']['Items']); $this->assertEquals($campaign->daily_budget, $data_campaign['DailyBudget']);
$this->assertEquals($campaign->text_campaign_strategy_search, $data_campaign['TextCampaign']['BiddingStrategy']['Search']['BiddingStrategyType']); $this->assertEquals($campaign->text_campaign_strategy_search, $data_campaign['TextCampaign']['BiddingStrategy']['Search']['BiddingStrategyType']);
$this->assertEquals($campaign->text_campaign_strategy_network, $data_campaign['TextCampaign']['BiddingStrategy']['Network']['BiddingStrategyType']); $this->assertEquals($campaign->text_campaign_strategy_network, $data_campaign['TextCampaign']['BiddingStrategy']['Network']['BiddingStrategyType']);
$this->assertEquals($campaign->settings, $data_campaign['TextCampaign']['Settings']); $this->assertEquals($campaign->settings, $data_campaign['TextCampaign']['Settings']);
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!