1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
CollaberAcceptInvitationEventListener.php
См. документацию.
1<?php
2
3declare(strict_types=1);
4
5namespace Bitrix\Socialnetwork\Collab\Onboarding\Event\Type;
6
7use Bitrix\Main\EventResult;
8use Bitrix\Socialnetwork\Collab\Onboarding\Collab\Repository\CollabRepository;
9use Bitrix\Socialnetwork\Collab\Onboarding\Entity\JobCollection;
10use Bitrix\Socialnetwork\Collab\Onboarding\Entity\JobFactory;
11use Bitrix\Socialnetwork\Collab\Onboarding\Internals\Type;
12
14{
15 private CollabRepository $collabRepository;
16
17 public function __construct()
18 {
19 parent::__construct();
20
21 $this->collabRepository = CollabRepository::getInstance();
22 }
23
25 {
26 $initiatorId = (int)($params['INITIATED_BY_USER_ID'] ?? 0);
27 $collaberId = (int)($params['USER_ID'] ?? 0);
28 $groupId = (int)($params['GROUP_ID'] ?? 0);
29
30 if ($initiatorId <= 0 || $collaberId <= 0 || $groupId <= 0)
31 {
32 return new EventResult(EventResult::SUCCESS);
33 }
34
35 if (!$this->isFirstMemberAlreadyAdded($groupId))
36 {
37 $this->addJobsAfterFirstCollaberAcceptInvitation($groupId, $initiatorId, $collaberId);
38 }
39
40 $this->deleteJobsAfterCollaberAcceptingInvitation($groupId);
41
42 return new EventResult(EventResult::SUCCESS);
43 }
44
45 private function isFirstMemberAlreadyAdded(int $collabId): bool
46 {
47 $firstAddedData = $this->collabRepository->getFirstAddedMemberData($collabId);
48
49 return (bool)$firstAddedData?->isFirstMemberAdded;
50 }
51
52 private function addJobsAfterFirstCollaberAcceptInvitation(int $collabId, int $initiatorId, int $collaberId): void
53 {
54 $jobCollection = new JobCollection(
55 JobFactory::create($collabId, $initiatorId, Type::StartChattingOneDay->value),
56 JobFactory::create($collabId, $initiatorId, Type::CreatedTaskOrMeetingOrFileThreeDays->value),
57 JobFactory::create($collabId, $collaberId, Type::CreatedTaskOrMeetingOrFileThreeDays->value),
58 );
59
60 $this->queueService->add($jobCollection);
61 }
62
63 private function deleteJobsAfterCollaberAcceptingInvitation(int $collabId): void
64 {
65 $this->queueService->deleteByFilter([
66 'COLLAB_IDS' => [$collabId],
67 'JOB_TYPES' => [
68 Type::CollaberNotAcceptInvitationOneDay->value,
69 Type::CollaberNotAcceptInvitationTwoDays->value,
70 ],
71 ]);
72 }
73}
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799