1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
GroupRepository.php
См. документацию.
1<?php
2
3namespace Bitrix\Im\V2\Notification\Group\UserGroup;
4
5use Bitrix\Im\Model\EO_NotifyGroup;
6use Bitrix\Im\Model\NotifyGroupTable;
7use Bitrix\Im\V2\Notification\Group\UserGroup\Dto\ConditionDto;
8use Bitrix\Im\V2\Notification\Group\UserGroup\Dto\CreateGroupDto;
9use Bitrix\Im\V2\Notification\Group\UserGroup\Dto\UpdateGroupDto;
10use Bitrix\Im\V2\Notification\Group\UserGroup\Result\GroupCreateResult;
11use Bitrix\Im\V2\Notification\NotifyError;
12use Bitrix\Main\DI\ServiceLocator;
13use Bitrix\Main\ORM\Data\AddResult;
14use Bitrix\Main\Type\DateTime;
15use Bitrix\Main\Validation\ValidationService;
16use Bitrix\Main\Result;
17
19{
20 private ValidationService $validation;
21 private ConditionRepository $conditionRepository;
22
23 public function __construct()
24 {
25 $this->validation = ServiceLocator::getInstance()->get('main.validation.service');
26 $this->conditionRepository = new ConditionRepository();
27 }
28
29 public function create(CreateGroupDto $createGroupDto): GroupCreateResult
30 {
31 $result = $this->validation->validate($createGroupDto);
32 if (!$result->isSuccess())
33 {
34 return (new GroupCreateResult())->addErrors($result->getErrors());
35 }
36
37 $saveResult = $this->save($createGroupDto);
38 if (!$saveResult->isSuccess())
39 {
41 }
42 $groupId = $saveResult->getId();
43
44 $result = $this->conditionRepository->add(
45 new ConditionDto(
46 module: $createGroupDto->module,
47 event: $createGroupDto->event,
48 userId: $createGroupDto->userId,
49 groupId: $groupId,
50 )
51 );
52
53 if (!$result->isSuccess())
54 {
55 return (new GroupCreateResult())->addErrors($result->getErrors());
56 }
57
58 return new GroupCreateResult($groupId);
59 }
60
61 private function save(CreateGroupDto $createGroupDto): AddResult
62 {
63 return (new EO_NotifyGroup())
64 ->setTitle($createGroupDto->title)
65 ->setUserId($createGroupDto->userId)
66 ->save()
67 ;
68 }
69
70 public function update(UpdateGroupDto $updateGroupDto): Result
71 {
72 $result = $this->validation->validate($updateGroupDto);
73 if (!$result->isSuccess())
74 {
75 return $result;
76 }
77
78 return NotifyGroupTable::update($updateGroupDto->groupId, [
79 NotifyGroupTable::FIELD_TITLE => $updateGroupDto->title,
80 NotifyGroupTable::FIELD_DATE_UPDATE => new DateTime(),
81 ]);
82 }
83
84 public function delete(EO_NotifyGroup $model): void
85 {
86 $this->conditionRepository->deleteByGroupId($model->getId());
87 $model->delete();
88 }
89
90 public function deleteById(int $id, bool $withConditions = true): void
91 {
92 if ($withConditions)
93 {
94 $this->conditionRepository->deleteByGroupId($id);
95 }
96
97 NotifyGroupTable::deleteByFilter([
98 NotifyGroupTable::FIELD_ID => $id,
99 ]);
100 }
101
102 public function isExistsWithUserId(int $id, int $userId): bool
103 {
104 $row = NotifyGroupTable::query()
105 ->where(NotifyGroupTable::FIELD_ID, $id)
106 ->where(NotifyGroupTable::FIELD_USER_ID, $userId)
107 ->setSelect([NotifyGroupTable::FIELD_ID])
108 ->setLimit(1)
109 ->exec()
110 ->fetch()
111 ;
112
113 return !empty($row);
114 }
115}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
create(CreateGroupDto $createGroupDto)
Определения GroupRepository.php:29
update(UpdateGroupDto $updateGroupDto)
Определения GroupRepository.php:70
deleteById(int $id, bool $withConditions=true)
Определения GroupRepository.php:90
$result
Определения get_property_values.php:14