3declare(strict_types=1);
5namespace Bitrix\Socialnetwork\Collab\Onboarding\Entity\Type;
8use Bitrix\Main\Localization\Loc;
9use Bitrix\Main\Type\DateTime;
10use Bitrix\Socialnetwork\Collab\Onboarding\Entity\AbstractJob;
11use Bitrix\Socialnetwork\Collab\Onboarding\Integration\Im\ChatNotification;
12use Bitrix\Socialnetwork\Collab\Onboarding\Integration\Im\ChatService;
13use Bitrix\Socialnetwork\Collab\Onboarding\Internals\Type;
14use Bitrix\Socialnetwork\Collab\Onboarding\Execution\Result\JobResult;
15use Bitrix\Socialnetwork\Collab\Onboarding\Notification\NotificationService;
16use Bitrix\Socialnetwork\Collab\Provider\CollabProvider;
17use Bitrix\Socialnetwork\Integration\Calendar\ClosestWorkDate\ClosestWorkDate;
26 return Type::StartChattingOneDay;
38 $userTimeOffset = CTimeZone::GetOffset($this->userId);
39 $closestWorkDate->add(
"-{$userTimeOffset} seconds");
41 return $closestWorkDate;
48 if ($this->createdDate ===
null)
50 $jobResult->addError(
new Error(
'The created date cannot be null'));
55 if (!$this->isStartChatting())
57 $this->sendNotification();
63 private function isStartChatting(): bool
65 $collab = CollabProvider::getInstance()->getCollab($this->collabId);
71 return ChatService::getInstance()->isExistUserMessageByPeriod(
78 private function sendNotification(): void
80 $notificationService =
new NotificationService([
81 ChatNotification::getInstance(),
84 $notificationService->send(
85 Loc::getMessage(
'SOCIALNETWORK_COLLAB_ONBOARDING_START_CHATTING'),
createNextExecutionDate()