- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/activity/entity/configurablerestapp.php
- Класс: Bitrix\Crm\Activity\Entity\ConfigurableRestApp
- Вызов: ConfigurableRestApp::load
static function load(int $id): ?self
{
$data = \CCrmActivity::GetList(
[],
[
'=ID' => $id,
'CHECK_PERMISSIONS' => 'N',
],
false,
false,
[
'ID',
'COMPLETED',
'DEADLINE',
'DESCRIPTION',
'RESPONSIBLE_ID',
'PROVIDER_ID',
'PROVIDER_DATA',
'PROVIDER_PARAMS',
'OWNER_TYPE_ID',
'OWNER_ID',
'ORIGIN_ID',
'ORIGINATOR_ID',
'IS_INCOMING_CHANNEL',
]
)->Fetch();
if (!$data)
{
return null;
}
$id = (int)$data['ID'];
if ($data['PROVIDER_ID'] !== \Bitrix\Crm\Activity\Provider\ConfigurableRestApp::getId())
{
return null;
}
if (!\Bitrix\Crm\Activity\Provider\ConfigurableRestApp::checkReadPermission($data))
{
return null;
}
try
{
$layout = (array)Json::decode($data['PROVIDER_DATA'] ?? '{}');
}
catch (ArgumentException $e)
{
$layout = [];
}
$activity = new self(new ItemIdentifier($data['OWNER_TYPE_ID'], $data['OWNER_ID']));
$activity
->setId($id)
->setCompleted($data['COMPLETED'] === 'Y')
->setDeadline(
($data['DEADLINE'] && !\CCrmDateTimeHelper::IsMaxDatabaseDate($data['DEADLINE']))
? DateTime::createFromUserTime($data['DEADLINE'])
: null
)
->setPingOffsets(PingOffset::getInstance()->getOffsetsByActivityId($id))
->setIsIncomingChannel($data['IS_INCOMING_CHANNEL'] === 'Y')
->setResponsibleId($data['RESPONSIBLE_ID'])
->setBadgeCode($data['PROVIDER_PARAMS']['badgeCode'] ?? null)
->setRestClientId($data['PROVIDER_PARAMS']['clientId'] ?? null)
->setOriginId($data['ORIGIN_ID'] ?? null)
->setOriginatorId($data['ORIGINATOR_ID'] ?? null)
->setLayoutDto(new LayoutDto($layout))
;
return $activity;
}