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