1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
DeleteJobCollectionHandler.php
См. документацию.
1<?php
2
3declare(strict_types=1);
4
5namespace Bitrix\Socialnetwork\Collab\Onboarding\Command\Handler;
6
7use Bitrix\Main\DI\ServiceLocator;
8use Bitrix\Main\Error;
9use Bitrix\Main\Result;
10use Bitrix\Socialnetwork\Collab\Onboarding\Command\Type\DeleteJobsCommand;
11use Bitrix\Socialnetwork\Collab\Onboarding\Internals\Repository\Cache\JobCacheInterface;
12use Bitrix\Socialnetwork\Collab\Onboarding\Internals\Repository\JobRepositoryInterface;
13use Bitrix\Socialnetwork\Collab\Onboarding\Internals\Repository\Cache\JobCacheProxy;
14use Throwable;
15
17{
18 private JobRepositoryInterface $repository;
19 private JobCacheInterface $cache;
20
21 public function __construct()
22 {
23 $this->repository = ServiceLocator::getInstance()->get('socialnetwork.onboarding.job.repository');
24 $this->cache = JobCacheProxy::getInstance();
25 }
26
27 public function __invoke(DeleteJobsCommand $command): Result
28 {
29 $filter = [];
30
31 if (!empty($command->jobIds))
32 {
33 $filter['ID'] = $command->jobIds;
34 }
35
36 if (!empty($command->jobTypes))
37 {
38 $filter['TYPE'] = $command->jobTypes;
39 }
40
41 if (!empty($command->userIds))
42 {
43 $filter['USER_ID'] = $command->userIds;
44 }
45
46 if (!empty($command->collabIds))
47 {
48 $filter['COLLAB_ID'] = $command->collabIds;
49 }
50
51 $result = new Result();
52 if (empty($filter))
53 {
54 return $result;
55 }
56
57 try
58 {
59 $this->cleanCacheByFilter($filter);
60 $this->repository->deleteByFilter($filter);
61 }
62 catch (Throwable $t)
63 {
64 $result->addError(Error::createFromThrowable($t));
65 }
66
67 return $result;
68 }
69
70 private function cleanCacheByFilter(array $filter): void
71 {
72 $isSingleFilter = count($filter) === 1;
73
74 if ($isSingleFilter && isset($filter['USER_ID']))
75 {
76 $this->cache->cleanByUserIds(...$filter['USER_ID']);
77
78 return;
79 }
80
81 if ($isSingleFilter && isset($filter['COLLAB_ID']))
82 {
83 $this->cache->cleanByCollabIds(...$filter['COLLAB_ID']);
84
85 return;
86 }
87
88 $jobProvider = ServiceLocator::getInstance()->get('socialnetwork.onboarding.queue.provider');
89 $jobCollection = $jobProvider->getByFilter($filter);
90
91 if (!$jobCollection->isEmpty())
92 {
93 $this->cache->cleanByJobCollection($jobCollection->sortByUserId());
94 }
95 }
96}
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$filter
Определения iblock_catalog_list.php:54
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936