Commit 1477dd45 by Vladislav

#20697 Доработка добавления модификаторов

1 parent ac8aa4ac
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Models\Pivots\GoalBidModifier; use App\Models\Pivots\GoalBidModifier;
use App\Models\Pivots\GoalRetargetinglist;
use App\Models\Retargetinglist;
use App\Models\Tokens; use App\Models\Tokens;
use App\Service\Requests\Direct\AddBidModifiers; use App\Service\Requests\Direct\AddBidModifiers;
use Carbon\Carbon; use Carbon\Carbon;
...@@ -71,6 +73,7 @@ class BidModifiersAdd extends Command ...@@ -71,6 +73,7 @@ class BidModifiersAdd extends Command
'bid_modifiers.desktop_adjustment', 'bid_modifiers.desktop_adjustment',
'bid_modifiers.video_adjustment', 'bid_modifiers.video_adjustment',
'dictionaries.region_id', 'dictionaries.region_id',
'dictionaries.token_id',
]) ])
->select([ ->select([
DB::raw('json_arrayagg(goal_bid_modifiers.id) as ids'), DB::raw('json_arrayagg(goal_bid_modifiers.id) as ids'),
...@@ -80,11 +83,61 @@ class BidModifiersAdd extends Command ...@@ -80,11 +83,61 @@ class BidModifiersAdd extends Command
'bid_modifiers.video_adjustment as video_adjustment', 'bid_modifiers.video_adjustment as video_adjustment',
'bid_modifiers.desktop_adjustment as desktop_adjustment', 'bid_modifiers.desktop_adjustment as desktop_adjustment',
'dictionaries.region_id', 'dictionaries.region_id',
'dictionaries.token_id',
DB::raw('json_arrayagg(bid_modifiers.demographics_adjustment) as demographics_adjustments'), DB::raw('json_arrayagg(bid_modifiers.demographics_adjustment) as demographics_adjustments'),
DB::raw('json_arrayagg(bid_modifiers.retargeting_adjustment) as retargeting_adjustments'), DB::raw('json_arrayagg(bid_modifiers.retargeting_adjustment) as retargeting_adjustments'),
]) ])
->get(); ->get();
foreach ($goalBidModifiers as $key => $goalBidModifier) {
$retargeting_adjustments = array_filter(@json_decode($goalBidModifier->retargeting_adjustments, true));
if (count($retargeting_adjustments)) {
$isFindNotExternalRetargetingList = false;
$retargeting_adjustments = array_map(function ($retargeting_adjustment) use ($goalBidModifiers, $key, $goalBidModifier, &$isFindNotExternalRetargetingList) {
$retargeting_list = Retargetinglist::firstWhere('external_id', $retargeting_adjustment['RetargetingConditionId']);
if (!$retargeting_list) {
$goalBidModifiers->forget($key);
$isFindNotExternalRetargetingList = true;
return false;
}
$goal_retargeting_list = GoalRetargetinglist::forExternal()->where('token_id', $goalBidModifier->token_id)
->where('retargetinglist_id', $retargeting_list->getKey())
->first();
if (!$goal_retargeting_list) {
$goalBidModifiers->forget($key);
$isFindNotExternalRetargetingList = true;
return false;
}
$retargeting_adjustment['RetargetingConditionId'] = $goal_retargeting_list->external_id;
unset($retargeting_adjustment['Accessible']);
unset($retargeting_adjustment['Enabled']);
return $retargeting_adjustment;
}, $retargeting_adjustments);
if (!$isFindNotExternalRetargetingList) {
$goalBidModifier->retargeting_adjustments = $retargeting_adjustments;
}
}
}
$goalBidModifiers = $goalBidModifiers->values();
if (!$goalBidModifiers->count()) { if (!$goalBidModifiers->count()) {
continue; continue;
} }
......
...@@ -533,7 +533,20 @@ class DictionaryCampaign extends Pivot ...@@ -533,7 +533,20 @@ class DictionaryCampaign extends Pivot
public function goalAudienceTargetsForNotExternalForNotReserveCreate() public function goalAudienceTargetsForNotExternalForNotReserveCreate()
{ {
return $this->goalAudienceTargets()->forNotExternal()->forNotReserveCreate(); return $this->goalAudienceTargets()->forNotExternal()->forNotReserveCreate()
->where(function (Builder $query) {
$query->whereNull('goal_audience_targets.goal_retargetinglist_id')
->orWhere(function (Builder $query) {
$query->whereNotNull('goal_audience_targets.goal_retargetinglist_id')
->whereNotNull('goal_audience_targets.goal_retargetinglist_external_id');
});
})->where(function (Builder $query) {
$query->whereNull('goal_audience_targets.goal_ad_group_id')
->orWhere(function (Builder $query) {
$query->whereNotNull('goal_audience_targets.goal_ad_group_id')
->whereNotNull('goal_audience_targets.goal_ad_group_external_id');
});
});
} }
} }
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
namespace App\Service\Requests\Direct; namespace App\Service\Requests\Direct;
use App\Jobs\ProcessCallLimitedAPI; use App\Jobs\ProcessCallLimitedAPI;
use App\Models\BidModifier;
use App\Models\Pivots\GoalBidModifier; use App\Models\Pivots\GoalBidModifier;
use App\Service\Contract\APIRequest; use App\Service\Contract\APIRequest;
use App\Service\Requests\DirectRequest; use App\Service\Requests\DirectRequest;
...@@ -153,14 +152,7 @@ class AddBidModifiers extends DirectRequest ...@@ -153,14 +152,7 @@ class AddBidModifiers extends DirectRequest
$data['DemographicsAdjustments'] = array_values($demographics_adjustments); $data['DemographicsAdjustments'] = array_values($demographics_adjustments);
} elseif ($retargeting_adjustments = array_map(function ($retargeting_adjustment) { } elseif ($retargeting_adjustments = $goalBidModifier->retargeting_adjustments) {
unset($retargeting_adjustment['Accessible']);
unset($retargeting_adjustment['Enabled']);
return $retargeting_adjustment;
}, array_filter(@json_decode($goalBidModifier->retargeting_adjustments, true)))) {
$data['RetargetingAdjustments'] = $retargeting_adjustments; $data['RetargetingAdjustments'] = $retargeting_adjustments;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!