Bitrix-D7 22.6
 
Загрузка...
Поиск...
Не найдено
factory.php
1<?php
3
4class Factory
5{
6 private const EVENT_TYPE = 'event';
7 private const USER_TYPE = 'user';
8
9 public function getLinkArrayByHash(string $hash): ?array
10 {
11 $sharingLink = $this->getLinkByHash($hash);
12
13 if ($sharingLink instanceof UserLink)
14 {
15 return (new UserLinkMapper())->convertToArray($sharingLink);
16 }
17
18 if ($sharingLink instanceof EventLink)
19 {
20 return (new EventLinkMapper())->convertToArray($sharingLink);
21 }
22
23 return null;
24 }
25
26 public function getLinkByHash(string $hash): ?\Bitrix\Calendar\Core\Base\EntityInterface
27 {
28 $sharingLinkEO = SharingLinkTable::query()
29 ->setSelect(['*'])
30 ->where('HASH', $hash)
31 ->exec()->fetchObject();
32
33 if ($sharingLinkEO === null)
34 {
35 return null;
36 }
37
38 if ($sharingLinkEO->getObjectType() === self::USER_TYPE)
39 {
40 return (new UserLinkMapper())->getByEntityObject($sharingLinkEO);
41 }
42
43 if ($sharingLinkEO->getObjectType() === self::EVENT_TYPE)
44 {
45 return (new EventLinkMapper())->getByEntityObject($sharingLinkEO);
46 }
47
48 return null;
49 }
50
51 public function getUserLinksArray($userId): array
52 {
53 $userLinksCollection = $this->getUserLinks($userId);
54
55 $userLinks = [];
56 foreach ($userLinksCollection as $userLink)
57 {
58 $userLinks[] = (new UserLinkMapper())->convertToArray($userLink);
59 }
60
61 return $userLinks;
62 }
63
64 public function getUserLinks($userId): array
65 {
66 return (new UserLinkMapper())->getMap([
67 '=OBJECT_ID' => $userId,
68 ])->getCollection();
69 }
70
71 public function createUserLink(int $userId, bool $isSharingOn): self
72 {
73 $userLink = (new UserLink())
74 ->setUserId($userId)
75 ->setSlotSize(60)
76 ->setActive($isSharingOn)
77 ;
78
79 (new UserLinkMapper())->create($userLink);
80
81 return $this;
82 }
83
84 public function createEventLink(int $eventId, int $ownerId, int $hostId, string $userLinkHash): EventLink
85 {
86 $eventLink = (new EventLink())
87 ->setEventId($eventId)
88 ->setOwnerId($ownerId)
89 ->setHostId($hostId)
90 ->setUserLinkHash($userLinkHash)
91 ->setActive(true)
92 ;
93
94 (new EventLinkMapper())->create($eventLink);
95
96 return $eventLink;
97 }
98
99 public function getEventLinkByEventId(int $eventId): ?\Bitrix\Calendar\Core\Base\EntityInterface
100 {
101 $sharingLinkEO = SharingLinkTable::query()
102 ->setSelect(['*'])
103 ->where('OBJECT_ID', $eventId)
104 ->where('OBJECT_TYPE', self::EVENT_TYPE)
105 ->where('ACTIVE', 'Y')
106 ->exec()->fetchObject();
107
108 if ($sharingLinkEO === null)
109 {
110 return null;
111 }
112
113 return (new EventLinkMapper())->getByEntityObject($sharingLinkEO);
114 }
115
116}