1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
MembersNotInvitedFiveDays.php
См. документацию.
1<?php
2
3declare(strict_types=1);
4
5namespace Bitrix\Socialnetwork\Collab\Onboarding\Entity\Type;
6
7use Bitrix\Main\Localization\Loc;
8use Bitrix\Main\Type\DateTime;
9use Bitrix\Socialnetwork\Collab\Onboarding\Entity\AbstractJob;
10use Bitrix\Socialnetwork\Collab\Onboarding\Integration\Im\ChatNotification;
11use Bitrix\Socialnetwork\Collab\Onboarding\Internals\Type;
12use Bitrix\Socialnetwork\Collab\Onboarding\Execution\Result\JobResult;
13use Bitrix\Socialnetwork\Collab\Onboarding\Notification\NotificationService;
14use Bitrix\Socialnetwork\Integration\Calendar\ClosestWorkDate\ClosestWorkDate;
15use CTimeZone;
16
18{
19 public const JOB_OFFSET = self::SECONDS_PER_DAY * 5;
20
21 public function getType(): Type
22 {
23 return Type::MembersNotInvitedFiveDays;
24 }
25
26 public function isImmediatelyExecuted(): bool
27 {
28 return true;
29 }
30
31 protected function createNextExecutionDate(): DateTime
32 {
33 $closestWorkDate = (new ClosestWorkDate())->get(self::JOB_OFFSET);
34
35 $userTimeOffset = CTimeZone::GetOffset($this->userId);
36 $closestWorkDate->add("-{$userTimeOffset} seconds");
37
38 return $closestWorkDate;
39 }
40
41 public function __invoke(): JobResult
42 {
43 $notificationService = new NotificationService([
44 ChatNotification::getInstance(),
45 ]);
46
47 $notificationService->send(
48 Loc::getMessage('SOCIALNETWORK_COLLAB_ONBOARDING_MEMBERS_NOT_INVITED_FIVE_DAYS'),
49 $this->userId,
50 $this->collabId
51 );
52
53 return new JobResult();
54 }
55}