1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
journalprocessor.php
См. документацию.
1<?php
2
3namespace Sale\Handlers\Delivery\YandexTaxi\EventJournal;
4
5use Bitrix\Sale\Delivery\Services\Manager;
6use Sale\Handlers\Delivery\YandexTaxi\Internals\ClaimsTable;
7use Sale\Handlers\Delivery\YandextaxiHandler;
8
14final class JournalProcessor
15{
17 protected $eventReader;
18
20 protected $eventProcessor;
21
27 public function __construct(EventReader $eventReader, EventProcessor $eventProcessor)
28 {
29 $this->eventReader = $eventReader;
30 $this->eventProcessor = $eventProcessor;
31 }
32
37 public static function processJournal(int $serviceId)
38 {
40 $service = Manager::getObjectById($serviceId);
41 if (!$service)
42 {
43 return null;
44 }
45
46 $instance = $service->getYandexTaxiJournalProcessor();
47 $agent = $instance->getAgentName($serviceId);
48
49 $configValues = $service->getConfigValues();
50 $prevCursor = isset($configValues['MAIN']['CURSOR']) && !empty($configValues['MAIN']['CURSOR'])
51 ? $configValues['MAIN']['CURSOR']
52 : null;
53
54
55 $readResult = $instance->eventReader->read($serviceId, $prevCursor);
56
57 if ($readResult->isSuccess())
58 {
59 $instance->eventProcessor->process($serviceId, $readResult->getEvents());
60
61 return $instance->hasMore() === false ? null : $agent;
62 }
63
64 return $agent;
65 }
66
71 public function getAgentName(int $serviceId): string
72 {
73 return '\\' . static::class . sprintf('::processJournal(%s);', $serviceId);
74 }
75
79 private function hasMore()
80 {
81 $notFinalizedClaim = ClaimsTable::getList(
82 [
83 'filter' => ['=FURTHER_CHANGES_EXPECTED' => 'Y'],
84 'limit' => 1,
85 ]
86 )->fetch();
87
88 return $notFinalizedClaim ? true : false;
89 }
90}
static getObjectById($id)
Определения manager.php:165
if(errorBox) return true
Определения file_new.php:1035
$service
Определения payment.php:18
$instance
Определения ps_b24_final.php:14