• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/timeline/signdocument/controller.php
  • Класс: Bitrix\Crm\Timeline\SignDocument\Controller
  • Вызов: Controller::handleSignEvent
protected function handleSignEvent(
	int $typeCategoryId,
	ItemIdentifier $identifier,
	DocumentData $documentData,
	?MessageData $messageData = null
): array
{
	$documentData->addBinding($identifier);
	$item = $documentData->getItem();
	$authorId = $documentData->getAuthorId();
	if (!$authorId)
	{
		if (!$item)
		{
			$item = $this->getItem($identifier);
		}
		if ($item)
		{
			$authorId = $item->getAssignedById()
				?? $item->getUpdatedBy()
				?? $item->getMovedBy()
				?? $item->getCreatedBy()
			;
		}
	}
	if (!$authorId)
	{
		$authorId = Container::getInstance()->getContext()->getUserId();
	}

	$timelineEntries = [];

	foreach ($this->getCategoryMap()[$typeCategoryId] as $entryType)
	{
		$timelineEntries[] = $this->getTimelineEntryFacade()->create(
			$entryType,
			[
				'ENTITY_TYPE_ID' => $identifier->getEntityTypeId(),
				'ENTITY_ID' => $identifier->getEntityId(),
				'TYPE_CATEGORY_ID' => $typeCategoryId,
				'AUTHOR_ID' => $authorId,
				Presenter\SignDocument::DOCUMENT_DATA_KEY => $documentData,
				Presenter\SignDocument::MESSAGE_DATA_KEY => $messageData,
			],
		);
	}

	if (empty($timelineEntries))
	{
		return [];
	}

	foreach ($documentData->getBindings() as $binding)
	{
		foreach ($timelineEntries as $entry)
		{
			$this->sendPullEventOnAdd($binding, $entry);
		}
	}

	return $timelineEntries;
}