1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
JobRepository.php
См. документацию.
1<?php
2
3declare(strict_types=1);
4
5namespace Bitrix\Socialnetwork\Collab\Onboarding\Internals\Repository;
6
7use Bitrix\Main\ArgumentException;
8use Bitrix\Main\ObjectPropertyException;
9use Bitrix\Main\SystemException;
10use Bitrix\Main\Type\DateTime;
11use Bitrix\Socialnetwork\Collab\Onboarding\Entity\JobCollection;
12use Bitrix\Socialnetwork\Collab\Onboarding\Internals\Model\QueueTable;
13use Bitrix\Socialnetwork\Collab\Onboarding\Internals\Type;
14use Bitrix\Socialnetwork\Collab\Onboarding\Internals\Repository\Orm\Mapper\JobCollectionMapper;
15
17{
23 public function getAll(DateTime $from = new DateTime(), int $limit = 500): JobCollection
24 {
25 $jobCollectionModel = QueueTable::query()
26 ->setSelect(['ID', 'COLLAB_ID', 'USER_ID', 'TYPE', 'NEXT_EXECUTION', 'CREATED_DATE'])
27 ->where('IS_PROCESSED', false)
28 ->where('NEXT_EXECUTION', '<=', $from)
29 ->setLimit($limit)
30 ->exec()
31 ->fetchCollection()
32 ;
33
34 if ($jobCollectionModel === null)
35 {
36 return new JobCollection();
37 }
38
39 return JobCollectionMapper::convertFromOrm($jobCollectionModel);
40 }
41
47 public function getByCollabId(int $collabId, DateTime $from = new DateTime()): JobCollection
48 {
49 $jobCollectionModel = QueueTable::query()
50 ->setSelect(['ID', 'COLLAB_ID', 'USER_ID', 'TYPE', 'NEXT_EXECUTION', 'CREATED_DATE'])
51 ->where('COLLAB_ID', $collabId)
52 ->where('IS_PROCESSED', false)
53 ->where('NEXT_EXECUTION', '<=', $from)
54 ->exec()
55 ->fetchCollection()
56 ;
57
58 if ($jobCollectionModel === null)
59 {
60 return new JobCollection();
61 }
62
63 return JobCollectionMapper::convertFromOrm($jobCollectionModel);
64 }
65
71 public function getByUserId(int $userId, DateTime $from = new DateTime()): JobCollection
72 {
73 $jobCollectionModel = QueueTable::query()
74 ->setSelect(['ID', 'COLLAB_ID', 'USER_ID', 'TYPE', 'NEXT_EXECUTION', 'CREATED_DATE'])
75 ->where('USER_ID', $userId)
76 ->where('IS_PROCESSED', false)
77 ->where('NEXT_EXECUTION', '<=', $from)
78 ->exec()
79 ->fetchCollection()
80 ;
81
82 if ($jobCollectionModel === null)
83 {
84 return new JobCollection();
85 }
86
87 return JobCollectionMapper::convertFromOrm($jobCollectionModel);
88 }
89
95 public function getByFilter(array $filter, DateTime $from = new DateTime()): JobCollection
96 {
97 if (empty($filter))
98 {
99 return new JobCollection();
100 }
101
102 $filter = array_merge([
103 'IS_PROCESSED' => false,
104 '<=NEXT_EXECUTION' => $from,
105 ], $filter);
106
107 $jobCollectionModel = QueueTable::query()
108 ->setSelect(['ID', 'COLLAB_ID', 'USER_ID', 'TYPE', 'NEXT_EXECUTION', 'CREATED_DATE'])
109 ->setFilter($filter)
110 ->exec()
111 ->fetchCollection()
112 ;
113
114 if ($jobCollectionModel === null)
115 {
116 return new JobCollection();
117 }
118
119 return JobCollectionMapper::convertFromOrm($jobCollectionModel);
120 }
121
122 public function add(JobCollection $jobCollection): void
123 {
124 $jobCollectionModel = JobCollectionMapper::convertToOrm($jobCollection);
125 $jobCollectionModel->save(true);
126 }
127
131 public function deleteByFilter(array $filter): void
132 {
133 QueueTable::deleteByFilter($filter);
134 }
135
140 public function markAsProcessing(int ...$commandIds): void
141 {
142 QueueTable::updateMulti($commandIds, ['IS_PROCESSED' => true, 'PROCESSED_DATE' => new DateTime()]);
143 }
144
149 public function unmarkAsProcessing(int ...$commandIds): void
150 {
151 QueueTable::updateMulti($commandIds, ['IS_PROCESSED' => false]);
152 }
153}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
getByCollabId(int $collabId, DateTime $from=new DateTime())
Определения JobRepository.php:47
getAll(DateTime $from=new DateTime(), int $limit=500)
Определения JobRepository.php:23
getByUserId(int $userId, DateTime $from=new DateTime())
Определения JobRepository.php:71
getByFilter(array $filter, DateTime $from=new DateTime())
Определения JobRepository.php:95
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$filter
Определения iblock_catalog_list.php:54