1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
CollabRepository.php
См. документацию.
1<?php
2
3declare(strict_types=1);
4
5namespace Bitrix\Socialnetwork\Collab\Onboarding\Collab\Repository;
6
7use Bitrix\Socialnetwork\Collab\Onboarding\Collab\Entity\FirstAddedMemberData;
8use Bitrix\Socialnetwork\Collab\Onboarding\Collab\Repository\Cache\CollabCache;
9use Bitrix\Socialnetwork\Collab\Onboarding\Collab\Repository\Cache\CollabCacheInterface;
10use Bitrix\Socialnetwork\Helper\InstanceTrait;
11use Bitrix\Socialnetwork\UserToGroupTable;
12
14{
15 use InstanceTrait;
16
17 private CollabCacheInterface $cache;
18
19 public function __construct()
20 {
21 $this->cache = CollabCache::getInstance();
22 }
23
24 public function getFirstAddedMemberData(int $collabId): ?FirstAddedMemberData
25 {
26 if ($collabId <= 0)
27 {
28 return null;
29 }
30
31 $firstAddedData = $this->cache->getFirstAddedMemberData($collabId);
32 if (null === $firstAddedData)
33 {
34 $row = UserToGroupTable::query()
35 ->setSelect(['DATE_CREATE'])
36 ->where('GROUP_ID', $collabId)
37 ->where('ROLE', '<', UserToGroupTable::ROLE_REQUEST)
38 ->setOrder(['DATE_CREATE' => 'ASC'])
39 ->setOffset(1)
40 ->setLimit(1)
41 ->exec()
42 ->fetch();
43
44 $date = $row['DATE_CREATE'] ?? null;
45
46 $firstAddedData = new FirstAddedMemberData($collabId, $date, $date !== null);
47 $this->cache->save($firstAddedData);
48 }
49
50 return $firstAddedData;
51 }
52}