3namespace Sale\Handlers\Delivery\YandexTaxi\EventJournal;
5use Bitrix\Sale\Delivery\Services\Manager;
6use Sale\Handlers\Delivery\YandexTaxi\Internals\ClaimsTable;
7use Sale\Handlers\Delivery\YandextaxiHandler;
14final class JournalProcessor
17 protected $eventReader;
20 protected $eventProcessor;
27 public function __construct(EventReader $eventReader, EventProcessor $eventProcessor)
29 $this->eventReader = $eventReader;
30 $this->eventProcessor = $eventProcessor;
37 public static function processJournal(
int $serviceId)
47 $agent =
$instance->getAgentName($serviceId);
49 $configValues =
$service->getConfigValues();
50 $prevCursor = isset($configValues[
'MAIN'][
'CURSOR']) && !empty($configValues[
'MAIN'][
'CURSOR'])
51 ? $configValues[
'MAIN'][
'CURSOR']
55 $readResult =
$instance->eventReader->read($serviceId, $prevCursor);
57 if ($readResult->isSuccess())
59 $instance->eventProcessor->process($serviceId, $readResult->getEvents());
61 return $instance->hasMore() ===
false ? null : $agent;
71 public function getAgentName(
int $serviceId): string
73 return '\\' . static::class . sprintf(
'::processJournal(%s);', $serviceId);
79 private function hasMore()
81 $notFinalizedClaim = ClaimsTable::getList(
83 'filter' => [
'=FURTHER_CHANGES_EXPECTED' =>
'Y'],
88 return $notFinalizedClaim ?
true :
false;
static getObjectById($id)