Commit 3f1ebeaf by Vladislav

#19456 Запрос измененных РК и сохранение инфы об этом

1 parent 5f316da6
...@@ -147,6 +147,9 @@ class Campaigns extends Model ...@@ -147,6 +147,9 @@ class Campaigns extends Model
$campaign->dictionaries()->detach(); $campaign->dictionaries()->detach();
} }
} }
// if ($campaign->name === 'change name')
// dd($campaign->dictionaryCampaigns()->synchronized()->get());
if (DictionaryCampaign::getPropertiesCopyWithPivot()->first(function ($property_name) use ($campaign) { if (DictionaryCampaign::getPropertiesCopyWithPivot()->first(function ($property_name) use ($campaign) {
return $campaign->{$property_name} !== $campaign->getOriginal($property_name); return $campaign->{$property_name} !== $campaign->getOriginal($property_name);
})) { })) {
......
...@@ -93,6 +93,8 @@ class DictionaryCampaign extends Pivot ...@@ -93,6 +93,8 @@ class DictionaryCampaign extends Pivot
static public function getWithPivot() static public function getWithPivot()
{ {
return [ return [
'id',
'external_id',
'name', 'name',
'negative_keywords', 'negative_keywords',
'excluded_sites', 'excluded_sites',
......
...@@ -40,7 +40,6 @@ class AddCampaigns extends DirectRequest ...@@ -40,7 +40,6 @@ class AddCampaigns extends DirectRequest
$this->dictionaryCampaigns->get($key)->update([ $this->dictionaryCampaigns->get($key)->update([
'external_id' => $id, 'external_id' => $id,
'external_upload_at' => Carbon::now(), 'external_upload_at' => Carbon::now(),
]); ]);
} }
} catch (\Exception $e) { } catch (\Exception $e) {
......
...@@ -47,18 +47,6 @@ class GetCampaigns extends DirectRequest ...@@ -47,18 +47,6 @@ class GetCampaigns extends DirectRequest
$campaigns_data[] = $data; $campaigns_data[] = $data;
} }
if ($this->getToken()->isMain()) { if ($this->getToken()->isMain()) {
foreach ($campaigns_data as $campaign_data) {
$dictionaryCampaign = DictionaryCampaign::synchronized()
->find($campaign_data['external_id']);
if (!$dictionaryCampaign)
continue;
$dictionaryCampaign->update(
$dictionaryCampaign::copyPropertyInCampaign($campaign_data)
);
}
Campaigns::upsert($campaigns_data, [ Campaigns::upsert($campaigns_data, [
'external_id' 'external_id'
], [ ], [
...@@ -81,7 +69,17 @@ class GetCampaigns extends DirectRequest ...@@ -81,7 +69,17 @@ class GetCampaigns extends DirectRequest
'updated_children', 'updated_children',
]); ]);
} else { } else {
foreach ($campaigns_data as $campaign_data) {
$dictionaryCampaign = DictionaryCampaign::synchronized()
->find($campaign_data['external_id']);
if (!$dictionaryCampaign)
continue;
$dictionaryCampaign->update(
$dictionaryCampaign::copyPropertyInCampaign($campaign_data)
);
}
} }
} catch (\Exception $e) { } catch (\Exception $e) {
Log::debug($e); Log::debug($e);
......
...@@ -23,6 +23,7 @@ class CheckCampaignsTest extends TestCase ...@@ -23,6 +23,7 @@ class CheckCampaignsTest extends TestCase
private $token_main; private $token_main;
private $token; private $token;
private $dictionary; private $dictionary;
private $request_main;
protected function setUp(): void protected function setUp(): void
{ {
...@@ -126,7 +127,9 @@ class CheckCampaignsTest extends TestCase ...@@ -126,7 +127,9 @@ class CheckCampaignsTest extends TestCase
])) ]))
->assertStatus(302); ->assertStatus(302);
$this->assertEquals(1, $this->dictionary->campaigns()->count()); $this->dictionary->load('campaigns');
$this->assertEquals(1, $this->dictionary->campaigns->count());
$this->request->handle([ $this->request->handle([
'result' => [ 'result' => [
...@@ -148,5 +151,35 @@ class CheckCampaignsTest extends TestCase ...@@ -148,5 +151,35 @@ class CheckCampaignsTest extends TestCase
$this->assertNotNull($campaign->pivot->updated_self); $this->assertNotNull($campaign->pivot->updated_self);
$this->assertNotNull($campaign->pivot->updated_children); $this->assertNotNull($campaign->pivot->updated_children);
$campaign->pivot->update([
'external_id' => 1,
'external_updated_at' => null,
]);
$campaign->update([
'name' => 'change name',
]);
$campaign = $this->dictionary->campaigns()->first();
$this->assertEquals(1, $campaign->pivot->external_id);
$this->assertEquals('change name', $campaign->name);
$this->assertEquals('change name', $campaign->pivot->name);
$campaign->pivot->update([
'synced' => false,
]);
$campaign->update([
'name' => 'edit name',
]);
$campaign = $this->dictionary->campaigns()->first();
$this->assertEquals('edit name', $campaign->name);
$this->assertEquals('change name', $campaign->pivot->name);
} }
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!