Commit 79ecfc30 by Vladislav

#19472 Синхронизация групп с целевыми

1 parent d3ae55a0
......@@ -49,9 +49,13 @@ class ProcessCallAPI implements ShouldQueue
//только их и запрашиваем
$limit = \App\Models\Limits::find($this->limitId);
$maxObjects = $limits::NAN;
if ($limit->spent) {
$limits = Limits::getInstance($this->api->getToken());
$maxObjects = $limits->countObjectsLimit($this->api);
$maxObjects = $limits->countObjectsLimitReserve($this->api, $limit);
}
if ($maxObjects and $maxObjects !== $limits::NAN && $this->api->getObjectsCount() > $maxObjects) {
//те на которые не хватило баллов помещаем в очередь
......
......@@ -96,6 +96,19 @@ class Limits implements \App\Service\Contract\Limits {
}
/**
* @param Contract\APIRequest $request
* @param \App\Models\Limits $limits
*
* @return int
* возвращает сколько объектов можем обработать на резервированные баллы
*/
function countObjectsLimitReserve(\App\Service\Contract\APIRequest $request, \App\Models\Limits $limit): int
{
$cost = $this->limitCosts->getCostObject($request);
return floor(($limit->spent - $this->limitCosts->getCostCall($request)) / $cost);
}
/**
* @param APIRequest $request
* @param int $objects
* @return int
......
......@@ -78,7 +78,7 @@ class CheckChanges extends DirectRequest
$ad_group_id = (string)$ad_group_id;
if ($this->getToken()->isMain()) {
$adGroup = AdGroup::where('external_id', $ad_group_id)->first();
$adGroup = AdGroup::firstWhere('external_id', $ad_group_id);
if ($adGroup) {
$adGroup->update([
......@@ -92,7 +92,7 @@ class CheckChanges extends DirectRequest
]);
}
} else {
$goalAdGroup = GoalAdGroup::with('dictionaryCampaign')->firstWhere('external_id', $ad_group_id)->first();
$goalAdGroup = GoalAdGroup::with('dictionaryCampaign')->firstWhere('external_id', $ad_group_id);
if ($goalAdGroup && $goalAdGroup->dictionaryCampaign && $goalAdGroup->dictionaryCampaign->updated) {
$goalAdGroup->update([
......@@ -111,7 +111,7 @@ class CheckChanges extends DirectRequest
$ad_id = (string)$ad_id;
if ($this->getToken()->isMain()) {
$advertisement = Advertisement::where('external_id', $ad_id)->first();
$advertisement = Advertisement::firstWhere('external_id', $ad_id);
if ($advertisement) {
$advertisement->update([
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!