• Модуль: 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;
}