18 private const LOG_MARKER =
'DEBUG_CALENDAR_IM_CHAT_ATTENDEE_PROCESSOR';
19 private static ?
Logger $logger =
null;
27 $eventData[
'CHAT_ID'],
28 AttendeesUpdateTypeEnum::TYPE_ADD
31 self::onChannelUsersUpdate($updateDto, $eventData[
'NEW_USERS']);
35 self::getLogger()->log($e);
44 $eventData[
'CHAT_ID'],
45 AttendeesUpdateTypeEnum::TYPE_DELETE
47 self::onChannelUsersUpdate($updateDto, [$eventData[
'USER_ID']]);
51 self::getLogger()->log($e);
59 $categoryProvider =
new Provider\CategoryProvider(Common::SYSTEM_USER_ID);
61 $eventCategory = $categoryProvider->getByChannelId($updateDto->chatId) ??
null;
65 self::getLogger()->log([
66 'message' =>
'event category not exist for connected channel',
75 if ($eventCategory->closed)
77 self::processClosedEventCategory($eventCategory, $updateDto);
81 self::processOpenEventCategory($eventCategory, $updateDto);
83 }
catch (\Throwable $e)
85 self::getLogger()->log($e);
91 $isBackgroundJobAlreadyScheduled = self::getJobStorage()->has($updateDto);
92 self::getJobStorage()->add($updateDto, $userIds);
93 if ($isBackgroundJobAlreadyScheduled)
98 self::addBackgroundJob($updateDto);
101 private static function addBackgroundJob(EventCategoryAttendeesUpdateDto $updateDto)
104 job: [self::class,
'applyChannelUsersUpdateToCategory'],
109 private static function processClosedEventCategory(
110 Category $eventCategory,
111 EventCategoryAttendeesUpdateDto $updateDto,
114 $categoryAttendeeService = CategoryAttendeeService::getInstance();
115 switch ($updateDto->type)
117 case AttendeesUpdateTypeEnum::TYPE_ADD:
118 $categoryAttendeeService->addAttendeesToCategoryByChunk(
120 self::getJobStorage()->get($updateDto),
123 case AttendeesUpdateTypeEnum::TYPE_DELETE:
124 $categoryAttendeeService->deleteAttendeesFromCategory(
126 self::getJobStorage()->get($updateDto),
133 self::getJobStorage()->clear($updateDto);
136 private static function processOpenEventCategory(
137 Category $eventCategory,
141 switch ($updateDto->type)
143 case AttendeesUpdateTypeEnum::TYPE_DELETE:
145 $categoryBanService->banCategoryMulti($eventCategory->id, self::getJobStorage()->get($updateDto));
150 private static function getLogger(): Logger
152 self::$logger ??=
new Logger(self::LOG_MARKER);
154 return self::$logger;
161 return self::$usersStorage;